2014-01-17 4 views
1

에 최대 절전 모드 문제 내 데이터베이스에서 레코드를 업데이트하려고 할 때 나는 다음과 같은 예외를 얻고있다UnsupportedOperationException가 JPA를 사용하여/웹 스피어

: 업데이트 할 때

java.lang.UnsupportedOperationException 
at org.hibernate.service.jta.platform.internal.WebSphereExtendedJtaPlatform$TransactionManagerAdapter.setRollbackOnly(WebSphereExtendedJtaPlatform.java:139).... 

이 예외는 발생합니다. 만들기, 읽기 및 삭제 작업이 잘됩니다.

이 코드가 throw되는 일반적인 이유는 무엇입니까?

우리는 MyEclipseBlue와 메이븐 또는 개미 프로젝트를 빌드하는 데 사용되지 않는다는를 사용하는 데 필요한

이상한 트위스트; MyEclipseBlue의 빌드 프로세스 만 사용할 수 있습니다. MyEclipseBlue에 의해 생성 된 EAR을 테스트 할 때 위의 오류가 발생합니다. 위의 예외 은 명령 행에서 Maven에 의해 생성 된 EAR로 코드를 배포 할 때을 던지지 않습니다.

저는 생성 된 전쟁이 동일하지만 분명히 뭔가를 놓친다는 것을 확인하는 데 엄청난 고통을 겪었습니다.

환경

  • 스피어 8.5.5
  • 은 MyEclipse 블루
  • 윈도우 7 64

생각

나는 이것을 믿지 않는다 v10.x 문제는 예외를 던지는 코드는 hibernate-core.jar에 있기 때문에 클래스 로딩이 필요하다. 또한 Websphere의 관리 콘솔에서 클래스 경로 보고서를 검토했습니다.

JDBC 조회 문제가 아닙니다. 두 버전 모두 동일한 방법으로 jndi 자원에 연결합니다. 나는 그들 모두를 현재 동시에 배치했다 (이전에 나는 하나 또는 다른 것을 가지고 있었다).

소스 파일

beans.xml 환경 (CDI의 경우)과의 persistence.xml 파일은 각각의 전쟁에서 같은 정확히 다음과 같습니다

WEB-INF/클래스/META-INF/persistenc.xml

<?xml version="1.0" encoding="UTF-8"?> 
    <persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> 
     <persistence-unit name="boss-persistence" transaction-type="JTA"> 
      <provider>org.hibernate.ejb.HibernatePersistence</provider> 
      <jta-data-source>jdbc/boss</jta-data-source> 
      <properties> 
       <!--<property name="hibernate.hbm2ddl.auto" value="update"/>--> 
       <property name="hibernate.transaction.jta.platform" value="org.hibernate.service.jta.platform.internal.WebSphereExtendedJtaPlatform"/> 
            <property name="hibernate.format_sql" value="true"/> 
            <property name="hibernate.show_sql" value="true"/> 
      </properties> 
     </persistence-unit> 
    </persistence> 

스택 추적

Caused by: java.lang.UnsupportedOperationException 
    at org.hibernate.service.jta.platform.internal.WebSphereExtendedJtaPlatform$TransactionManagerAdapter.setRollbackOnly(WebSphereExtendedJtaPlatform.java:139) 
    at org.hibernate.engine.transaction.internal.jta.CMTTransaction.markRollbackOnly(CMTTransaction.java:131) 
    at org.hibernate.engine.transaction.internal.TransactionCoordinatorImpl.setRollbackOnly(TransactionCoordinatorImpl.java:306) 
    at org.hibernate.engine.transaction.synchronization.internal.SynchronizationCallbackCoordinatorImpl.setRollbackOnly(SynchronizationCallbackCoordinatorImpl.java:127) 
    at org.hibernate.engine.transaction.synchronization.internal.SynchronizationCallbackCoordinatorImpl.beforeCompletion(SynchronizationCallbackCoordinatorImpl.java:117) 
    at org.hibernate.engine.transaction.synchronization.internal.RegisteredSynchronization.beforeCompletion(RegisteredSynchronization.java:53) 
    at org.hibernate.service.jta.platform.internal.WebSphereExtendedJtaPlatform$TransactionManagerAdapter$TransactionAdapter$1.invoke(WebSphereExtendedJtaPlatform.java:176) 
    at com.sun.proxy.$Proxy127.beforeCompletion(Unknown Source) 
    at com.ibm.ws.jtaextensions.SynchronizationCallbackWrapper.beforeCompletion(SynchronizationCallbackWrapper.java:66) 
    at com.ibm.tx.jta.impl.RegisteredSyncs.coreDistributeBefore(RegisteredSyncs.java:291) 
    at com.ibm.ws.tx.jta.RegisteredSyncs.distributeBefore(RegisteredSyncs.java:153) 
    at com.ibm.ws.tx.jta.TransactionImpl.prePrepare(TransactionImpl.java:2369) 
    at com.ibm.ws.tx.jta.TransactionImpl.stage1CommitProcessing(TransactionImpl.java:577) 
    at com.ibm.tx.jta.impl.TransactionImpl.processCommit(TransactionImpl.java:1015) 
    ... 77 more 

최종 생각

다른 코드를 호출 할 것이 두 귀 대해 다른 것이 무엇

?

제공 할 수있는 도움에 감사드립니다.최대 절전 모드 4.3 시도에서

+0

항아리 보관을 취소하고 내용물을 비교하려 했습니까? –

+0

어쩌면 복제 된 http://stackoverflow.com/questions/13388069/unexpected-unsupportedoperationexception-on-hibernate-validation-failure – fmodos

답변

-1

:

<property name="hibernate.transaction.jta.platform" 
    value="org.hibernate.service.jta.platform.internal.WebSphereJtaPlatform" /> 

WebSphereExtendedJtaPlatform 반대로이 WebSphereJtaPlatform를 사용하는

주를 작동하는 것 같다.