我在 tomcat 网络容器中部署了三个网络应用程序。
我的 server.xml 文件配置是:
<Service name="app1">
<Connector port="8081" protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="20000"
redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost">
<Host name="localhost" appBase="app1"
unpackWARs="true" autoDeploy="true">
</Host>
</Engine>
</Service>
<Service name="app2">
<Connector port="8082" protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="20000"
redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost">
<Host name="localhost" appBase="app2"
unpackWARs="true" autoDeploy="true">
</Host>
</Engine>
</Service>
<Service name="app3">
<Connector port="8083" protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="20000"
redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost">
<Host name="localhost" appBase="app3"
unpackWARs="true" autoDeploy="true">
</Host>
</Engine>
</Service>
我在 context.xml 文件中添加了这个连接池设置。
<Resource name="test" auth="Container"
type="javax.sql.DataSource" username="root" password="root"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/database"
maxActive="100" maxIdle="30" maxWait="10000"/>
在第一个应用程序“app1”中,数据库连接工作正常,但在第二个应用程序“app2”中,我收到此错误。
javax.naming.NameNotFoundException: Name [comp/env] is not bound in this Context. Unable to find [comp].
我的java代码是:
public static Connection getConnection() {
Context initContext;
DataSource dataSource;
Connection con=null;
try {
initContext = new InitialContext();
Context envContext = (Context) initContext.lookup("java:/comp/env");
dataSource = (DataSource) envContext.lookup("test");
con=dataSource.getConnection();
} catch (NamingException e) {
LOG.error(e);
} catch (SQLException e) {
LOG.error(e);
}
有什么解决办法吗?
最佳答案
我不确定这是否有效,但我将其用作
InitialContext initCtx = new InitialContext();
return (DataSource)initCtx.lookup("java:comp/env/"+jndiDb);
//jndiDB在我的例子中定义为jndi/TestDB//TestDB是数据库的名字
在 context.xml 中,我有
<Resource .... url="jdbc:sqlserver://192.168.101.124:1433; name="jdbc/TestDB" databaseName="TestDB" />
关于java - Tomcat 全局连接池获取错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34457465/