【问题标题】:Exceptions not handled in JPAJPA 中未处理的异常
【发布时间】:2012-12-04 11:34:56
【问题描述】:

我们开发了无状态 Web 服务实现。我们使用 JPA 作为 ORM 层来执行数据库操作。在服务方法中,我们使用实体管理器来持久化实体。 在将相同的记录保存到表中时,我们无法处理服务方法中的那些异常“由:java.sql.SQLIntegrityConstraintViolationException:ORA-00001:违反唯一约束 (TIGOSUSCRIPTIONES.SYS_C0020549)”异常引起。 它直接在客户端结果中抛出以下异常。

      Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: Transaction rolled back
        at com.sun.xml.internal.ws.fault.SOAP11Fault.getProtocolException(SOAP11Fault.java:178)
        at com.sun.xml.internal.ws.fault.SOAPFaultBuilder.createException(SOAPFaultBuilder.java:111)
        at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:108)
        at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:78)
        at com.sun.xml.internal.ws.client.sei.SEIStub.invoke(SEIStub.java:107)
        at $Proxy30.registerSaleOutcome(Unknown Source)

      How can I handle this exception? Following is the code we used in service method business logic.


@TransactionAttribute(TransactionAttributeType.REQUIRED)
public void recycleOperation(Recycle recycle) throws RecycleFault_Exception{
  try {
    em.persist(recycle);
  } catch(Exception e){
    // not coming to this block
    log.error("Exception in Data Insertion:"+e.getMessage());
    RecycleFault fault = new RecycleFault();
    fault.setErrorCode("101");
    fault.setMessage("Record is already Existed");
    RecycleFault_Exception faultExp = 
        new RecycleFault_Exception("RecycleFault Exception", fault);
    throw faultExp;
  }
}

你能帮我解决这个问题吗?

【问题讨论】:

    标签: web-services jpa transactions


    【解决方案1】:
    @TransactionAttribute(TransactionAttributeType.REQUIRED)
    

    这会导致方法被包装在一个 JTA 事务中,当事务失败时,将向调用者抛出异常。您将需要在调用者中处理此问题,或通过异常处理程序,或切换方法以使用 bean 管理的事务。

    您也可以在 JPA 中调用 flush(),这将触发约束异常,并允许您处理它。但是 JTA 事务还是会失败。

    【讨论】:

      猜你喜欢
      • 2015-05-28
      • 1970-01-01
      • 1970-01-01
      • 2011-11-29
      • 2013-04-15
      • 1970-01-01
      • 2011-11-19
      • 1970-01-01
      相关资源
      最近更新 更多