java - 在 JBoss 7.1.1 中使用 EJB 3.1 调用 Struts 2 Action 时获得 Struts 报告

标签 java jakarta-ee struts2 jboss ejb

我开发了一个EJB项目并将其打包为jar文件,然后我使用Struts 2.1.15.2创建了一个Web项目,并将jar文件放置在WebRoot/WEB-INF/lib目录中。我打算使用struts2-ejb3-plugin来集成它们。但是当我在Action中调用execute方法时,我得到了这样的Struts问题报告。

堆栈跟踪:

javax.ejb.EJBException: javax.naming.NamingException: [ENCJNDIName = java:comp/env/edu.sdau.tobacco.action.common.LoginAction/userDAORemote][defaultJNDIName = /UserDAORemote/remote]?????????
    cn.agrael.struts.plugin.ejb3.StrutsEJBActionProxyFactory.createActionProxy(StrutsEJBActionProxyFactory.java:33)
    com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58)
    org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:553)
    org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:99)
    org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280)
    org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248)
    org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275)
    org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161)
    org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50)
    org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153)
    org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368)
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877)
    org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671)
    org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930)
    java.lang.Thread.run(Thread.java:619)
    
javax.naming.NamingException: [ENCJNDIName = java:comp/env/edu.sdau.tobacco.action.common.LoginAction/userDAORemote][defaultJNDIName = /UserDAORemote/remote]?????????
    cn.agrael.struts.plugin.ejb3.AbstractApplicationServer.lookup(AbstractApplicationServer.java:107)
    cn.agrael.struts.plugin.ejb3.AbstractApplicationServer.fieldEJBAnnotationLookup(AbstractApplicationServer.java:30)
    cn.agrael.struts.plugin.ejb3.StrutsEJBUtils.fieldInject(StrutsEJBUtils.java:367)
    cn.agrael.struts.plugin.ejb3.StrutsEJBUtils.executeEJBInjectAnnotation(StrutsEJBUtils.java:270)
    cn.agrael.struts.plugin.ejb3.StrutsEJBActionProxyFactory.createActionProxy(StrutsEJBActionProxyFactory.java:25)
    com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58)
    org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:553)
    org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:99)
    org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280)
    org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248)
    org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275)
    org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161)
    org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50)
    org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153)
    org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368)
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877)
    org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671)
    org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930)
    java.lang.Thread.run(Thread.java:619)
    
You are seeing this page because development mode is enabled. Development mode, or `devMode`, enables extra debugging behaviors and reports to assist developers. To disable this mode, set:

  struts.devMode=false
in your WEB-INF/classes/struts.properties file.
<小时/>

这是struts2-ejb3-plugin.properties:

ENCPath=java:comp/env/
#ENCPath=ejb:/tobaccoWeb//
ejbContainer=cn.agrael.struts.plugin.ejb3.JbossApplicationServer
isParseResource=true
isParseEJB=true
earFileBaseName=
remote=remote
local=local

jboss-ejb-client.properties:

remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=false
remote.connections=default
remote.connection.default.host=localhost
remote.connection.default.port = 4447

jndi.properties:

remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false

最佳答案

您不应该这样做,而是创建一个 Java EE 项目并分别为 EJB 和 Web 添加模块。部署 Ear 后,JBoss 将发布 EJB,以便其他模块(即 Web 模块)可以访问它们的 JNDI。

关于java - 在 JBoss 7.1.1 中使用 EJB 3.1 调用 Struts 2 Action 时获得 Struts 报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19064233/

相关文章:

java - struts 2 : Action result. 如何在jsp上显示浏览器地址行链接?

java - Struts 2 原始类型的数据传输和类型转换

java - 如何从集合中删除

java - 是否可以传递 HttpServletrequest 属性来公开从 Controller 调用的方法

java - 将 Action 方法分解为多个函数?

java - J2EE Struts、Spring 和 Hibernate 框架问题

hibernate - ORA-01400 : Cannot insert null into (TABLE. 列)( hibernate )

c# - 从无线连接的 Arduino 异步绘制数据的最佳库或方法

java - 用于解析java中记录行的通用解析器

java - 解析器实现中 Document 的功能