I was wong, the deployed context under eclipse and under tomcat
autonomous instance were not identical at all.
Form some reason when eclipse deploys the web application copy the class
files under WEB-INF/services/<servicename> under WEB-INF/classes, so
the tomcat class loading finds classes were expected
------------------
Hello all.
I have developed a web application using Eclipse as an IDE and test
environment and it runs as expected.
Then I have built a war file and deployed it under another Tomcat instance.
In both case tomcat version is 8.5
Under this last instance the application can't start and in the log
files I find:
07-Sep-2023 07:48:18.173 SEVERE [http-nio-8080-exec-129]
org.apache.catalina.core.StandardContext.listenerStart Error
configuring application listener of class
[it.archimede.met.obliterazione.zse.servlet.CreaConnessione]
java.lang.ClassNotFoundException:
it.archimede.met.obliterazione.zse.servlet.CreaConnessione
at
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1358)
at
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1180)
at
org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:545)
at
org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:526)
at
org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:150)
at
org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4613)
at
org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5155)
at
org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at
org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:743)
at
org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:719)
at
org.apache.catalina.core.StandardHost.addChild(StandardHost.java:705)
at
org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:614)
at
org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:486)
at
org.apache.catalina.startup.HostConfig.check(HostConfig.java:1634)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:607)
at
org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:286)
at
com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
at
com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
at
org.apache.catalina.manager.ManagerServlet.check(ManagerServlet.java:1562)
at
org.apache.catalina.manager.ManagerServlet.deploy(ManagerServlet.java:990)
at
org.apache.catalina.manager.HTMLManagerServlet.deployInternal(HTMLManagerServlet.java:320)
at
org.apache.catalina.manager.HTMLManagerServlet.doPost(HTMLManagerServlet.java:209)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at
org.apache.catalina.filters.CsrfPreventionFilter.doFilter(CsrfPreventionFilter.java:211)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at
org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:109)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:668)
at
org.apache.catalina.valves.RequestFilterValve.process(RequestFilterValve.java:348)
at
org.apache.catalina.valves.RemoteAddrValve.invoke(RemoteAddrValve.java:52)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
at
org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at
org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:615)
at
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
at
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:818)
at
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1626)
at
org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:622)
at
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
I have compared the war file I have built and doesn't work with the
version deployed under Eclipse and they are identical.
In web.xml, of course I have in both cases:
<listener>
<listener-class>it.archimede.met.obliterazione.zse.servlet.CreaConnessione</listener-class>
</listener>
I have to mention that this class files is not deployed in
WEB-INF/classes but in WEB-INF/services, since is part of a web service
developed using Axis2.
Axis2 configuration is the same in both environment.
I can understand it is a classloading issue but I cannot understand why
two tomcat instances behave differently with the same application.
TIA
--
Archimede Informatica tratta i dati personali in conformità a quanto
stabilito dal Regolamento UE n. 2016/679 (GDPR) e dal D. Lgs. 30 giugno
2003 n. 196
per come modificato dal D.Lgs. 10 agosto 2018 n. 101.
Informativa completa
<http://www.archicoop.it/fileadmin/pdf/InformativaTrattamentoDatiPersonali.pdf>
dott. Ivano Mario Luberti
Archimede Informatica società cooperativa a r. l.
Via Gereschi 36, 56127 Pisa
tel.: +39 050/580959 | fax: +39 050/8932061
web: www.archicoop.it
linkedin: www.linkedin.com/in/ivanoluberti
facebook: www.facebook.com/archimedeinformaticapisa/