Bom dia pessoal, mais um problema que não estou conseguindo resolver sozinho.
Preciso trocar o modo de conexão de minha página para que a mesma fique mais rápida, estou fazendo no braço no momento e quero passas para que o Tomcat gerencie isto para mim. Porém quando peço para procurar o contexto ele me retorna o contexto certo, mas os dados não são obtidos.
segue abaixo o server.xml
Consegui fazer funcionar, mas acredito que não seja a melhor maneira. Precisei alterar o arquivo context.xml e o server.xml.
os arquivos ficaram assim:
server.xml:
<?xml version="1.0" encoding="UTF-8"?><Server><ListenerclassName="org.apache.catalina.core.AprLifecycleListener"/><ListenerclassName="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/><ListenerclassName="org.apache.catalina.storeconfig.StoreConfigLifecycleListener"/><ListenerclassName="org.apache.catalina.mbeans.ServerLifecycleListener"/><GlobalNamingResources><Environmentname="simpleValue"type="java.lang.Integer"value="30"/><Resourcename="TesteConexao"type="javax.sql.DataSource"auth="Container"maxActive="4"maxIdle="2"username="root"maxWait="5000"driverClassName="com.mysql.jdbc.Driver"password="root"url="jdbc:mysql://localhost:3306/monografia?autoReconnect=true"/><Resourceauth="Container"description="User database that can be updated and saved"name="UserDatabase"type="org.apache.catalina.UserDatabase"factory="org.apache.catalina.users.MemoryUserDatabaseFactory"pathname="conf/tomcat-users.xml"/></GlobalNamingResources><Servicename="Catalina"><Connectorport="9090"redirectPort="8443"minSpareThreads="25"connectionTimeout="20000"maxThreads="150"maxSpareThreads="75"></Connector><Connectorport="8009"redirectPort="8443"connectionTimeout="-1"protocol="AJP/1.3"></Connector><EnginedefaultHost="localhost"name="Catalina"><RealmclassName="org.apache.catalina.realm.UserDatabaseRealm"/><HostappBase="webapps"name="localhost"><Contextpath="/testejsp"></Context></Host></Engine></Service></Server>
context.xml:
<!-- The contents of this file will be loaded for each web application --><Context><!-- Default set of monitored resources --><WatchedResource>WEB-INF/web.xml</WatchedResource><!-- Uncomment this to disable session persistence across Tomcat restarts --><!-- <Manager pathname="" /> --><Resourcename="TesteConexao"type="javax.sql.DataSource"auth="Container"maxActive="4"maxIdle="2"username="root"maxWait="5000"driverClassName="com.mysql.jdbc.Driver"password="root"url="jdbc:mysql://localhost:3306/monografia?autoReconnect=true"/></Context>
Está certo isto? ou existe uma forma mais elegante e que melhore o desenpenho?
Obrigado
G
gilsonpolito
detalhe… o trecho gerado dentro do arquivo server.xml foi criado a partir do administrador (ferramenta) do tomcat.
Obrigado
F
felipeguerra
context.xml?
Qual Tomcat vc está usando?
G
gilsonpolito
a versão do tomcat é 5.5.20
G
gilsonpolito
Esta versão é necessário mesmo fazer o que fiz? ou possui uma outra maneira?
Obrigado
S
sergio.souza
gilsonpolito:
Esta versão é necessário mesmo fazer o que fiz? ou possui uma outra maneira?
Obrigado
Na verdade você fez apenas uma redundância de conexões, pois tanto no server.xml, quanto no context.xml, estão setando o mesmo nome “TesteConexao”.
Você tentou efetuar o procedimento que sugerir anteriormente, sentanto a conexão dentro do seu conext?
Eu tentei sim, mas continuou com o mesmo problema…vou tentar mudar para esta forma novamente.
Outra coisa, convém migrar a aplicação para o tomcat 6 ??
Obrigado pela ajuda!
F
felipeguerra
Tenho CERTEZA que as libs do driver jdbc não estão no diretório common/lib do Tomcat!
S
sergio.souza
gilsonpolito:
Olá sergio,
Eu tentei sim, mas continuou com o mesmo problema…vou tentar mudar para esta forma novamente.
Outra coisa, convém migrar a aplicação para o tomcat 6 ??
Obrigado pela ajuda!
Quando você alterou o server.xml para o exemplo que sugeri, qual foi o erro apresentado??
G
gilsonpolito
olá sérgio,
O que acontece é que os dados de url, usuário, senha por exemplo voltam todos nulos…
F
felipeguerra
Vc viu a minha resposta anterior?
L
laercioleo
Para configurar o JNDI, vc apenas tem que modificar o arquivo META-INF/context.xml (ou acrestar se não existir, no NetBeans já vem esse arquivo) e colocar a informação do JNDI nesse arquivo. Não é necessário acrescentar nada no Tomcat. Estou usando o Tomcat 6. Não sei se funciona se usar o JBoss, mas acho que deve funcionar pois li isso em algum lugar, se alguém testar posta uma mensagem aqui.
Abaixo o código com dois JNDI, um para acessar o Oracle e outro para acessar o MySQL.
:shock: Demorei um tempão para fazer isso funcionar… até descobrir isso … :twisted: …
publicclassConnManager{privatestaticfinalStringDATASOURCE_CONTEXT="jdbc/";privateStringdataSource=null;/** * * @param dataSourceName */publicConnManager(StringdataSourceName){this.dataSource=dataSourceName;}publicConnManager(){}publicConnectiongetConn(){Connectioncn=null;DataSourceds=null;InitialContextic=null;try{ic=newInitialContext();if(ic==null||dataSource==null){System.out.println("Erro ao iniciar contexto.");}else{ds=(DataSource)ic.lookup(DATASOURCE_CONTEXT+dataSource);cn=ds.getConnection();}}catch(NamingExceptione){e.printStackTrace();}catch(SQLExceptione){e.printStackTrace();}finally{returncn;}}}
Alguém pode me ajudar com esse problema por favor?!!
Valeu!
L
lusilva1982
Bem pessoal, acabei resolvendo o problema na classe de conexão, assim:
publicConnectiongetConn(){Connectioncn=null;DataSourceds=null;InitialContextic=null;Contextcxt=null;try{ic=newInitialContext();if(ic==null||dataSource==null){System.out.println("Erro ao iniciar contexto.");}else{cxt=(Context)ic.lookup("java:/comp/env");ds=(DataSource)cxt.lookup(DATASOURCE_CONTEXT+dataSource);cn=ds.getConnection();}}catch(NamingExceptione){e.printStackTrace();}catch(SQLExceptione){e.printStackTrace();}finally{returncn;}}
Valeu!
K
kallas
Olá pessoal!
Peço um pouco de paciência ao insistir nesse tópico, mas, o “gilsonpolito” conseguiu resolver o problema da conexão ficar com os valores nulos? É porque estou com o mesmo problema e ainda não consegui resolver…
Lembrando a exceção:
org.apache.jasper.JasperException:Unabletogetconnection,DataSourceinvalid:"org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'"
Já tentei utilizar um código do mesmo jeito que o “lusilva1982” (pág. 2) postou e, ainda, continua a exceção acima.
Por gentileza, alguém pode dar uma ajuda?
Valeu.
Kallás.
A
andersondamasio
tenta colocar o jar de conexao dentro da lib do tomCat
K
kallas
Olá Anderson!
já fiz isso e, ainda assim, me retorna o erro que comentei.
Como informação extra:
Já coloquei o jar de conexão no common/lib e, também, em WEB-INF/lib (e em todas as variações possíveis);
Fiz o exemplo mostrado no site do tomcat e, colocando o direto no server.xml, dá certo, porém, ao colocar a configuração de contexto no META-INF/context.xml, sempre obtenho a exceção indicada.