我的应用程序在移动到tomcat7时遇到问题。当我的应用程序尝试连接到“Oracle 11.2 DB”时,我看到了以下问题。
org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (ORA-12541: TNS:no listener
)
at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:82)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:382)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:458)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:466)
server.xml和context.xml中的连接详细信息如下所示。
ResourceLink global =“jdbc / ctb”name =“jdbc / ctb”type =“oracle.jdbc.pool.OracleDataSource”/>
server.xml中
<Resource name="jdbc/XXXX"
auth="Container"
scope="Shareable"
type="javax.sql.DataSource"
driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:oci8:@database"
username="username" password="pwd"
maxActive="30" maxIdle="3"
removeAbandoned="true" removeAbandonedTimeout="60"
testOnBorrow="true"
validationQuery="select 1 from dual"
logAbandoned="true" />
我看到的一个观察结果如下:
tomcat7在“lib”文件夹中带有一个名为“tomcat-jdbc.jar”的默认jdbc驱动程序。但是在我的应用程序中,我们使用了很长时间的spring-jdbc.jar。
试图删除它们中的每一个以确保类中没有任何冲突,但它从来没有帮助过我。
tomcat6可以使用相同的“context.xml”和“server.xml”以及spring-jdbc.jar。
您的帮助将受到高度赞赏,因为这已成为我们tomcat7迁移的阻止程序。如果您需要任何进一步的细节,请告诉我。
== Benki
答案 0 :(得分:0)
创建的setenv.sh脚本从未在上面的错误中创建了为其设置的“ORACLE_HOME”路径。另外,因为我使用init脚本启动并停止tomcat,它只加载了必需的基本ENV变量并由setenv.sh脚本设置。
现在一切正常。