如何为声明为提供的库的应用程序配置 JBoss?
How to configure JBoss for applications with libraries declared as provided?
我有一个 Java Web 应用程序,它使用 OracleConnection
JDBC class 来执行一些 PL/SQL 命令。由于在我们的生产环境中,Oracle 驱动程序库由其他应用程序共享,我需要使用 provided
Maven 依赖范围声明它:
<dependency>
<groupId>com.oracle</groupId>
<artifactId>oracle</artifactId>
<version>11.2.0.4</version>
<scope>provided</scope>
</dependency>
我应该如何配置我的本地 JBoss EAP 6.2 以使该库可用于我的应用程序?我已尝试使用 jboss-cli
将其配置为核心模块,如
中所述
Install a JDBC Driver as a Core Module。
这是我执行的最后一条命令:
/subsystem=datasources/jdbc-driver=oracle:
add(driver-name=oracle,
driver-module-name=oracle.jdbc,
driver-xa-datasource-class-name=oracle.jdbc.xa.client.OracleXADataSource)
命令输出:
{"outcome" => "success"}
但是,在启动时,我们的应用程序会尝试通过 DriverManager 建立连接:
OracleConnection conn = (OracleConnection) DriverManager.getConnection(url, username, password);
这行代码引发了以下异常:
java.sql.SQLException: No suitable driver found for jdbc:oracle:thin:@10.50.240.70:1521:doc21a
另一方面,如果我将范围更改为 compile
,那么 Oracle 库将与我的应用程序一起部署(在 META-INF/lib 文件夹中)并且一切正常。
我该如何解决这个问题?核心模块是否适合这个?
是否有另一种使用 JBoss 与多个应用程序共享库的方法?
我明白了!由于我正在使用 DriverManager
获取供应商特定 Connection
实施的实例,因此需要按照 JBoss 文档的以下部分所述进行操作:
Access Vendor Specific Classes
现在可以使用了!
我有一个 Java Web 应用程序,它使用 OracleConnection
JDBC class 来执行一些 PL/SQL 命令。由于在我们的生产环境中,Oracle 驱动程序库由其他应用程序共享,我需要使用 provided
Maven 依赖范围声明它:
<dependency>
<groupId>com.oracle</groupId>
<artifactId>oracle</artifactId>
<version>11.2.0.4</version>
<scope>provided</scope>
</dependency>
我应该如何配置我的本地 JBoss EAP 6.2 以使该库可用于我的应用程序?我已尝试使用 jboss-cli
将其配置为核心模块,如
Install a JDBC Driver as a Core Module。
这是我执行的最后一条命令:
/subsystem=datasources/jdbc-driver=oracle:
add(driver-name=oracle,
driver-module-name=oracle.jdbc,
driver-xa-datasource-class-name=oracle.jdbc.xa.client.OracleXADataSource)
命令输出:
{"outcome" => "success"}
但是,在启动时,我们的应用程序会尝试通过 DriverManager 建立连接:
OracleConnection conn = (OracleConnection) DriverManager.getConnection(url, username, password);
这行代码引发了以下异常:
java.sql.SQLException: No suitable driver found for jdbc:oracle:thin:@10.50.240.70:1521:doc21a
另一方面,如果我将范围更改为 compile
,那么 Oracle 库将与我的应用程序一起部署(在 META-INF/lib 文件夹中)并且一切正常。
我该如何解决这个问题?核心模块是否适合这个?
是否有另一种使用 JBoss 与多个应用程序共享库的方法?
我明白了!由于我正在使用 DriverManager
获取供应商特定 Connection
实施的实例,因此需要按照 JBoss 文档的以下部分所述进行操作:
Access Vendor Specific Classes
现在可以使用了!