terça-feira, 19 de julho de 2016

Configurar Data Source do Tibero no JBoss 5

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); 
  }
%>

  - Testar no browser:
    http://192.168.100.100:8080/tiberotest/tiberotest.jsp

3) Testar o datasource XA:
  - Criar o arquivo jsp e adidionar o seguinte conteúdo:
    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>

  - Testar no browser:
    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