我知道这个问题已被问过好几次了。我找到了一些链接here和here作为我发现的一个例子。但我尝试他们的解决方案,我的问题还没有解决......
所以我复制了我的内容:
Tomcat 7 Server
并将我的.war添加到其中以在本地部署它在我的项目中,我有一个.war
项目和在Eclipse中创建新服务器时自动创建的Servers
项目。
我尝试连接到本地as400 db
但是当我这样做时,我发现了这个错误:
Error com.myprojectpackage.xxx: Name XXX is not bound in this Context
我尝试在我附加的一个链接中添加ResourceLink
:
<ResourceLink name="jdbc/mydb"
global="jdbc/mydb"
type="javax.sql.DataSource" />
首先,我尝试在我的应用程序中创建它:
在我的web.xml
<resource-ref>
<description>Datasource for my db</description>
<res-ref-name>jdbc/mydb</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
我创建了一个自定义context.xml
文件并添加了
<ResourceLink name="jdbc/mydb"
global="jdbc/mydb"
type="javax.sql.DataSource" maxActive="50" maxIdle="30" maxWait="10000"
username="myuser" password="mypass" auth="Container"
driverClassName="com.ibm.as400.access.AS400JDBCDriver" url="jdbc:as400://192.168.1.1;naming=system;errors=full;" />
这第一次尝试不起作用。所以我去了服务器端,并添加了以下内容:
context.xml
档案中: <ResourceLink name="jdbc/mydb"
global="jdbc/mydb"
type="javax.sql.DataSource" maxActive="50" maxIdle="30" maxWait="10000"
username="myuser" password="mypass" auth="Container"
driverClassName="com.ibm.as400.access.AS400JDBCDriver" url="jdbc:as400://192.168.1.1;naming=system;errors=full;" />
server.xml
我在ResourceLink
Context
醇>
第二次尝试也失败了。
那么,问题是什么?我该如何解决这个问题?
答案 0 :(得分:3)
您的第一个方法失败了,因为您必须为您的DataSource提供工厂类,以便Tomcat知道如何创建连接,使用什么驱动程序等等。
第二个失败是因为没有正确使用 ResourceLink 元素。
如Tomcat的文档中所述:
此元素用于创建指向全局JNDI资源的链接。
相反,您应该在 META-INF / context.xml 文件中创建以下声明:
<Context>
<Resource name="jdbc/mydb"
global="jdbc/mydb"
type="javax.sql.DataSource" maxActive="50" maxIdle="30"
maxWait="10000"
username="myuser" password="mypass" auth="Container"
driverClassName="com.ibm.as400.access.AS400JDBCDriver"
url="jdbc:as400://192.168.1.1;naming=system;errors=full;"/>
</Context>
然后确保META-INF文件夹位于正确的位置 - 您必须将其包含在 .war 的 / webapp 文件夹中封装
现在,您可以使用以下名称通过 JNDI 引用您的DataSource:
<强>&#34;的java:comp / env的/ JDBC / mydb的&#34; 强>