为什么JDBC驱动程序调用在Tomcat中有效,而在JBOSS中无效

时间:2012-09-05 23:03:37

标签: tomcat jdbc jboss connection

我有一个应用程序通过Tomcat使用DriverManager

中的以下方法建立数据库连接
DriverManager.getConnection(url, user,password);

这在Tomcat 中运行良好,完全没有问题。

但是,当我将此相同的应用程序移植到 JBOSS 时,连接始终返回NULL

我有一些要求会阻止我使用DriverManager.getConnection(url)访问JNDI资源来建立JDBC连接;

有谁知道为什么会发生这种情况,或者我怎么能绕过它?

这是我收到的堆栈跟踪.....

java.sql.SQLRecoverableException: IO Error: The Network Adapter could not establish the connection
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:419)
    at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:536)
    at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:228)
    at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
    at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:521)
    at java.sql.DriverManager.getConnection(DriverManager.java:582)
    at java.sql.DriverManager.getConnection(DriverManager.java:185)
    at TestSterlingConnection.getStrelingDBDetails(TestSterlingConnection.java:48)
    at TestSterlingConnection.makeCall(TestSterlingConnection.java:95)
    at TestSterlingConnection.doGet(TestSterlingConnection.java:77)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)

2 个答案:

答案 0 :(得分:0)

可能是因为类路径上没有合适的JDBC驱动程序。驱动程序现在使用ServiceLoader(META-INF / services)机制自动注册。所以它只需要在类路径上。 DriverManager.getConnection扫描注册的驱动程序以找到与url模式匹配的驱动程序(即oracle,postgres,等等)。您的Tomcat实例可能在其中一个lib目录中有一个jdbc jar文件。

答案 1 :(得分:0)

我通过在容器外的此框上执行相同的调用来消除JBOSS。当我这样做时,我得到相同的错误消息,这使我相信这个问题是由某些网络配置引起的。我现在正在升级到负责维护此服务器的管理员。

非常感谢!!我非常感谢你的帮助。