这是我的 context.xml 文件:
... <Resource auth="Container" driverClass="net.sourceforge.jtds.jdbc.Driver" type="com.jolbox.bonecp.BoneCPDataSource" idleMaxAge="240" idleConnectionTestPeriod="60" partitionCount="3" acquireIncrement="1" maxConnectionsPerPartition="10" minConnectionsPerPartition="3" statementsCacheSize="50" releaseHelperThreads="4" name="jdbc/MyDatasource" username="my_username" password="my_password" factory="org.apache.naming.factory.BeanFactory" jdbcUrl="jdbc:jtds:sqlserver://localhost:12345/my_database" /> ...
我已经尝试过将ServletContext.getResource(java.lang.String)与资源的名称(“ jdbc / MyDatasource”)一起使用,但是Tomcat抱怨名称不是以“ /”开头。我也尝试使用“ / jdbc / MyDatasource”,但是这次它返回null。
我主要需要 jdbcUrl 来执行与数据库服务器 的连接检查 (请参阅服务器是否在线且可运行)。
关键字是:JNDI。中的资源context.xml不是“系统资源”,而是JNDI资源。尝试这个:
context.xml
InitialContext ic = new InitialContext(); // that's everything from the context.xml and from the global configuration Context xmlContext = (Context) ic.lookup("java:comp/env"); DataSource myDatasource = (DataSource) xmlContext.lookup("jdbc/MyDatasource"); // now get a connection to see if everything is fine. Connection con = ds.getConnection(); // reaching this point means everything is fine. con.close();