Wildfly 10类加载器地狱(hibernate没有看到Postgres驱动程序作为模块安装)

时间:2017-09-27 10:54:39

标签: java hibernate java-ee jboss wildfly

我为我的应用程序使用了wildfly实体管理器,但除此之外我还需要在运行时为其他目的建立jdbc连接,所以我在服务器中,在运行时,在应用程序启动期间接收设置并建立此连接。

我尝试使用sql2o并且它工作得很好,但后来我尝试了hibernate(我以编程方式创建它),并且它没有工作。我看了一下内部,并弄清楚它为什么不起作用。 当库调用DriverManager.getConnection()时,它会检查调用者ClassLoader。当sql2o像Postgres Driver一样加载了一个应用程序时,hibernate就没有了,而且它失败了。

创建客户端sql2o,工作得很好 enter image description here

以编程方式创建hibernate并且失败

enter image description here

然后我试图将PostgresDriver作为Wildfly模块安装,并且部署两种方式都不起作用。 此外,我尝试使用jboss-deployment-structure.xml从wildfly中提取hibernate,并使用我的应用程序中的bundle。它再次起作用。 我每次都会得到  引起:java.sql.SQLException:没有为jdbc找到合适的驱动程序:postgresql ...

我发现登记的车手PostgresDriver装载了Wildfly's 使用classloader id" org.postgres:main",当调用者(hibernate' s)ClassLoader时 有id =" org.hibernate:main"。所以它是野生蝇的模块,但为什么他们不能互相看见?

问题: enter image description here

我使用带有2个子部署(jar + war)的耳包,如何解决这个问题,并让野生动物的hibernate看作安装为wildfly模块的Postgres驱动程序?

0 个答案:

没有答案