我有一个应用程序使用 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)
最佳答案
可能是因为合适的 JDBC 驱动程序不在您的类路径中。驱动程序现在使用 ServiceLoader
(META-INF/services) 机制自动注册自己。所以它只需要在类路径上。 DriverManager.getConnection
扫描已注册的驱动程序以找到与 url 模式匹配的驱动程序(即 oracle、postgres 等)。您的 Tomcat 实例可能在其中一个 lib 目录中有一个 jdbc jar 文件。
关于tomcat - 为什么 JDBC 驱动程序调用在 Tomcat 中有效,但在 JBOSS 中无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12290946/