【问题标题】:Deploy error on JBOSS 7 eap , @EJB issue with deploy in a beanJBOSS 7 eap 上的部署错误,@EJB 在 bean 中部署的问题
【发布时间】:2016-11-25 17:14:25
【问题描述】:

美好的一天

我正在尝试将现有应用程序部署到 JBOSS EAP 7,但部署失败并出现以下错误:

Caused by: java.lang.IllegalArgumentException: WFLYWELD0033: interface javax.ejb.EJB annotation not found on InterfaceTest  ClassA \"}}"
at org.jboss.as.weld.services.bootstrap.WeldEjbInjectionServices.registerEjbInjectionPoint(WeldEjbInjectionServices.java:97)
at org.jboss.weld.injection.ResourceInjectionFactory$EjbResourceInjectionProcessor.getResourceReferenceFactory(ResourceInjectionFactory.java:274)
at org.jboss.weld.injection.ResourceInjectionFactory$EjbResourceInjectionProcessor.getResourceReferenceFactory(ResourceInjectionFactory.java:269)
at org.jboss.weld.injection.ResourceInjectionFactory$ResourceInjectionProcessor.createFieldResourceInjection(ResourceInjectionFactory.java:217)
at org.jboss.weld.injection.ResourceInjectionFactory$ResourceInjectionProcessor.createResourceInjections(ResourceInjectionFactory.java:189)
at org.jboss.weld.injection.ResourceInjectionFactory.discoverType(ResourceInjectionFactory.java:449)
at org.jboss.weld.injection.ResourceInjectionFactory.getResourceInjections(ResourceInjectionFactory.java:97)
at org.jboss.weld.injection.producer.ResourceInjector.<init>(ResourceInjector.java:59)
at org.jboss.weld.injection.producer.ResourceInjector.of(ResourceInjector.java:49)
at org.jboss.weld.injection.producer.BeanInjectionTarget.<init>(BeanInjectionTarget.java:63)
at org.jboss.weld.injection.producer.BeanInjectionTarget.createDefault(BeanInjectionTarget.java:47)
at org.jboss.weld.manager.InjectionTargetFactoryImpl.chooseInjectionTarget(InjectionTargetFactoryImpl.java:113)
at org.jboss.weld.manager.InjectionTargetFactoryImpl.createInjectionTarget(InjectionTargetFactoryImpl.java:86)
at org.jboss.weld.bean.ManagedBean.<init>(ManagedBean.java:100)
at org.jboss.weld.bean.ManagedBean.of(ManagedBean.java:80)
at org.jboss.weld.bootstrap.AbstractBeanDeployer.createManagedBean(AbstractBeanDeployer.java:261)
at org.jboss.weld.bootstrap.BeanDeployer.createClassBean(BeanDeployer.java:228)
at org.jboss.weld.bootstrap.ConcurrentBeanDeployer$2.doWork(ConcurrentBeanDeployer.java:78)
at org.jboss.weld.bootstrap.ConcurrentBeanDeployer$2.doWork(ConcurrentBeanDeployer.java:75)
at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:63)
at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:56)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
at org.jboss.threads.JBossThread.run(JBossThread.java:320)

ClassA

   @Named(value = "ao007")
   @ViewAccessScoped
   public class classA {

     @EJB
     InterfacTest test;

   }

接口测试

   @Remote
   public interface InterfaceTest {

   }

EJB

   @Stateless
   @Interceptors(Interceptor.class)
   public class EJBTest implements InterfaceTest {

   }

每个.class 都在同一个罐子里,罐子在我正在部署的战争的web-inf lib

我搜索了很多,但似乎没有人遇到过这个错误

提前致谢

【问题讨论】:

  • 堆栈跟踪中的一行不是很有用。请提供整个堆栈跟踪。
  • classA 是一个托管bean,使用@injject deploy 可以,但为什么不使用@ejb,
  • 包含类的 jar 是否包含 beans.xml 文件?

标签: java jakarta-ee jboss ejb cdi


【解决方案1】:

如果您正在实现 InterfaceTest,则不需要将 @Remote 放置两次(在 EJBTest 和 InterfaceTest 上),只需在 InterfaceTest 上放置。

您是否尝试使用@Inject 进行注入?

classA 的上下文是什么?你不需要在上面加上@Named 吗?

【讨论】:

  • 是的,我忘记在上面的代码中添加@named
【解决方案2】:

ClassA 不是“托管组件”,例如。 EJB。因此无法进行注入。

【讨论】:

  • 不,classA 是 managedBeam ,在 Weblogic 12c 中代码部署和工作正常,还有@EJB 注入
猜你喜欢
  • 1970-01-01
  • 2017-05-11
  • 1970-01-01
  • 2018-11-20
  • 1970-01-01
  • 2020-03-09
  • 2016-03-27
  • 1970-01-01
  • 2011-08-27
相关资源
最近更新 更多