Java Struts 2应用程序在通过管理控制台部署时出错
我正在使用mavenized struts 2/spring应用程序运行weblogic 10.3.5。当通过eclipse发布到服务器时,应用程序运行良好,但当我将应用程序导出到.war文件并通过管理控制台部署并运行它时,会出现以下stacktrace错误 [[ACTIVE]ExecuteThread:'8'用于队列:'weblogic.kernel.Default' (自调整)“]WARN org.apache.struts2.dispatcher.dispatcher-可能 找不到操作或结果:/eServices/login.action没有操作 映射了与关联的命名空间[/]和操作名称[login] 上下文路径[/e服务]。-[未知位置]位于 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.strutspreadexecutefilter.doFilter(strutspreadexecutefilter.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(本机方法) oracle.security.jps.util.jpssObject.doAsPrivileged(jpssObject.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) 我发现有几篇帖子建议在我的类路径中添加struts.properties文件和以下配置,但没有解决我的问题 struts.convention.action.mapAllMatches=true struts.convention.action.includeJars=.?/eServices.?jar(!/)? struts.convention.action.fileProtocols=jar,zip 任何有助于理解或解决此问题的帮助都将非常有用!:) 下面是我的struts.xml,我使用了基于注释的配置将操作映射到结果Java Struts 2应用程序在通过管理控制台部署时出错,java,spring,struts2,weblogic-10.x,action-mapping,Java,Spring,Struts2,Weblogic 10.x,Action Mapping,我正在使用mavenized struts 2/spring应用程序运行weblogic 10.3.5。当通过eclipse发布到服务器时,应用程序运行良好,但当我将应用程序导出到.war文件并通过管理控制台部署并运行它时,会出现以下stacktrace错误 [[ACTIVE]ExecuteThread:'8'用于队列:'weblogic.kernel.Default' (自调整)“]WARN org.apache.struts2.dispatcher.dispatcher-可能 找不到操作或结
<!-- 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" />
<!-- <constant name="struts.ui.theme" value="css_xhtml" /> -->
以下是web.xml文件:
<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>
e服务
index.jsp
org.springframework.web.context.ContextLoaderListener
上下文类
org.springframework.web.context.support.AnnotationConfigWebApplicationContext
上下文配置位置
com.ceiwc.es.config
支柱2
org.apache.struts2.dispatcher.ng.filter.strutspreadexecutefilter
支柱2
/*
这是最终奏效的解决方案!我添加了以下Struts2属性:
<constant name="struts.convention.action.includeJars" value=".*?\.jar(!/|/)?" />
<constant name="struts.convention.action.fileProtocols" value="jar,zip" />
这是基于我在这里发现的
此外,将此属性添加到weblogic.xml也可能有所帮助:
<wls:container-descriptor>
<wls:prefer-web-inf-classes>true</wls:prefer-web-inf-classes>
</wls:container-descriptor>
真的
我已经用struts.xml更新了这篇文章。我想重复一下,我使用了基于注释的配置,所以我没有太多关于这个文件的内容@AndreaLigiosPlease,也显示您的web.xml。。。以及login.java/.class在目录中的位置tree@AndreaLigios我再次更新了web.xml。Login.java位于src/main/java-->com.packagename-->Login.java内。一定有某种weblogic配置,因为通过eclipse部署应用程序时运行良好。我不清楚您是否试图使用约定插件(Struts2注释)或Spring工具来实例化操作。在这两种情况下,都可能会缺少一些内容:按照惯例,您可能需要一个名为struts、struts2、action或actions的包作为注释扫描的根文件夹;对于Spring,我总是看到Spring以另一种方式管理struts2操作,并最终以另一种方式进行实例化。。。(你可以在上面找到它们)。请澄清问题以获得更好的帮助+1对于工作btwhello@AndreaLigios,所有操作都由spring实例化和管理。据我所知,唯一使用的struts2注释是定义操作及其相应结果的@action
和@results
,以及定义操作名称空间的@Namespace
。