我有一个Java的EE应用程序,它使用Hibernate 4.2.7作为持久性提供程序,在可嵌入的WebSphere 8.0.0容器中执行JUnit测试。数据库访问在真实(即非嵌入式)WebSphere 8.0.0实例中运行良好。当使用OpenJPA而不是Hibernate运行时,单元测试确实有效。但是,使用Hibernate运行JUnit测试时,会出现以下异常:
CNTR0020E: EJB threw an unexpected (non-declared) exception during invocation of method "getEntity" on bean "BeanId(embeddable#classes#SomeBean, null)". Exception data: org.hibernate.service.jndi.JndiException: Unable to lookup JNDI name [java:comp/websphere/ExtendedJTATransaction] at org.hibernate.service.jndi.internal.JndiServiceImpl.locate(JndiServiceImpl.java:68) at org.hibernate.service.jta.platform.internal.WebSphereExtendedJtaPlatform$TransactionManagerAdapter$TransactionAdapter.(WebSphereExtendedJtaPlatform.java:156) at org.hibernate.service.jta.platform.internal.WebSphereExtendedJtaPlatform$TransactionManagerAdapter$TransactionAdapter.(WebSphereExtendedJtaPlatform.java:152) at org.hibernate.service.jta.platform.internal.WebSphereExtendedJtaPlatform$TransactionManagerAdapter.getTransaction(WebSphereExtendedJtaPlatform.java:124) at org.hibernate.service.jta.platform.internal.WebSphereExtendedJtaPlatform$TransactionManagerAdapter.getStatus(WebSphereExtendedJtaPlatform.java:119) at org.hibernate.engine.transaction.internal.jta.JtaStatusHelper.getStatus(JtaStatusHelper.java:73) at org.hibernate.engine.transaction.internal.jta.JtaStatusHelper.isActive(JtaStatusHelper.java:115) at org.hibernate.service.jta.platform.internal.TransactionManagerBasedSynchronizationStrategy.canRegisterSynchronization(TransactionManagerBasedSynchronizationStrategy.java:56) ... stripped ...
WebSphereExtendedjTapPlatform的实现似乎正在尝试通过JNDI查找获取当前事务,但失败了,因为嵌入容器中不存在JNDI名称。这是从组织剪下来的。冬眠服务jta。站台内部的WebSphereExtendedjTapForm平台:
public class TransactionAdapter implements Transaction {
private TransactionAdapter() {
if ( extendedJTATransaction == null ) {
extendedJTATransaction = jndiService().locate( "java:comp/websphere/ExtendedJTATransaction" );
}
}
... stripped ...
类ExtendedJtaTransaction本身确实存在于com内部的类路径上。国际商用机器公司ws。运行时。罐子
我们persistence.xml中的设置如下:
<persistence-unit name="BLA" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>jdbc/BLA</jta-data-source>
<class>com.some.Entity</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect" />
<property name="hibernate.archive.autodetection" value="class" />
<property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.WebSphereExtendedJTATransactionLookup" />
<property name="jta.UserTransaction" value="java:comp/UserTransaction" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="true" />
<property name="hibernate.jdbc.fetch_size" value="100" />
<property name="hibernate.temp.use_jdbc_metadata_defaults" value="false" />
</properties>
有人能解决这个问题吗?谢谢
事务策略配置
Hibernate需要配置两个基本部分,以便正确运行事务。第一,冬眠。交易factory_类定义事务控制,第二个定义hibernate。交易manager_lookup_类,定义事务同步的注册机制,以便在事务结束时通知持久性管理器需要将更改与数据库同步。对于事务控制,支持容器管理的配置和bean管理的配置。必须在Hibernate中设置以下属性。cfg。将Hibernate与WebSphere Application Server一起使用时的xml:
for container-managed transactions:
<property name="hibernate.transaction.factory_class">
org.hibernate.transaction.CMTTransactionFactory
</property>
<property name="hibernate.transaction.manager_lookup_class">
org.hibernate.transaction.WebSphereExtendedJTATransactionLookup
</property>
for bean-managed transactions:
<property name="hibernate.transaction.factory_class">
org.hibernate.transaction.JTATransactionFactory
</property>
<property name="hibernate.transaction.manager_lookup_class">
org.hibernate.transaction.WebSphereExtendedJTATransactionLookup
</property>
<property name="jta.UserTransaction">
java:comp/UserTransaction
</property >
jta。UserTransaction属性将工厂类配置为从WebSphere容器获取UserTransaction对象实例的实例。
冬眠。交易WebSphere Application Server V6在WebSphere平台上支持manager_lookup_类属性。X和稍后,以及WebSphere业务集成服务器基础V5。1及更高版本。此属性配置Hibernate以使用在WebSphere业务集成服务器基金会V5中引入的ExplutJavaTraseAct接口。1和WebSphere Application Server V6。0.WebSphere ExtendedJTATransaction接口建立了一个模式,该模式通过JTA 1.1规范在JavaEE5中正式化。
连接到数据库 我在那里没有看到任何桌子,除了原木 我查看了日志,changelog已经在那里工作,并且已经创建了表。
我正在开发一个Java Web应用程序,并将其部署在Websphere Application Server中,
我使用javax.validation和Hibernate验证器实现了一些代码。使用验证的单元测试工作良好。该构建生成OSGi包和特性,并在Karaf中运行。 “无法创建配置,因为找不到Bean验证提供程序。请将Hibernate Validator(RI)这样的提供程序添加到类路径中。” 我会包括stacktrace,但它对我来说没有什么用。大部分都在我的代码、junit和Paxexam中。 我
我使用了dockerhub的Jenkins docker图像(https://github.com/jenkinsci/docker) docker build命令已成功执行,容器也已成功启动。 Docker build命令: Docker容器命令: 然后我通过docker run-it myjenkins bash登录到容器。我找不到像config这样的jenkins配置文件。xml,詹金斯。x
我开始学习docker/KONG安装教程,他们创建了一个名为“KONG net”的网络,并启动KONG和postgresql容器。 然后我跳转到这个docker/Kong教程在香港注册一个样品烧瓶容器作为API... 在使用flask服务和相关路由配置KONG容器时,我没有看到任何令人担忧的事情。 样品瓶容器似乎工作正常: 我得到预期的结果: 这些命令的结果看起来不错:curl-i-xpost--
问题内容: 我只是想快速测试一下。所以我运行了一个Docker容器,我想查看我正在运行哪个版本: 所以我尝试安装它(如此处建议): 有人知道为什么这不起作用吗? 问题答案: 似乎未安装lsb_release。 您可以通过安装 希望能有所帮助;)