You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by "Heidt, Larry" <La...@dematic.com.INVALID> on 2022/07/26 19:34:12 UTC

ActionServlet for Java 11

We have been given responsibility for several Java 6 webservices using Tomcat 6, in production at a customer site, which the customer has contracted us to upgrade to Java 11

This software currently includes a custom XxxxxxWebActionServlet class, which extends from an old version of org.apache.struts.action.ActionServlet

This old version of struts ActionServlet currently used in production, and our current production XxxxxxWebActionServlet, both import javax.servlet.* classes

For Java 11, we have upgraded our XxxxxxWebActionServlet to import jakarta.servlet.* classes

Our upgrade results in the run-time ClassCastException shown below (from Tomcat 10's localhost.yyyy-mm-dd.log)

Our guess is that this ClassCastException occurs because our upgraded XxxxxxWebActionServlet, which now imports jakarta.servlet.*, continues to extend from the same older version of struts ActionServlet which imports javax.servlet.* classes

After much web searching, we can't seem to find a version of org.apache.struts.action.ActionServlet which imports jakarta.servlet.*

The last version of org.apache.struts.action.ActionServlet that we can find (in https://archive.apache.org/dist/struts/1.3.10) imports javax.servlet.*

ActionFormValidationInterceptor.java in struts-2.3.20.1 imports (but does not seem to use) org.apache.struts.action.ActionServlet, but interestingly ActionServlet.java itself does not seem to be present within struts-2.3.20.1/src

#1)  At a low level, would a version of org.apache.struts.action.ActionServlet which imports jakarta.servlet.* exist somewhere else ?

#2)  At a higher level, is anyone aware of someone successfully upgrading from Struts 1 to Jakarta EE ?

#3)  If the answers to both #1 and #2 are "no", we'd be very appreciative of any suggestions for how to circumvent this ClassCastException

Thanks in advance very much for any assistance


22-Jun-2022 11:29:26.084 SEVERE [main] org.apache.catalina.core.StandardContext.loadOnStartup Servlet [action] in web application [/hkware] threw load() exception
                java.lang.ClassCastException: class com.irista.ui.web.jspframework.IristaWebActionServlet cannot be cast to class jakarta.servlet.Servlet (com.irista.ui.web.jspframework.IristaWebActionServlet is in unnamed module of loader org.apache.catalina.loader.ParallelWebappClassLoader @3ce3b176; jakarta.servlet.Servlet is in unnamed module of loader java.net.URLClassLoader @6ddf90b0)
                                at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1071)
                                at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1011)
                                at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4906)
                                at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5213)
                                at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
                                at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:726)
                                at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:698)
                                at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:747)
                                at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1027)
                                at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:2001)
                                at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
                                at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
                                at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
                                at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:118)
                                at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:828)
                                at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:478)
                                at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1708)
                                at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:320)
                                at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123)
                                at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:423)
                                at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:366)
                                at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:946)
                                at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:886)
                                at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
                                at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1396)
                                at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1386)
                                at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
                                at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
                                at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:140)
                                at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:919)
                                at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:263)
                                at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
                                at org.apache.catalina.core.StandardService.startInternal(StandardService.java:432)
                                at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
                                at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:927)
                                at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
                                at org.apache.catalina.startup.Catalina.start(Catalina.java:795)
                                at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                                at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
                                at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
                                at java.base/java.lang.reflect.Method.invoke(Method.java:566)
                                at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:345)
                                at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:476)

Re: ActionServlet for Java 11

Posted by Dave Newton <da...@gmail.com>.
On Tue, Jul 26, 2022 at 15:34 Heidt, Larry <La...@dematic.com.invalid>
wrote:

> #1)  At a low level, would a version of
> org.apache.struts.action.ActionServlet which imports jakarta.servlet.*
> exist somewhere else ?


Unlikely; the last S1 release was ~a decade before Java 11 was GA, and S1
was EOLed ~5 yrs before Java 11.

d.
-- 
em: davelnewton@gmail.com
mo: 908-380-8699
gh: davelnewton <https://github.com/davelnewton>
so: Dave Newton <http://stackoverflow.com/users/438992/dave-newton>
bl: Maker's End Blog <https://blog.makersend.com>