JBOSS EAP 7.1:NoSuchMethodError:org.jboss.as.ejb3.logging.EjbLogger.tracef(Ljava/lang/String;I)V

Posted

技术标签:

【中文标题】JBOSS EAP 7.1:NoSuchMethodError:org.jboss.as.ejb3.logging.EjbLogger.tracef(Ljava/lang/String;I)V【英文标题】:JBOSS EAP 7.1 : NoSuchMethodError: org.jboss.as.ejb3.logging.EjbLogger.tracef(Ljava/lang/String;I)V 【发布时间】:2020-08-29 11:43:34 【问题描述】:

所以我使用位于实现 org.jboss.logging.BasicLogger 接口的 EjbComponent 类下的 getRollBackOnly 方法:

 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

谢谢。

【问题讨论】:

您是否在部署中使用EjbLogger?这并不意味着在服务器本身之外使用。还要确保你的部署中没有包含 jboss-logging 库。 嗨 James 感谢您的快速响应,实际上我正在尝试在 Jboss eap 7.1 服务器上部署多租户应用程序,并且我正在使用不存在的 shema 测试 EjbLogger 下的 setRollBackOnly() 方法它抛出前面提到的错误消息希望我相信这不是预期的行为。 所以这是一个测试用例?如果是这样,您可能在类路径上使用了错误版本的 jboss-logging。 实际上我使用 jboss-logging 3.1.0 GA 和 wildfly-ejb3-7.1.0.GA-redhat-11(ps:我的应用程序中没有 jboss-logging 库)跨度> 谢谢,我已经通过使用这个库的最新版本(jboss-logging-3.4.1.Final)解决了这个问题 【参考方案1】:

对于谁得到了异常,我已经通过使用最新版本的 jboss-logging 库 (jboss-logging-3.4.1.Final) 解决了这个问题

【讨论】:

以上是关于JBOSS EAP 7.1:NoSuchMethodError:org.jboss.as.ejb3.logging.EjbLogger.tracef(Ljava/lang/String;I)V的主要内容,如果未能解决你的问题,请参考以下文章

JBoss EAP 7.1 部署失败的集成器:未找到提供程序

JBoss EAP 6.4 -> 7.1 使用休眠 4 而不是默认休眠 5

我无法在 JBOSS EAP 7.1 中从 EAR 或 WAR 设置系统属性

部署到 jboss EAP 7.1 时,此 URL 不支持 HTTP Post 方法

在 JBOSS EAP 7.1 中,如何将 EJB 和 undertow 的统计启用设置为 True?

JBOSS EAP 7.1:NoSuchMethodError:org.jboss.as.ejb3.logging.EjbLogger.tracef(Ljava/lang/String;I)V