Websphere 8.5.5.10에서 Hibernate5 검색 API를 통해 엔티티를 색인화하려고 시도하는 중 클래스 캐스트 예외가 발생합니다. 트랜잭션은 Spring Transaction에 의해 관리되고있다. 문서 엔티티는 로컬 톰캣에서 올바르게 인덱싱되지만 WebSphere에서는 인덱싱되지 않습니다.java.lang.ClassCastException : com.ibm.ws.tx.jta.TranManagerSet이 javax.transaction.TransactionManager와 호환되지 않습니다.
개체를 색인화하기 위해 RESTFUl 웹 서비스 호출을 만들었습니다.
봄 4.2 최대 절전 모드 코어 5.0.11.Final 최대 절전 모드 검색 5.5.5.Final는
여기 내 설정 파일
<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 작업 중 예기치 않은 오류가 발생했습니다. org.hibernate.engine.transaction.jta.platform.spi.JtaPlatformException : Could org.hibernate.engine.transaction.jta.platform.internal.AbstractJtaPlatform.retrieveTransactionManager에서 org.hibernate.engine.transaction.jta.platform.internal.WebSphereJtaPlatform.locateTransactionManager (WebSphereJtaPlatform.java:66) 으로는 WebSphere TransactionManager를 를 얻을 (AbstractJtaPlatform.java:87) at org.hibernate.search.batchindexing.impl.BatchTransactionalContext.lookupTransactionManager (BatchTransactionalContext.java:53) at org.hibernate.search.batchindexing.impl.BatchTransactionalContext (BatchTransactionalContext.java:42) (org.apache.org).) at java.util.concurrent.Executors $ RunnableAdapter.call (Executors.java:483) at java.util.concurrent.FutureTask.run (FutureTask.java:274) at java.util.concurrent.ThreadPoolExecutor.runWorker 자바 : java.lang.Thread.run에서 java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:627) 에서 (ThreadPoolExecutor.java:1157) (Thread.java:798) 는에 의해 발생. lang.ClassCastException : com.ibm.ws.tx.jta.TranManagerSet이 javax.transaction.TransactionManager와 호환되지 않음 at org.hibernate.engine.transaction.jta.platform.internal.WebSphereJtaPlatform.locateTransactionManager (WebSphereJtaPlatform.java:63)
내가 뭘 잘못하고 있는지 잘 모르겠다. 인덱스 웹 서비스 호출 외에도 다른 REST 웹 서비스가 정상적으로 실행되고 UI가 예상대로 채워집니다.
도움이 될 것입니다.
감사하지만 내는 WebSphere 설정이 이미 설정되어 클래스 로더 - 상위 마지막을, 전쟁 클래스 - "응용 프로그램의 각 WAR 파일에 대한 클래스 로더는" – creed
의 javax.transaction.TransactionManager는이다 플랫폼 인터페이스 : 클래스 로더 옵션을 변경해도 도움이되지 않습니다. 응용 프로그램에 충돌 할 수있는 전이 의존성이 포함되어 있지 않은지 확인해야합니다. – Sanne
그러면 첫 번째 해결책을 시도하고'GemFire.jar'를 해킹해야합니다. @ Sanne : 의견 주셔서 감사합니다. 그에 따라 솔루션을 업데이트 할 것입니다. – Benoit