gpt4 book ai didi

javax.naming.NameNotFoundException : Name [comp/env] is not bound in this Context. 无法在 Tomcat 中找到 [comp]

转载 作者:太空宇宙 更新时间:2023-11-04 07:42:50 30 4
gpt4 key购买 nike

我已将代码部署在 Windows 环境的本地计算机上的 Tomcat 6.0.32 中。同样的WAR文件部署在Linux环境下远程机器的Tomcat 7.0.39中。

context.xml的代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" path="/CentralizedPush">
<Resource auth="Container" driverClassName="org.postgresql.Driver" maxActive="20" maxIdle="10" maxWait="-1" name="jdbc/postgres" password="commonpush12#" type="javax.sql.DataSource" url="jdbc:postgresql://10.40.5.59:5444/commonpush_database" username="commonpush"/>
</Context>

DBConnection.java的代码如下:

import java.sql.Connection;
import java.sql.Driver;
import java.sql.SQLException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
import org.slf4j.LoggerFactory;


public class DBConnection {
private static Connection con = null;

/**function is used for creating connection
* @return Connection object
*/
public static Connection getConnection() {
org.slf4j.Logger LOG = LoggerFactory.getLogger("Error");

try {
Driver d = (Driver) Class.forName(Constant.CLASS_NAME).newInstance();
Context initContext = new InitialContext();
Context envContext = (Context) initContext.lookup("java:comp/env");
DataSource ds = (DataSource) envContext.lookup("jdbc/postgres");

con = ds.getConnection();

} catch (ClassNotFoundException ex) {
ex.printStackTrace();
LOG.error("ClassNotFoundException" );
} catch (InstantiationException ex) {
ex.printStackTrace();
LOG.error("InstantiationException" );
} catch (IllegalAccessException ex) {
ex.printStackTrace();
LOG.error("IllegalAccessException" );
} catch (NamingException ex) {
ex.printStackTrace();
LOG.error("NamingException" );
} catch (SQLException ex) {
ex.printStackTrace();
LOG.error("SQLException in db connection" );
}

return con;
}

我在 postgres 中有一个数据库,我正在尝试访问其详细信息如下:

Name: CDCUCOMPUDB
Host: 10.40.5.59
Port: 5444
database name: commonpush_database

问题是当我在本地计算机上部署代码时一切正常,但是当我在 Linux 环境中且具有不同 Tomcat 版本的远程服务器上部署代码时,出现以下错误:

javax.naming.NameNotFoundException: Name [comp/env] is not bound in this Context. Unable to find [comp].

请提出任何解决方案。

最佳答案

在“java:comp/env/jdbc/postgres”的单个查找中执行此操作。没有理由在这里使用两个上下文。

关于javax.naming.NameNotFoundException : Name [comp/env] is not bound in this Context. 无法在 Tomcat 中找到 [comp],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15790307/

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