Java 如何从tomcat webapp中的context.xml文件中获取资源?

Java 如何从tomcat webapp中的context.xml文件中获取资源?,java,tomcat,web-applications,jndi,context.xml,Java,Tomcat,Web Applications,Jndi,Context.xml,这是我的context.xml文件: ... <Resource auth="Container" driverClass="net.sourceforge.jtds.jdbc.Driver" type="com.jolbox.bonecp.BoneCPDataSource" idleMaxAge="240" idleConnectionTestPeriod="60" partitionCo

这是我的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"
/>
...
。。。
...
我已经尝试使用资源的名称(“jdbc/MyDatasource”),但是Tomcat抱怨名称没有以“/”开头。我还尝试了“/jdbc/MyDatasource”,但这次它返回null


我主要需要jdbcUrl来执行与数据库服务器的连接检查(查看服务器是否在线且可运行)。

您应该能够使用以下代码访问数据源:

Context initialContext = new InitialContext();
Context envContext  = (Context)initialContext.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc/MyDatasource");

关键词是:JNDI。
context.xml
中的资源不是“系统资源”,而是JNDI资源。 试试这个:

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();

非常感谢你的帮助:)我第一次好像找错地方了。我在tomcat文档中找到了一个代码示例:在tomcat中,您应该将“java:/comp/env”更改为“java:comp/env”,谢谢您的回答。我不知道如何接受这个答案,因为你们两个都帮了我很大的忙。。。我想我会接受你的回答,因为你鼓励你(因为你是一个新用户)继续为这个社区做出贡献…@igorpov好吧,我有同样的问题,但我只是想从context.xml读取其他参数:比如maxTotal、maxIdle等。我如何才能真正读取这些参数,因为我可以在控制台中打印它们?我也在使用同样的方法。有没有办法从context.xml读取这些参数?@HarshvardhanSolanki,我不知道。但你应该像问自己的问题一样问后续问题。如果现有问题没有回答您的问题,请确保链接到这些问题,这样答案就可以看出您已经尝试自己解决了。@igorpov先生,我曾尝试在config.groovy上使用此代码,但在实例化InitialContext()时遇到问题。我是否缺少一些过程?@mendz请以新问题的形式提出新问题,而不是在其他问题下面的评论中。这样每个和你有同样问题的人都会发现这要容易得多。评论没有被搜索引擎很好地索引。你可以在评论中删除一个指向你新问题的链接,这样一个人就可以从一个找到另一个。