我正在使用Weblogic 10.3.5。当我在eclipse中本地部署我的Struts2应用程序时,它运行正常。当我尝试通过管理控制台部署我的应用程序时,出现Struts 2错误,找不到行动名称。
当我查看.war文件时,它包含所有库和类。我按照这些directions进行了管理控制台的部署。我可以通过管理控制台成功部署,但是当我尝试使用应用程序的测试链接时,我得到了同样的错误。如果我尝试通过网址访问该应用程序:
http://localhost:7001/app-name
我得到了同样的错误。
这是堆栈跟踪:
[[ACTIVE] ExecuteThread:'8'代表队列:'weblogic.kernel.Default (自我调整)'] WARN org.apache.struts2.dispatcher.Dispatcher - 可以 找不到动作或结果:/eServices/login.action没有动作 映射为名称空间[/]和与之关联的动作名称[login] 上下文路径[/ eServices]。 - [未知位置] at com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:185) 在 org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:63) 在 org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:37) 在 com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58) 在 org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:552) 在 org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77) 在 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:99) 在 weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) 在 oracle.security.jps.ee.http.JpsAbsFilter $ 1.run(JpsAbsFilter.java:111) 在java.security.AccessController.doPrivileged(Native Method)at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:313) 在 oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatformUtil.java:413) 在 oracle.security.jps.ee.http.JpsAbsFilter.runJaasMode(JpsAbsFilter.java:94) 在 oracle.security.jps.ee.http.JpsAbsFilter.doFilter(JpsAbsFilter.java:161) at oracle.security.jps.ee.http.JpsFilter.doFilter(JpsFilter.java:71) 在 weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) 在 oracle.dms.servlet.DMSServletFilter.doFilter(DMSServletFilter.java:136) 在 weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) 在 weblogic.servlet.internal.WebAppServletContext $ ServletInvocationAction.wrapRun(WebAppServletContext.java:3715) 在 weblogic.servlet.internal.WebAppServletContext $ ServletInvocationAction.run(WebAppServletContext.java:3681) 在 weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) 在 weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120) 在 weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2277) 在 weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2183) 在 weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1454) 在weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)at weblogic.work.ExecuteThread.run(ExecuteThread.java:178)
我做错了什么?为什么我在通过eclipse部署应用程序时可以访问该应用程序,但是当我通过管理控制台部署应用程序时,我无法访问该应用程序。
感谢您的帮助!
答案 0 :(得分:0)
当您尝试手动部署时,听起来像WEB-INF / classes中的struts.xml文件有些错误。破解你的.ear / .war文件,看看你的struts.xml中是什么(如果它存在的话)。 Eclipse可能会自动将其放入一个文件夹中,当您手动执行时,它不会被部署。以下是一个可供参考的工作示例:
<struts>
<constant name="struts.devMode" value="true" />
<package name="default" namespace="/" extends="struts-default">
<action name="myAction"
class="com.something.myAction" >
<result name="success">pages/myPage.jsp</result>
</action>
</package>
</struts>
如果项目根上下文是“app-name”,您可以通过以下URL访问上述操作:
http://domain:8080/app-name/myAction.action