2016-03-03 80 views
0

的實例,我有我的項目的這種結構
EmployeeManager(耳)
| --EmployeeManagerEJB(JAR)
| --EmployeeManagerJSF(戰爭)
| --EmployeeManagerIntegration(JAR)
對象不是聲明類,同時部署EAR應用

EmployeeManager - 含X_EJB,X_JSF的.ear項目,X_Integration
EmployeeManagerEJB - EJB項目打包成包含JPA實體罐子,EJB無狀態Bean實現
EmployeeManagerJSF - 包含JSF的xhtml頁面和控制器的動態web項目
EmployeeManagerIntegration - EJB實現的接口(用於JSF項目),DTOs

我在EJB Bean實現中使用CDI來實現注入一個EJB到另一個(我通過接口引用,而不是實現類引用)。我也在X_JSF的控制器類中通過CDI使用這些無狀態Bean。當我試圖部署EAR我收到堆棧跟蹤:

16:52:13,694 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-2) MSC000001: Failed to start service jboss.deployment.unit."EmployeeManager.ear".WeldStartService: org.jboss.msc.service.StartException in service jboss.deployment.unit."EmployeeManager.ear".WeldStartService: Failed to start service 
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1904) 
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) 
Caused by: java.lang.IllegalArgumentException: object is not an instance of declaring class 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:498) 
at org.jboss.weld.resolution.QualifierInstance.createValues(QualifierInstance.java:128) 
at org.jboss.weld.resolution.QualifierInstance.of(QualifierInstance.java:95) 
at org.jboss.weld.resolution.ResolvableBuilder.addQualifier(ResolvableBuilder.java:147) 
at org.jboss.weld.resolution.ResolvableBuilder.addQualifiers(ResolvableBuilder.java:197) 
at org.jboss.weld.resolution.ResolvableBuilder.addQualifiers(ResolvableBuilder.java:192) 
at org.jboss.weld.manager.BeanManagerImpl.resolveDecorators(BeanManagerImpl.java:885) 
at org.jboss.weld.injection.producer.BeanInjectionTarget.initializeAfterBeanDiscovery(BeanInjectionTarget.java:109) 
at org.jboss.weld.injection.producer.InjectionTargetInitializationContext.initialize(InjectionTargetInitializationContext.java:42) 
at org.jboss.weld.injection.producer.InjectionTargetService.initialize(InjectionTargetService.java:63) 
at org.jboss.weld.bootstrap.WeldStartup.deployBeans(WeldStartup.java:434) 
at org.jboss.weld.bootstrap.WeldBootstrap.deployBeans(WeldBootstrap.java:83) 
at org.jboss.as.weld.WeldStartService.start(WeldStartService.java:95) 
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1948) 
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1881) 
... 3 more 

這是唯一的錯誤類型的信息,我從wildfly得到的,不知道有什麼可以在這裏是錯誤和從哪裏開始搜索。 我懷疑CDI錯誤是原因,但不知道如何調試或什麼的。有什麼建議麼 ?

示例代碼與注射:
1.接口

@Local 
public interface ChartService extends Serializable { 
    Collection<String> getSomething(); 
} 


2.實施

@Stateless 
public class ChartServiceImpl implements ChartService { 
    @Inject DateService dateService; 
} 
+0

郵編那裏有注射 – fantarama

+0

替代品之一,我已經更新了我的帖子 –

+0

而你在哪裏注射你的EJB?你介意提供這些代碼嗎? – aribeiro

回答