javax.naming.namenotfoundexception:在此上下文中,名称[JDBC/MYDB]不绑定



我知道这个问题已经好几次。我在这里和这里找到了一些链接,以此作为我发现的示例。但是我尝试了他们的解决方案,但我的问题尚未解决...

所以我复制了自己的内容:

  • Eclipse中的J2EE项目。我构建了一个新的.war以在应用程序服务器中安装
  • 我在Eclipse中创建了一个Tomcat 7 Server,并将我的.war添加到本地部署它

在我的项目中,我有一个.war项目和Servers项目,当您在Eclipse中创建新服务器时会自动创建。

我尝试连接到本地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" />

首先,我尝试在这样的应用程序中创建它:

  1. 在我的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>

  2. 我创建了一个自定义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;" />

第一次尝试不起作用。所以我去了服务器端,并添加了以下内容:

  1. 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;" />

  1. server.xml中,我在Context中添加了相同的ResourceLink

第二次尝试也失败了。

那么,问题是什么?我该如何解决?

您的第一种方法失败了,因为您必须为数据源提供工厂类,以便tomcat知道如何创建连接,使用什么驱动程序等。

第二个因未正确使用 resourcelink 元素而失败。

如Tomcat的文档中所述:

此元素用于创建指向全局JNDI资源的链接。

相反,您应该在 META-INF/CONTEST.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文件夹 - 您必须将其包含在/webapp 文件夹中,软件包。

现在,您可以通过使用以下名称通过 jndi 来参考数据源:

" java:comp/env/jdbc/mydb"

最新更新