Jakarta ee apache tomcat 7.0.30数据源ALM javax.naming.NameNotFoundException:Name[jdbc/proto]在此上下文中未绑定。找不到[jdbc]

Jakarta ee apache tomcat 7.0.30数据源ALM javax.naming.NameNotFoundException:Name[jdbc/proto]在此上下文中未绑定。找不到[jdbc],jakarta-ee,jndi,tomcat7,osx-mountain-lion,mysql5,Jakarta Ee,Jndi,Tomcat7,Osx Mountain Lion,Mysql5,让我先描述一下环境: 环境: -mac os x(java build 1.6.0_35-b10-428-11M3811) -ApacheTomcat 7.0.30 -mysql 5.5.27 -tomcat/lib-->mysql-connector-java-5.1.22-bin.jar 我已经成功实现了JDBCRealm,并希望切换到DataSourceALM,因为建议将其用于生产环境。我使用基于表单的身份验证 我做了这里描述的一切: 在这里: server.xml <Realm

让我先描述一下环境:

环境: -mac os x(java build 1.6.0_35-b10-428-11M3811) -ApacheTomcat 7.0.30 -mysql 5.5.27 -tomcat/lib-->mysql-connector-java-5.1.22-bin.jar

我已经成功实现了JDBCRealm,并希望切换到DataSourceALM,因为建议将其用于生产环境。我使用基于表单的身份验证

我做了这里描述的一切: 在这里:

server.xml

<Realm className="org.apache.catalina.realm.LockOutRealm">
     <Realm className="org.apache.catalina.realm.DataSourceRealm" 
            dataSourceName="jdbc/proto" digest="SHA-256" roleNameCol="role" 
            userCredCol="password" userNameCol="name" userRoleTable="roles" 
            userTable="users"/>
</Realm>
<Resource auth="Container" 
          driverClassName="com.mysql.jdbc.Driver" 
          maxActive="100" maxIdle="30" maxWait="10000" 
          name="jdbc/proto" password="proto" type="javax.sql.DataSource" 
          url="jdbc:mysql://localhost:3306/proto" username="proto"/>
<resource-ref>
    <description>DB Connection</description>
    <res-ref-name>jdbc/proto</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
</resource-ref>
我还没有尝试在不同的操作系统上设置环境来测试它是否是mac特有的问题


有什么我错过的建议吗?我感谢你的帮助!谢谢。

在我的例子中,问题是我的pom.xml中有一个冲突的依赖项。在我的例子中,这是
java命名
依赖关系。 确保您没有任何与Tomcat的命名库冲突的命名依赖项/JAR


在我删除它之后,问题就消失了(顺便说一句,与您的环境相同)。

在本例中,我认为这是因为您的领域(在本例中是在服务器级别声明的)正在尝试使用命名资源jdbc/proto(在本例中是在web应用程序级别声明的)

我所理解的是java服务器上下文层次结构

  • 服务器
  • 主人
  • WebApplication上下文(可以在server.xml或META-INF Context.xml中)

  • 为了避免在GlobalNamingResources中声明ressource,请将localDataSource=“true”放在域中

    实际上,ProjectName.xml中提到了这个
    [jdbc/proto]
    属性,如

    <ResourceLink global="jdbc/proto" name="jdbc/proto"/>
    

    从后面还原文件并完成。。。现在工作正常,希望这能帮助别人。

    当我将条目从context.xml移到server.xml时,它可以工作--->但我真的需要它吗?
    ProjectName.xml
    中需要什么?
    <ResourceLink global="jdbc/proto" name="jdbc/proto"/>
    
    tomcatInstances/ServerName/conf/Catalina/localhost/ProjectName.xml