gpt4 book ai didi

javax.naming.NamingException,Tomcat7 和 Struts2 无法通过 JNDI 访问数据库资源

转载 作者:行者123 更新时间:2023-11-28 23:05:42 25 4
gpt4 key购买 nike

我正在使用 Struts2 框架 eclipse 开发新的 Web 应用程序,并且我已经使用 Hibernate 映射了 db 结构。问题是,当我执行“列表”操作时,框架会返回此错误:

    Struts Problem Report    Struts has detected an unhandled exception:    Messages:       This context must be accessed through a java: URL    Unable to lookup JNDI name [java:comp/env/jdbc/main]    File:   org/apache/naming/SelectorContext.java    Line number:    776

The server.xml is:



<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN">
<Listener SSLEngine="on" className="org.apache.catalina.core.AprLifecycleListener"/>
<Listener className="org.apache.catalina.core.JasperListener"/>
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener"/>
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener"/>

<GlobalNamingResources>
<Resource auth="Container" defaultAutoCommit="false" driverClassName="net.sourceforge.jtds.jdbc.Driver" maxActive="200" maxIdle="100" maxWait="20000" name="jdbc/main" password="########" type="javax.sql.DataSource" url="jdbc:jtds:sqlserver://10.4.1.85/SBAGRU_DEV" username="****"/>

</GlobalNamingResources>
<Service name="Catalina">
<Connector connectionTimeout="2000" executor="tomcatThreadPool" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>

<Connector SSLEnabled="true" clientAuth="false" keystoreFile="C:\jpeople.bin" keystorePass="gesbanke" keystoreType="PKCS12" maxThreads="200" port="8443" protocol="HTTP/1.1" scheme="https" secure="true" sslProtocol="SSL"/>

<!--<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/> -->
<Engine defaultHost="localhost" name="Catalina">
<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true" xmlNamespaceAware="false" xmlValidation="false">
<Context docBase="mag0" path="/mag0" reloadable="true" source="org.eclipse.jst.jee.server:mag0">
<ResourceLink global="jdbc/main" name="jdbc/main" type="javax.sql.DataSource" />
</Context>
</Host>
</Engine>
</Service>
</Server>

我也 hibernate.cfg.xml


<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN">
<Listener SSLEngine="on" className="org.apache.catalina.core.AprLifecycleListener"/>
<Listener className="org.apache.catalina.core.JasperListener"/>
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener"/>
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener"/>

<GlobalNamingResources>
<Resource auth="Container" defaultAutoCommit="false" driverClassName="net.sourceforge.jtds.jdbc.Driver" maxActive="200" maxIdle="100" maxWait="20000" name="jdbc/main" password="########" type="javax.sql.DataSource" url="jdbc:jtds:sqlserver://10.4.1.85/SBAGRU_DEV" username="****"/>

</GlobalNamingResources>
<Service name="Catalina">
<Connector connectionTimeout="2000" executor="tomcatThreadPool" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>

<Connector SSLEnabled="true" clientAuth="false" keystoreFile="C:\jpeople.bin" keystorePass="******" keystoreType="PKCS12" maxThreads="200" port="8443" protocol="HTTP/1.1" scheme="https" secure="true" sslProtocol="SSL"/>

<!--<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/> -->
<Engine defaultHost="localhost" name="Catalina">
<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true" xmlNamespaceAware="false" xmlValidation="false">
<Context docBase="mag0" path="/mag0" reloadable="true" source="org.eclipse.jst.jee.server:mag0">
<ResourceLink global="jdbc/main" name="jdbc/main" type="javax.sql.DataSource" />
</Context>
</Host>
</Engine>
</Service>
</Server>

有什么建议可以在哪里看吗?我真的要疯了!

最佳答案

我找到了 解决方案 ,以及 真正的问题 .我在Eclipse中编辑server.xml,并没有看到真正的发布结果。出于奇怪的原因,eclipse 删除了真实 server.xml 中的资源链接,但在 eclipse View 中显示了链接。所以我谷歌搜索了一整天,我发现我必须在 WEB-INF 目录下的 context.xml 文件中添加:

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

关于javax.naming.NamingException,Tomcat7 和 Struts2 无法通过 JNDI 访问数据库资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9905364/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com