实例化显式连接提供程序:org.hibernate.ejb.connection.InjectedDataSourceConnectionProvider

时间:2017-06-09 13:43:49

标签: hibernate deployment jboss

我试图在jboss 6.4.7中部署我的springboot应用程序,但控制台冻结了这个:

Instantiating explicit connection provider: org.hibernate.ejb.connection.InjectedDataSourceConnectionProvider
Instantiating explicit connection provider: org.hibernate.ejb.connection.InjectedDataSourceConnectionProvider
Instantiating explicit connection provider: org.hibernate.ejb.connection.InjectedDataSourceConnectionProvider
Instantiating explicit connection provider: org.hibernate.ejb.connection.InjectedDataSourceConnectionProvider

并且部署失败。我在我的项目中添加了一个jboss-deployments-structure,其中包含:

<ear-subdeployments-isolated>true</ear-subdeployments-isolated>
    <exclude-subsystems>
        <subsystem name="jpa" />
        <subsystem name="logging" />
    </exclude-subsystems>

    <exclusions>
        <module name="org.jboss.logmanager.log4j" />  
        <module name="org.slf4j" />
        <module name="org.slf4j.ext" />
        <module name="org.slf4j.impl" />
        <module name="org.apache.log4j" /> 
        <module name="org.jboss.logmanager"/> 
        <module name="jcl-over-slf4j"/>  

        <module name="javax.persistence.api" />
        <module name="javaee.api" />
        <module name="javax.api" />

    </exclusions>

当我删除它:<subsystem name="logging"/>时,它可以工作,但使用JBoss模块(我不想这样)。 有什么想法吗?

修改

事实上,我有一个带有倍数战争/罐子的EAR。而一些jar正在使用persistence.xml。但是当我尝试在EAR中使用其他.war / .jar启动我的app.war时,问题就出现了。

如果我删除了耳朵的jboss-deployment-structure中的日志记录扩展,它可以正常工作,并且在日志中我有这个:

Using dialect: org.hibernate.dialect.MySQLDialect
Using dialect: org.hibernate.dialect.MySQLDialect
Using dialect: org.hibernate.dialect.MySQLDialect

该应用程序启动但使用了jboss的日志记录模块。

我是否必须在jboss-deployment-structure中排除其他内容?

感谢。

1 个答案:

答案 0 :(得分:0)

对于测试环境,您应该使用内存数据库,如HSQLDB或H2。创建和删除此类数据库非常快,因此可以大大加快您的测试速度。

对于系统集成测试,您可能希望连接到类似生产的数据库服务器,但该克隆数据库服务器应该并置到测试环境中,以避免不必要的网络延迟或缓慢连接。

您是否干净地关闭了JBoss实例?与慢速定期恢复相关的所有线程都与不干净的关闭和启动有关。我还建议更新到最新的JDBC驱动程序,因为至少有一个与事务恢复相关的修复。

尝试在persistence.xml中设置以下属性:

<property name="hibernate.dialect" value="org.hibernate.dialect.<Dialect_Class_name>" />
<property name="hibernate.temp.use_jdbc_metadata_defaults" value="false" />