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