我试图在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中排除其他内容?
感谢。
答案 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" />