Estou usando a versão 5.x, porém ja li um arquivo e mudei o seguinte no server.xml:
Antes:
<ResourceParamsname="jdbc/TestDB"><parameter><name>factory</name><value>org.apache.commons.dbcp.BasicDataSourceFactory</value></parameter><!-- Maximum number of dB connections in pool. Make sure you configure your mysqld max_connections large enough to handle all of your db connections. Set to 0 for no limit. --><parameter><name>maxActive</name><value>100</value></parameter><!-- Maximum number of idle dB connections to retain in pool. Set to 0 for no limit. --><parameter><name>maxIdle</name><value>30</value></parameter><!-- Maximum time to wait for a dB connection to become available in ms, in this example 10 seconds. An Exception is thrown if this timeout is exceeded. Set to -1 to wait indefinitely. --><parameter><name>maxWait</name><value>10000</value></parameter><!-- MySQL dB username and password for dB connections --><parameter><name>username</name><value>javauser</value></parameter><parameter><name>password</name><value>javadude</value></parameter><!-- Class name for mm.mysql JDBC driver --><parameter><name>driverClassName</name><value>org.gjt.mm.mysql.Driver</value></parameter><!-- The JDBC connection url for connecting to your MySQL dB. The autoReconnect=true argument to the url makes sure that the mm.mysql JDBC Driver will automatically reconnect if mysqld closed the connection. mysqld by default closes idle connections after 8 hours. --><parameter><name>url</name><value>jdbc:mysql://localhost:3306/javatest?autoReconnect=true</value></parameter></ResourceParams>
Não é recomendavel criar isso no server.xml e sim dentro do seu contexto.
C
ChristielenPJ
Coloquei apenas no contexto e não funcionou…
J
jaireltonPJ
Você deve ter colocado algo errado, você pode criar um arquivo context.xml na pasta META-INF da sua aplicação, ou criar um arquivo NOME_DO_CONTEXTO.xml na pasta catalina_home/conf/Catalina/localhost
C
ChristielenPJ
Coloquei dentro do META-INF da minha aplicação
<!-- The contents of this file will be loaded for each web application --><Context><!-- Default set of monitored resources --><WatchedResource>WEB-INF/web.xml</WatchedResource><Resourcename="jdbc/TestDB"auth="Container"type="javax.sql.DataSource"maxActive="100"maxIdle="30"maxWait="10000"username="root"password="root"driverClassName="com.mysql.jdbc.Driver"url="jdbc:mysql://localhost:3306/javatest?autoReconnect=true"/>-->
</Context>
Caso você não consiga fazer o lookup de jdbc/TestDB tente java:comp/env/jdbc/TestDB (não mude no context.xml, só no código)
C
ChristielenPJ
Há algo errado na minha classe lookup???
packagefoo;importjava.sql.Connection;importjava.sql.ResultSet;importjava.sql.Statement;importjavax.naming.InitialContext;importjavax.sql.DataSource;publicclassDBTest{Stringfoo="Not Connected";intbar=-1;publicvoidinit(){try{InitialContextinitCtx=newInitialContext();if(initCtx==null)thrownewException("Boom - No Context");DataSourceds=(DataSource)initCtx.lookup("java:comp/env/jdbc/TestDB");if(ds!=null){Connectionconn=ds.getConnection();if(conn!=null){foo="Got Connection "+conn.toString();Statementstmt=conn.createStatement();ResultSetrst=stmt.executeQuery("select id, foo, bar from testdata");if(rst.next()){foo=rst.getString(2);bar=rst.getInt(3);}conn.close();}}}catch(Exceptione){e.printStackTrace();}}publicStringgetFoo(){returnfoo;}publicintgetBar(){returnbar;}}