的實例,我有我的項目的這種結構
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;
}
郵編那裏有注射 – fantarama
替代品之一,我已經更新了我的帖子 –
而你在哪裏注射你的EJB?你介意提供這些代碼嗎? – aribeiro