Tomcat - 找不到jndi名称

时间:2016-11-07 17:13:01

标签: tomcat jdbc datasource jndi

我正在使用:

Java 1.8.0_112
Tomcat 8.5.6

目标计算机是Linux,但现在我正在运行 Windows 7下的NetBeans 8.2 与过去几年的早期版本一样,它让我花了太长时间才能配置Tomcat,以便Web应用程序可以访问数据库。

在server.xml中我有

<GlobalNamingResources>

嵌套

<Resource>

表达式(Plural)。

<Resource name="jdbc/mySchema"
    username="myschema"
    password="xxxxx"
    auth="Container"
    type="javax.sql.DataSource" 
    driverClassName="oracle.jdbc.OracleDriver"
    url="jdbc:oracle:thin:@123.123.123.123:1522:MYDB"
    initialSize="2"
    maxTotal="20"
    maxIdle="10"
    minIdle="2"
    maxWaitMillis="-1" 
    testWhileIdle="true"
    timeBetweenEvictionRunsMillis="20000"
    validationQuery="select * from dual" />

我确信这部分是正常的,因为使用数据库进行授权的安全领域是/能够访问架构确定。

Web应用程序尝试使用相同的

<Resource>

表达式但反复抛出:

javax.naming.NamingException: Can't find datasource for jndi name=jdbc/mySchema

我所拥有的Web应用程序配置如下:

在文件META-INF / context.xml

<?xml version="1.0" encoding="UTF-8"?>
<Context path="/myWebApp">
  <ResourceLink global="jdbc/mySchema" name="jdbc/mySchema" type="javax.sql.DataSource"/>
</Context>

在WEB-INF / web.xml部分

<web-app>

我有多个resource-ref语句,每个语句都是:

<resource-ref>
    <res-ref-name>jdbc/mySchema</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
    <res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>

Tomcat文档:

https://svn.apache.org/repos/asf/tomcat/site/trunk/docs/tomcat-8.5-doc/config/globalresources.html 让我想知道这些是否

<resource-ref>
需要

表达式,因为它们与

中的内容相同
<GlobalNamingResources>

Tomcat文档的同一页显示:

<res-ref-type>

我有

<res-type>

我已尝试过两种方式,无论哪种方式,我都会遇到同样的异常:

javax.naming.NamingException:无法找到jndi name = jdbc / mySchema的数据源

我过去所有这些东西都运行正常,而且我已经阅读了很多Tomcat文档页面。可悲的是没有描述如何:

<GlobalNamingResources> <Resource> <ResourceLink> <resource-ref>

全部挂在一起以避免&#34;无法找到jndi name&#34;的数据源。

除了初始问题

根据杰夫的建议,我只是查看了多年未曾看过的代码。我不得不羞怯地说,那个例外中的文字是我们的代码。

我需要深入研究

第二个问题 抱歉浪费了你的时间,我使用了错误的jar文件。我不完全理解发生了什么,修复它从GIT中提取代码,重新编译jar文件,一切都很好。

0 个答案:

没有答案