Jakarta ee 无状态bean不公开所实现接口的默认方法

Jakarta ee 无状态bean不公开所实现接口的默认方法,jakarta-ee,ejb,cdi,ejb-3.1,Jakarta Ee,Ejb,Cdi,Ejb 3.1,我在接口(AsynchronousTarget)上定义了一个默认方法,然后通过@Statelessbean实现该接口。下面是接口和bean: public interface AsynchronousTarget { default void invoke(String id) { ... } } @Stateless @Local(value = { ApplicationTransfer.class, AsynchronousTarget.class

我在接口(
AsynchronousTarget
)上定义了一个默认方法,然后通过
@Stateless
bean实现该接口。下面是接口和bean:

public interface AsynchronousTarget {    
   default void invoke(String id) {
          ...
   }
}

@Stateless
@Local(value = { ApplicationTransfer.class, AsynchronousTarget.class})
public class ApplicationTransfer implements AsynchronousTarget {
}
我希望我的bean公开这个方法,但是当我通过接口使用CDI的
@inject
注入bean并尝试调用一个方法时,它抛出以下错误:

Caused by: java.lang.IllegalStateException: WFLYEE0067: Method does not exist public abstract void AsynchronousTarget.invoke(java.lang.String)
at org.jboss.as.ee.component.BasicComponentInstance.getInterceptor(BasicComponentInstance.java:102)
at org.jboss.as.ee.component.interceptors.ComponentDispatcherInterceptor.processInvocation(ComponentDispatcherInterceptor.java:52)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
at org.jboss.as.ejb3.component.pool.PooledInstanceInterceptor.processInvocation(PooledInstanceInterceptor.java:51)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
at org.jboss.as.ejb3.component.interceptors.AdditionalSetupInterceptor.processInvocation(AdditionalSetupInterceptor.java:54)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInCallerTx(CMTTxInterceptor.java:185)
... 267 more

如果你希望人们帮助你,你应该提供最多的信息。。请编辑并添加接口和实现类code@Repoker好的,我添加了我的代码,但我不认为它增加了价值。我也不认为ejb3.0知道默认方法。。。完全为什么3.0和3.1都是相关的呢。如果你使用3.1,为什么要担心3.0呢?这是一个EJB,而不是CDI,那么为什么还要将其标记为CDI呢?如果发布正确,代码总是会增加价值。对于al,我们知道您在某个地方输入了一个错误。由于接口中的默认方法实现从版本8开始就可用,我知道您使用的是java 8或更高版本(用于编译),但服务器可能运行的是另一个版本,您是否检查了您的wildfly服务器和java版本@迈克:来源总是增加价值!:)是的,我使用的是WF 14.0.1.Final,java版本是8。如果你希望人们帮助你,你应该提供最大数量的信息。。请编辑并添加接口和实现类code@Repoker好的,我添加了我的代码,但我不认为它增加了价值。我也不认为ejb3.0知道默认方法。。。完全为什么3.0和3.1都是相关的呢。如果你使用3.1,为什么要担心3.0呢?这是一个EJB,而不是CDI,那么为什么还要将其标记为CDI呢?如果发布正确,代码总是会增加价值。对于al,我们知道您在某个地方输入了一个错误。由于接口中的默认方法实现从版本8开始就可用,我知道您使用的是java 8或更高版本(用于编译),但服务器可能运行的是另一个版本,您是否检查了您的wildfly服务器和java版本@迈克:来源总是增加价值!:)是的,我使用的是WF14.0.1.Final,java版本是8。