有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

带有开放JDK和Tomcat 9.0的Struts 2的java Servlet API转换问题

Package comparison between TomEE servlet ApI vs Tomcat Servlet API我正在迁移结构1&;EJB 2.0、JDK 1.6 websphere应用程序,用于打开JDK 1.8、Structs 2.5和TomEE应用程序服务器

迁移的第一步,我只模拟了一个指向OpenJDK1.8的项目用例,现在正在通过逐个添加依赖JAR从Struts 1.1升级到Struts 2.5

这是我的网站。xml


<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4"
    xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <display-name>project</display-name>
    <filter>
        <filter-name>project</filter-name>
        <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>eRFQ</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    
    <!-- <servlet>
        <servlet-name>action</servlet-name>
        <servlet-class>com.company.production.core.ActionServlet</servlet-class>
        <init-param>
            <param-name>config</param-name>
            <param-value>/WEB-INF/struts-config.xml</param-value>
        </init-param>
        <init-param>
            <param-name>validate</param-name>
            <param-value>true</param-value>
        </init-param>
        <load-on-startup>2</load-on-startup>
    </servlet> -->
    
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
    </welcome-file-list>
    <error-page>
        <error-code>401</error-code>
        <location>/jsp/AuthorizationError.jsp</location>
    </error-page>

我有一个简单的家。只有标题

这是我的支柱。xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
    "http://struts.apache.org/dtds/struts-2.5.dtd">

<struts>
    <constant name="struts.devMode" value="true" />
    <constant name="struts.ui.theme" value="simple" />
    <constant name="struts.custom.i18n.resources"
        value="com.toyota.owkmessaging.resources.ApplicationResources" />

    <package name="home" namespace="/home" extends="struts-default">
        <action name="homeForm" class="com.company.production.project.action.HomeAction" method="execute">
            <result name = "success">/Home.jsp</result>
        </action>
    </package>
    
</struts>

我正在部署上面的设置TomEE Plume 9.0。当从web加载Structs筛选器时,我面临一个问题。xml间接引用servlet api(来自tomcat lib目录)到servlet api的E版本(过滤器类打包在jakarta.servlet.Filter中),包引用如下快照所示

错误:

SEVERE: Exception starting filter [project]
java.lang.ClassCastException: org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter cannot be cast to jakarta.servlet.Filter
    at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:249)
    at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:102)
    at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4536)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5173)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1384)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1374)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
    at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:909)
    at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:841)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1384)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1374)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
    at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:909)
    at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.StandardService.startInternal(StandardService.java:421)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:930)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:633)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:343)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:474)

Aug 06, 2020 7:14:59 AM sun.reflect.NativeMethodAccessorImpl invoke
SEVERE: One or more Filters failed to start. Full details will be found in the appropriate container log file
Aug 06, 2020 7:14:59 AM sun.reflect.NativeMethodAccessorImpl invoke
SEVERE: Context [/eRFQ] startup failed due to previous errors
Aug 06, 2020 7:14:59 AM com.sun.faces.config.ConfigureListener contextDestroyed
WARNING: Unexpected state during contextDestroyed: no ConfigManager instance in current ServletContext but one is expected to exist.

以上问题有什么解决办法吗


共 (0) 个答案