oracle - 将 Struts2 应用程序部署到 Weblogic 12c

标签 oracle struts2 weblogic action-mapping

我有一个使用 Struts2、Spring 和 JPA 的 Web 应用程序。在应用程序中,我们使用注释。当我们在eclipse中部署应用程序时,如果我们将其部署为虚拟应用程序 (右键服务器,选择属性,选择WebLogic,选择 Release模式)应用程序运行良好 .此选项生成 _auto_generated_ear 文件并正常运行应用程序。 当我通过管理控制台将其部署为分解存档或手动将应用程序部署为 .war 文件时,我收到以下错误消息 :

[[ACTIVE] ExecuteThread: '8' for queue: 'weblogic.kernel.Default (self-tuning)'] WARN org.apache.struts2.dispatcher.Dispatcher - Could not find action or result: /eServices/login.action There is no Action mapped for namespace [/] and action name [login] associated with context path [/eServices]. - [unknown location] at com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:185) at org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:63) at org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:37) at com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58) at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:552) at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77) at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:99) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) at oracle.security.jps.ee.http.JpsAbsFilter$1.run(JpsAbsFilter.java:111) at java.security.AccessController.doPrivileged(Native Method) at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:313) at oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatformUtil.java:413) at oracle.security.jps.ee.http.JpsAbsFilter.runJaasMode(JpsAbsFilter.java:94) at oracle.security.jps.ee.http.JpsAbsFilter.doFilter(JpsAbsFilter.java:161) at oracle.security.jps.ee.http.JpsFilter.doFilter(JpsFilter.java:71) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) at oracle.dms.servlet.DMSServletFilter.doFilter(DMSServletFilter.java:136) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3715) at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3681) at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120) at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2277) at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2183) at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1454) at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209) at weblogic.work.ExecuteThread.run(ExecuteThread.java:178)



任何 WebLogic 专家都可以指出我正确的方向吗?在 WebLogic 中运行的 Struts2 的约定插件是否有问题?任何帮助将不胜感激。提前致谢。

更新:

网页.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>

最佳答案

这是最终有效的解决方案!我添加了以下 Struts2 属性:

<constant name="struts.convention.action.includeJars" value=".*?\.jar(!/|/)?" />
<constant name="struts.convention.action.fileProtocols" value="jar,zip" />
这是基于我在此 post 中发现的内容.
此外,将这个属性添加到 weblogic.xml 也有帮助:
<wls:container-descriptor>
    <wls:prefer-web-inf-classes>true</wls:prefer-web-inf-classes>
</wls:container-descriptor>
没有必须对我的项目执行此操作。
我希望这对 future 的人有所帮助!

关于oracle - 将 Struts2 应用程序部署到 Weblogic 12c,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25855241/

相关文章:

在Windows上配置Oracle预编译器

java - request.getParameter() 在 java servlet 中不能正确显示字符编码

java - 无法访问互联网的服务器上的 Tiles DTD 解析失败

java - 无法指定 JMS 队列的目标,因此可能会得到

oracle - 在 'IN' 子句中使用绑定(bind)变量

SQLite:类似于 Oracle 解码或 MS "If"

java - Oracle 1.8 CachedRowSet.populate 错误,其中从双选择 systimestamp

java - 数组的 Struts2 验证

java - struts2变量仅在javascript中被调用一次

java - 使用 weblogic.security.encrypt 实用程序对不同的多个 weblogic 实例加密明文字符串