我将postgres jdbc驱动程序配置为Wildfly 10中的模块。我所要做的是将该驱动程序用作将在服务器上部署的应用程序中的依赖项 - 因此,在应用程序中,我标记这个依赖性(在pom.xml文件中),但它似乎不工作。Wildfly Postgres JDBC模块问题
当前配置:
Wildfly postgres的模块在wildfly-10.1.0.Final\modules\org\postgresql\main
加入其中存在:postgresql-9.4-1206-jdbc4.jar
和module.xml
与以下内容:
<module xmlns="urn:jboss:module:1.1" name="org.postgresql">
<resources>
<resource-root path="postgresql-9.4-1206-jdbc4.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>
模块用于定义数据源。到此为止,一切工作都很顺利--Hibernate帮助表可以愉快地映射到实体。除了一两件事:
我开始地图使用javax.persistence.AttributeConverter
Postgres的-jsonb列,发生以下情况:
方案1
当我使用postgresql-9.4-1206-jdbc4.jar
为provided
(在pom.xml中 - 部署的应用程序) ,我获得以下错误尝试的东西转换:
Caused by: java.lang.ClassNotFoundException: org.postgresql.util.PGobject from [Module "deployment.priject-1.0.1.ear.project.data-1.0.1-SNAPSHOT.jar:main" from Service Module Loader]
at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:198)
at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:363)
at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:351)
at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:93)
... 269 more
方案2
当我使用postgresql-9.4-1206-jdbc4.jar
默认范围,有以下错误:
Caused by: java.lang.ClassCastException: org.postgresql.util.PGobject cannot be cast to org.postgresql.util.PGobject
at com.project.entity.util.converters.JSONBTypeConverter.convertToEntityAttribute(JSONBTypeConverter.java:33)
at com.project.entity.util.converters.JSONBTypeConverter.convertToEntityAttribute(JSONBTypeConverter.java:1)
at org.hibernate.type.descriptor.converter.AttributeConverterSqlTypeDescriptorAdapter$2.doConversion(AttributeConverterSqlTypeDescriptorAdapter.java:140)
... 266 more
这意味着:类加载器加载相同的罐子两次,这个对象不能投给自己。
问题:为什么provided
依赖范围不适用于手动添加(wildfly)postgres驱动程序? (我想这将是我的解决方案)
请问您可以粘贴您的'pom.xml'编辑您的答案吗?我完全按照原样卡住了,但对选定答案的第二个建议并未解决我的问题。恐怕我做的和你做的有些不同。在此先感谢 – GabrielRado