quarta-feira, 4 de dezembro de 2013

Configurando datasource no tomcat

Adicionar o seguinte trecho de código no arquivo context.xml.
Ele pode estar contido em: META-INF/context.xml no projeto;
conf/context.xml dentro do servidor;
e nas configurações de servidores do eclipse

<Resource name="jdbc/teste" auth="Container" type="javax.sql.DataSource"
             maxActive="150" maxIdle="75" maxWait="10000" minIdle="50"
        timeBetweenEvictionRunsMillis="30000" minEvictableIdleTimeMillis="60000"
        removeAbandoned="true" removeAbandonedTimeout="60" logAbandoned="true"
              username="mm" password="123456" driverClassName="oracle.jdbc.OracleDriver"
     url="jdbc:oracle:thin:@mmdigitaltst:1522:xe"/>


Na sua classe para conexão:

import javax.naming.Context;
import javax.naming.InitialContext;
ou utilizar o injectioin: 
import javax.annotation.Resource;
@Resource(name="jdbc/teste")
DataSource ds;
Context initContext;
  try {
   initContext = new InitialContext();
//   NO TOMCAT
//    Context envContext  = (Context)initContext.lookup("java:/comp/env");
//      DataSource ds = (DataSource)envContext.lookup("jdbc/teste");
//   NO JBOSS
   Context envContext  = new InitialContext();
   DataSource ds = (DataSource)envContext.lookup("java:jdbc/teste");
//   
   Connection conn = ds.getConnection();
   Statement stmt = conn.createStatement();
   ResultSet rs = stmt.executeQuery("select * from ami_cliente");
   int x = 0;
   PrintWriter pw = response.getWriter();
   while(rs.next()){
    pw.println(x);
    System.out.println(x);
    x++;
   }
   pw.flush();
   pw.close();
  } catch (NamingException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }catch (SQLException e) {
   // TODO: handle exception
   e.printStackTrace();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 vamos informar ao Hibernate que ele vai usar uma conexão JNDI, para o Hibernate o que importa é o path. Se amanhã você mudar a senha de conexão, vai precisar alterar apenas o arquivo context.xml que está na pasta Server dentro do Eclipse, lembrando que isso é em ambiente de teste. Abaixo, veja como ficou meu arquivo hibernate.cfg.xml:
<hibernate-configuration>
<session-factory name="hibernate/SessionFactory">
<property name="hibernate.connection.datasource">java:/comp/env/jdbc/lpjava</property>
<property name="hibernate.current_session_context_class">thread</property>
<property name="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
<property name="hibernate.jdbc.batch_size">0</property>
<mapping class="br.com.camilolopes.bean.TUsuario"/>
</session-factory>
</hibernate-configuration>
Mais informações: http://tomcat.apache.org/tomcat-6.0-doc/jndi-datasource-examples-howto.html
http://jbossdivers.wordpress.com/2011/08/31/configurando-data-source-no-jboss-as-6-1/
http://www.mastertheboss.com/jboss-datasource/jboss-datasource-configuration

Nenhum comentário:

Postar um comentário