Neste exemplo é demonstrado um passo-a-passo de como configurar o JBoss para acessar o RDBMS Tibero para acesso XA (Transação distribuída, 2Phase Commit...) e NON-XA. Para este exemplo, usamos o JBoss AS 5.1.0 GA, CentOS Linux kernel 2.6.9-89.ELsmp, e Tibero 5 FS2.
1) Configurar os Data Sources NON-XA e XA:
- Copiar "Tibero JDBC driver" para "lib" directory:
cp $TIBERO_HOME/tibero5/client/lib/jar/tibero5-jdbc.jar $JBOSS_HOME/server/default/lib
- Criar o xml de configuração e adicionar o seguinte conteúdo:
vi $JBOSS_HOME/server/default/deploy/tibero-ds.xml
<?xml version="1.0" encoding="UTF-8"?>
<datasources>
<local-tx-datasource>
<jndi-name>dsTibero</jndi-name>
<connection-url>jdbc:tibero:thin:@192.168.100.100:58629:tibero</connection-url>
<driver-class>com.tmax.tibero.jdbc.TbDriver</driver-class>
<user-name>sys</user-name>
<password>tibero</password>
</local-tx-datasource>
<xa-datasource>
<jndi-name>xadsTibero</jndi-name>
<xa-datasource-class>com.tmax.tibero.jdbc.ext.TbXADataSource</xa-datasource-class>
<xa-datasource-property name="PortNumber">58629</xa-datasource-property>
<xa-datasource-property name="DatabaseName">tibero</xa-datasource-property>
<xa-datasource-property name="ServerName">192.168.100.100</xa-datasource-property>
<user-name>sys</user-name>
<password>tibero</password>
</xa-datasource>
</datasources>
- Iniciar o Tibero:
tbboot
- Iniciar o JBoss:
run.sh -b 192.168.100.100
2) Testar o datasource NON-XA:
- Criar o arquivo jsp e adidionar o seguinte conteúdo:
mkdir $JBOSS_HOME/server/default/deploy/tiberotest.war
cd $JBOSS_HOME/server/default/deploy/tiberotest.war
vi $JBOSS_HOME/server/default/deploy/tiberotest.war/tiberotest.jsp
<%@page contentType="text/html" import="java.util.*,javax.naming.*,javax.sql.DataSource,java.sql.*"%>
<%
DataSource ds = null;
Connection con = null;
PreparedStatement pr = null;
InitialContext ic;
try
{
ic = new InitialContext();
ds = (DataSource)ic.lookup( "java:/dsTibero" );
con = ds.getConnection();
pr = con.prepareStatement("SELECT USER_ID, USERNAME FROM DBA_USERS");
ResultSet rs = pr.executeQuery();
while (rs.next())
{
out.println("<br> " +rs.getString("USER_ID") + " | " +rs.getString("USERNAME"));
}
rs.close();
pr.close();
con.close();
}
catch(Exception e)
{
out.println("Exception thrown " +e);
}
%>
http://192.168.100.100:8080/tiberotest/tiberotest.jsp
3) Testar o datasource XA:
- Criar o arquivo jsp e adidionar o seguinte conteúdo:
- Testar no browser:
http://192.168.100.100:8080/tiberotestxa/tiberotestxa.jsp
mkdir $JBOSS_HOME/server/default/deploy/tiberotestxa.war
cd $JBOSS_HOME/server/default/deploy/tiberotestxa.war
vi $JBOSS_HOME/server/default/deploy/tiberotestxa.war/tiberotestxa.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ page import="javax.naming.*"%>
<%@ page import="javax.sql.*"%>
<%@ page import="java.sql.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<%
String sql = "SELECT * FROM ALL_USERS";
out.println("Tibero XA data source test using the script below:");
out.write ("<br>");
out.println(sql);
out.write ("<br>");
out.write ("<br>");
Context ctx = null;
DataSource ds = null;
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
ResultSetMetaData md = null;
try
{
StringBuffer query = new StringBuffer();
ctx = new InitialContext();
ds = (DataSource) ctx.lookup("java:/xadsTibero");
con = ds.getConnection();
stmt = con.createStatement();
query.append(sql);
rs = stmt.executeQuery(query.toString());
md = rs.getMetaData();
out.write("<table border=\"1\" style=\"width:100%\">");
out.write("<tr>");
for (int h = 1 ; h <= md.getColumnCount() ; h++)
{
out.write ("<th>");
out.println(md.getColumnName(h));
out.write ("</th>");
}
out.write ("</tr>");
while (rs.next())
{
out.write ("<tr>");
for (int r = 1 ; r <= md.getColumnCount() ; r++)
{
out.write ("<td>");
out.println(rs.getString(r));
out.write ("</td>");
}
out.write ("</tr>");
}
out.write("</table>");
stmt.close();
con.close();
}
catch (Exception e)
{
out.println(e);
}
%>
</body>
</html>
http://192.168.100.100:8080/tiberotestxa/tiberotestxa.jsp
NOTA:
Os valores em "Azul" devem ser idênticos.
Altere os valores em "Verde" de acordo com as configurações do seu ambiente.
Nenhum comentário:
Postar um comentário