我有一个使用Struts2、Spring和JPA的Web应用程序。在应用程序中,我们使用注释。当我们在Eclipse中部署应用程序时,如果我们将其部署为虚拟应用程序(右键单击服务器,选择属性,选择WebLogic,选择发布模式),应用程序就可以正常运行。这个选项会生成一个_auto_generated_ear文件并正常运行应用程序。但是,如果我将其部署为已解压的归档文件或通过管理控制台手动部署为.war文件,我会收到以下错误消息:
[[活动] 执行线程:'8'用于队列:'weblogic.kernel.Default(self-tuning)'] 警告 org.apache.struts2.dispatcher.Dispatcher - 无法找到操作或结果:'/eServices/login.action' 没有与上下文路径[/eServices]和操作名称[login]映射的操作 - [未知位置] 在 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) 中 在 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) 中 在 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) 中 在 weblogic.work.ExecuteThread.run(ExecuteThread.java:178) 中
[[活动] 执行线程:'8'用于队列:'weblogic.kernel.Default(self-tuning)'] 警告 org.apache.struts2.dispatcher.Dispatcher - 无法找到操作或结果:'/eServices/login.action' 没有与上下文路径[/eServices]和操作名称[login]映射的操作 - [未知位置] 在 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) 中 在 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) 中 在 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) 中 在 weblogic.work.ExecuteThread.run(ExecuteThread.java:178) 中
有没有WebLogic专家可以在这方面指点一下? Struts2的Convention-plugin在WebLogic运行时是否存在问题?任何帮助都将不胜感激。先提前致谢。
更新:
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>eServices</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- Needed to manage the Java based @Configuration classes for Spring -->
<context-param>
<param-name>contextClass</param-name>
<param-value>
org.springframework.web.context.support.AnnotationConfigWebApplicationContext
</param-value>
</context-param>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>com.ceiwc.es.config</param-value>
</context-param>
<!-- Handles Strut2 URL requests -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<session-config>
<session-timeout>20</session-timeout>
</session-config>
</web-app>
struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<!-- Struts Constants that override the struts.properties file -->
<constant name="struts.devMode" value="false" />
<constant name="struts.custom.i18n.resources" value="global" />
<constant name="struts.ui.theme" value="simple" />
</struts>