2016-11-25 39 views
0

好日子錯誤,@EJB問題與

我試圖部署現有的應用程序到JBoss EAP 7,但與部署失敗,錯誤如下部署一個bean:

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; 

    } 

InterfaceTest

@Remote 
    public interface InterfaceTest { 

    } 

EJB

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

    } 

.class是在同一個罐子,罐子是在戰爭的web-inf lib這我部署

我搜索了很多,但似乎沒有人有有這個錯誤

在此先感謝

+0

從你的一行堆棧跟蹤不是很有用。請提供整個堆棧跟蹤。 –

+0

classA是一個託管bean,@ injject部署工作,但爲什麼不用@ejb, – user3526455

+0

包含類的jar是否包含'beans.xml'文件? –

回答

0

如果您正在實施InterfaceTest,則不需要兩次(在EJBTest和InterfaceTest上)放置@Remote,只需在InterfaceTest上放置。

您是否使用@Inject嘗試了注射?

classA的背景是什麼?你不需要把@Named放在它上面嗎?

+0

是的,我忘記了將@named添加到上面的代碼 – user3526455

0

ClassA不是「託管組件」,例如。 EJB。因此無法執行注入。

+0

沒有classA是managedBeam,在Weblogic 12c中,代碼部署和工作正常,還有@EJB注入 – user3526455