带有开放JDK和Tomcat 9.0的Struts 2的java 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) 个答案