我正在使用:
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文件,一切都很好。