所以我使用位于EjbComponent类下的getRollBackOnly方法,该方法实现了org.jboss.logging.BasicLogger接口。
public boolean getRollbackOnly() throws IllegalStateException {
if (isBeanManagedTransaction())
throw EjbLogger.ROOT_LOGGER.failToCallgetRollbackOnly();
try {
TransactionManager tm = getTransactionManager();
if (tm.getTransaction() == null)
throw EjbLogger.ROOT_LOGGER.failToCallgetRollbackOnlyOnNoneTransaction();
int status = tm.getStatus();
EjbLogger.ROOT_LOGGER.tracef("Current transaction status is %d", status); //this ligne is causing the error
switch (status) {
case 3:
case 4:
throw EjbLogger.ROOT_LOGGER.failToCallgetRollbackOnlyAfterTxcompleted();
case 1:
case 9:
return true;
}
return false;
} catch (SystemException se) {
EjbLogger.ROOT_LOGGER.getTxManagerStatusFailed((Throwable)se);
return true;
}
EJBLogger接口目标行。
public static final EjbLogger ROOT_LOGGER = (EjbLogger)Logger.getMessageLogger(EjbLogger.class, "org.jboss.as.ejb3");
我遇到的异常。
Caused by: java.lang.NoSuchMethodError: org.jboss.as.ejb3.logging.EjbLogger.tracef(Ljava/lang/String;I)V at org.jboss.as.ejb3.component.EJBComponent.getRollbackOnly(EJBComponent.java:358) at org.jboss.as.ejb3.component.session.SessionBeanComponent.getRollbackOnly(SessionBeanComponent.java:100) at org.jboss.as.ejb3.context.EJBContextImpl.getRollbackOnly(EJBContextImpl.java:90) at org.jboss.as.ejb3.context.SessionContextImpl.getRollbackOnly(SessionContextImpl.java:133)
ps:我已经有jboss-logging jar了。
谢谢。
对于谁得到了这个异常,我已经通过使用最新版本的jboss-logging库(jboss-logging-3.4.1.Final)解决了这个问题。