当前位置: 首页 > 知识库问答 >
问题:

JAVAlang.ClassCastException:com。国际商用机器公司ws。tx.jta。TranManagerSet与javax不兼容。交易交易经理

颛孙玉石
2023-03-14

我得到类铸异常,而试图索引实体通过Hibernate5搜索API在WebSphere8.5.5.10。这些事务由Spring Transaction管理。文档实体在本地tomcat上正确索引,但在WebSphere上没有。

我创建了一个RESTfulWeb服务调用来索引实体。

Spring4.2Hibernate核心5.0.11。最终Hibernate搜索5.5.5。最终的

这是我的配置文件

<bean id="sessionFactory"
    class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
    <property name="dataSource" ref="datasource" />
    <property name="packagesToScan">
        <list>
            <value>model</value>
        </list>
    </property>
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
            <prop key="hibernate.show_sql">true</prop>
            <prop key="hibernate.format_sql">false</prop>
            <prop key="hibernate.default_schema">dev</prop>
            <prop key="hibernate.generate_statistics">true</prop>
            <prop key="hibernate.search.default.directory_provider">filesystem</prop>
            <prop key="hibernate.search.default.indexBase">/var/lucene/indexes</prop>

        </props>
    </property>

</bean>


<bean id="transactionManager"
    class="org.springframework.orm.hibernate5.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory" />
</bean>

以及websphere应用程序日志中的堆栈跟踪:-

HSEARCH000058:HSEARCH000116:MassIndexer操作组织期间出现意外错误。冬眠发动机交易jta。站台spi。JtaPlatformException:无法在组织上获取WebSphere TransactionManager。冬眠发动机交易jta。站台内部的WebSphereJSTAplatform。将TransactionManager(WebSphereJtaPlatform.java:66)定位于org。冬眠发动机交易jta。站台内部的抽象JTA平台。retrieveTransactionManager(AbstractJtaPlatform.java:87)位于org。冬眠搜索批量索引。impl。BatchTransactionalContext。org上的lookupTransactionManager(BatchTransactionalContext.java:53)。冬眠搜索批量索引。impl。BatchTransactionalContext。(BatchTransactionalContext.java:42)位于org。冬眠搜索批量索引。impl。批处理工作区。org上的runWithErrorHandler(BatchIndexingWorkspace.java:118)。冬眠搜索批量索引。impl。ErrorHandleRunnable。在java上运行(errorHandleRunnable.java:32)。util。同时发生的遗嘱执行人$runnableapter。在java上调用(Executors.java:483)。util。同时发生的未来任务。在java上运行(FutureTask.java:274)。util。同时发生的线程池执行器。java上的runWorker(ThreadPoolExecutor.java:1157)。util。同时发生的线程池执行器$Worker。在java上运行(ThreadPoolExecutor.java:627)。朗。丝线。运行(Thread.java:798)的原因是:java。lang.ClassCastException:com。国际商用机器公司ws。tx.jta。TranManagerSet与javax不兼容。交易组织的TransactionManager。冬眠发动机交易jta。站台内部的WebSphereJSTAplatform。locateTransactionManager(WebSphereJtaPlatform.java:63)

我不确定我在这里做错了什么。除了索引Web服务调用外,其他REST Web服务运行良好,我的UI按预期填充。

任何帮助都将不胜感激。

共有3个答案

卫沈义
2023-03-14

从SpringBoot版本2.2开始。0.0版本中,使用了来自雅加达的事务管理器api。如果你想让它工作,就排除它

<dependency>
    <groupId>jakarta.transaction</groupId>
    <artifactId>jakarta.transaction-api</artifactId>
</dependency>

从…起

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

基本思想是只有一个事务管理器。在这里,我们正在删除一个正在提供的从斯普林特引导-jpa

赵禄
2023-03-14

根据这篇文章,这是两个不同版本的java.transaction包之间的冲突(一个在webphere中,一个在gmFire.jar中,一个用webphere部署的库)。

它还提出了一个解决方案:

放下包javax。来自GemFire的事务处理。jar:zip-dgemfire。jar javax/transaction/*

希望这有帮助。

凤柏
2023-03-14

我们遇到了这个问题。

问题:如果我们使用使用JPA2.1的hibernate版本(

nested exception is java.lang.NoSuchMethodError: javax/persistence/Table.indexes()[Ljavax/persistence/Index;

解决方案1:解决此问题的一种方法是将classloader设置为parent\u last,以便使用hibernate附带的JPA2.1。但是,您将遇到与上述问题类似的其他问题。

>

  • 与带有Hibernate,异常的TransactionManager冲突:

    java.lang.ClassCastExcture:com.ibm.ws.tx.jta.TranManagerSet与javax.transaction.TransactionManager不兼容

    这可以通过排除导致冲突的以下jar(hibernate依赖项的示例maven配置)来解决:

    <exclusion>
        <artifactId>jboss-transaction-api_1.2_spec</artifactId>
        <groupId>org.jboss.spec.javax.transaction</groupId>
    </exclusion>
    

    与xml API冲突。与hibernate一起提供的jar导致异常:

    javax。xml。解析器。FactoryConfigurationError:javax的提供程序。xml。解析器。找不到DocumentBuilderFactory

    这可以通过排除XMLAPI来解决。来自hibernate依赖项的jar,如下所示:

    <exclusion>
        <artifactId>xml-apis</artifactId>
        <groupId>xml-apis</groupId>
    </exclusion>
    

    解决方案2:
    使用自定义PersistenceProviderResolver,以便Websphere类不会干扰Hibernate:

    https://stackoverflow.com/a/37354979/5150013

  •  类似资料:
    • 我有一个问题,由于我重命名com,初始化失败。国际商用机器公司ws。安全加密。jar位于/opt/was_D85/AppServer/plugins的其他名称。我已经将jar重命名为它的原始名称,但初始化仍然失败。 我的环境是:OS:aixwebsphere8.5 我得到的错误: 有人能帮忙吗? 非常感谢。

    • 交易机制 当你用一些以太币Ether创建了一个有效的帐户时,你可以使用两种机制来与以太坊进行交易。 通过以太坊ethereum客户端进行认证签名交易 离线交易签名认证 这两种机制都是Web3j所支持的。

    • 问题内容: 我有一个具有事务性属性的方法: 可以同时多次调用此方法,并且对于每个事务,如果发生错误而不是将其回滚(独立于其他事务),则将被多次调用。 问题在于,这可能迫使Spring创建多个事务,即使另一个事务可用,也可能会导致一些性能问题。 Java doc 说: 这似乎解决了性能问题,不是吗? 回滚问题呢?如果在使用现有事务时新方法调用回滚怎么办?那会不会回滚整个交易,即使以前的呼叫也是如此?

    • 我想在事务中使用SpringKafka,但我真的不明白应该如何配置它以及它是如何工作的。 这是我的配置 此配置用于事务id前缀为的DefaultKafkaProducerFactory: 问题一: 我应该如何选择这个交易ID前缀?如果我理解正确,这个前缀被Spring用来为创建的每个生产者生成一个事务性id。 为什么我们不能只使用"UUID。随机UUID()? 问题二: 如果生产者被销毁,它将生成

    • 问题内容: 我有一个具有事务性属性的方法: 可以同时多次调用此方法,并且对于每个事务,如果发生错误而不是回退(独立于其他事务),则对于每个事务。 问题是,这可能迫使Spring创建多个事务,即使另一个事务可用,也可能会导致一些性能问题。 Java doc 说: 这似乎解决了性能问题,不是吗? 回滚问题呢?如果在使用现有事务时新方法调用回滚怎么办?那会不会回滚整个交易,即使以前的呼叫也是如此? [编

    • 交易随机数nonce nonce是一个不断增长的数值,用来唯一地标识交易。一个nonce只能使用一次,直到交易被挖掘完成,可以以相同的随机数发送交易的多个版本,但是一旦其中一个被挖掘完成,其他后续提交的都将被拒绝。 可以通过eth_getTransactionCount方法获得下一个可用的nonce: EthGetTransactionCount ethGetTransactionCount =