对于JBoss/Wildfly上部署的应用程序,允许使用不同jdbc驱动程序的正确方法是什么?
我的设置如下:对于JBoss/Wildfly上部署的应用程序,允许使用不同jdbc驱动程序的正确方法是什么?,jdbc,jboss,wildfly,keycloak,Jdbc,Jboss,Wildfly,Keycloak,我的设置如下: 我得到了一个应用程序,我在/standalone/deployments /standalone/deployments中我的部署的jboss deployment structure.xml如下所示: [...] 完全删除jboss部署结构.xml(因为如果没有类加载问题,就不能使用它),这是行不通的。我在驱动程序旁边使用了更多的依赖项(keydeport),但当时找不到 我的模块org/postgresql/main中的module.xml如下所示(如中所述)
- 我得到了一个应用程序,我在
/standalone/deployments
中我的部署的/standalone/deployments
如下所示:jboss deployment structure.xml
[...]
- 完全删除
(因为如果没有类加载问题,就不能使用它),这是行不通的。我在驱动程序旁边使用了更多的依赖项(keydeport),但当时找不到jboss部署结构.xml
- 我的模块
中的org/postgresql/main
如下所示(如中所述)module.xml
- 我的要求是,允许不同类型的jdbc驱动程序,例如postgres、oracle、mssql
第一个选项: 我可以将我的
jboss部署结构.xml
更改为
[...]
[...]
(添加了可选参数)
然后我必须明确地允许所有驱动程序。似乎不是最好的办法
这个想法来自标准
第二选项: 我将模块路径更改为
driver/jdbc/main
(而不是org/postgres/main
),并将module.xml
更改为
[...]
(已更改模块名称)
然后使用我的jboss部署结构.xml
中的模块引用
[...]
[...]
现在我强迫我的客户按照我的建议命名驱动程序模块。他们不能像每个标准文档中提到的那样命名模块
这个想法来源于此
我是在一个KeyClope安装的环境中完成这项工作的,它有一个自我实现的用户联合来访问一个单独的(遗留的)用户数据库。因此,删除
jboss部署结构.xml
不是上面提到的选项
实现灵活使用jdbc驱动程序的目标的正确方法是什么?
编辑:已提到,正在删除
jboss部署结构。xml
不起作用。我建议您将所有数据库驱动程序作为模块单独安装。单个模块将帮助您在将来轻松跟踪和升级驱动程序JAR
只要应用程序没有任何类加载问题,就不需要在jboss deployment structure.xml
文件中提到这些驱动程序。它们是静态模块,将在服务器启动时加载
此外,安装驱动程序模块后,必须在standalone.xml文件中添加条目。例如,如果我安装了Oracle驱动程序
<driver name="oracle" module="com.oracle">
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
</driver>
oracle.jdbc.driver.OracleDriver
在标签内。
在标记中添加数据源定义(Examples旁边):
jdbc:oracle:thin:@[HOST_NAME]:1521:[SID]
oracle[必须与驱动程序名称匹配]
1.
5.
真的
[用户]
[PWD]
我建议您将所有数据库驱动程序作为模块单独安装。单个模块将帮助您在将来轻松跟踪和升级驱动程序JAR
只要应用程序没有任何类加载问题,就不需要在jboss deployment structure.xml
文件中提到这些驱动程序。它们是静态模块,将在服务器启动时加载
此外,安装驱动程序模块后,必须在standalone.xml文件中添加条目。例如,如果我安装了Oracle驱动程序
<driver name="oracle" module="com.oracle">
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
</driver>
oracle.jdbc.driver.OracleDriver
在标签内。
在标记中添加数据源定义(Examples旁边):
jdbc:oracle:thin:@[HOST_NAME]:1521:[SID]
oracle[必须与驱动程序名称匹配]
1.
5.
真的
[用户]
[PWD]
我不希望在一个系统上安装所有驱动程序,但希望在每个客户系统上安装不同的驱动程序。如果我没有提到jboss部署结构中的驱动程序,我会得到一个错误,即“找不到合适的驱动程序”。或者,您的方法是完全删除jboss部署结构吗?使用standalone.xml的部分已经理解并完成了。我想说的是,如果没有任何类加载问题,就不要使用jboss部署结构.xml
。Wildfly将从standalone.xml文件加载配置,您在该文件中提到了driver
标记下的模块详细信息。要删除jboss部署结构,xml
完全不起作用。除了驱动程序之外,我还使用了更多的依赖项,这在当时是找不到的。错误:java.lang.NoClassDefFoundError:[…]org/keydepot/protocol/oidc/mappers/OIDCAccessTokenMapper。
仅删除我也获得的驱动程序后:java.sql.SQLException:未找到适合jdbc的驱动程序:postgresql://myUrl
。因此,对我来说,我似乎不能删除jboss deployment structure.xml
或文件中的驱动程序。我不想在一个系统上安装所有驱动程序,而是在每个客户系统上安装不同的驱动程序。如果我没有提到jboss部署结构中的驱动程序,我会得到一个错误,即“找不到合适的驱动程序”。或者,您的方法是完全删除jboss部署结构吗?使用standalone.xml的部分已经理解并完成了。我想说的是,如果没有任何类加载问题,就不要使用jboss部署结构.xml
。Wildfly将从standalone.xml文件加载配置,您在该文件中提到了driver
标记下的模块详细信息。要删除jboss部署结构,xml
完全不起作用。除了驱动程序之外,我还使用了更多的依赖项,这在当时是找不到的