@EJB依赖注入不能将Object转换为Object $ view29

时间:2015-11-15 20:22:24

标签: java-ee ejb cdi

我通过将EJB包移动到WEB模块而不是EJB模块来修复它。有人知道为什么吗?

我一直收到以下错误。它说EditEnterpriseSessionBean与EditEnterpriseSessionBean $$$ view81不是同一个类。

错误由三部分组成:

  

21:18:36,880 ERROR [io.undertow.request](默认任务-40)UT005023:对/ EntWeb / ListEnterprisesServlet的异常处理请求:javax.servlet.ServletException:UT010013:无法实例化ListEnterprisesServlet [..]

     

引起:java.lang.IllegalStateException:WFLYEE0042:无法构造组件实例 [..]

     

引起:java.lang.IllegalArgumentException:无法将EditEnterpriseSessionBean字段设置为ListEnterprisesServlet.edtEnterprise为EditEnterpriseSessionBean $$$ view81           at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:167)           at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:171)           at sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:81)[...]

你对这个有什么想法吗?

提前致谢!

完整堆栈跟踪:

Context Path:/EntWeb
Servlet Path:/AddOrderServlet
Path Info:null
Query String:null
Stack Trace
javax.servlet.ServletException: UT010013: Could not instantiate AddOrderServlet
io.undertow.servlet.core.ManagedServlet$DefaultInstanceStrategy.start(ManagedServlet.java:227)
io.undertow.servlet.core.ManagedServlet.getServlet(ManagedServlet.java:169)
io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85)
io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131)
io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:58)
io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:72)
io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50)
io.undertow.security.handlers.SecurityInitialHandler.handleRequest(SecurityInitialHandler.java:76)
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:282)
io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:261)
io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:80)
io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:172)
io.undertow.server.Connectors.executeRootHandler(Connectors.java:199)
io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:774)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
java.lang.Thread.run(Thread.java:745)

2 个答案:

答案 0 :(得分:3)

当你有单独的ejb和war模块时,你应该使用远程接口。如果在war模块中包含ejb模块,则将创建两个ejb bean。 ejb打包在耳朵中,另一个打包在战争模块中包含的jar文件中。

在运行时,这很混乱,因为有两套具有不同类加载器的bean可用于war模块

答案 1 :(得分:0)

要能够使用@Local接口,请确保该接口仅在ear文件的lib文件夹中,而不在war文件内部的lib中。如果您使用的是Maven,则可以将依赖项范围设置为war项目的pom文件所提供的。