我將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