Summary:

I am seeing the Class cast Exception shown at the bottom when stopping the
container.
The tomee profile I downloaded seems to have the required EE jars under
tomee/lib.

I tried the code on GlassFish 6.2.5 and did not see this error.


Note:
The  code I am working  with is 2  classes, see below, is from a Book on
Jakarta Persistence.
There may be come issues with the code itself since the Servlet is not
Displayed , but that may also be due to my setup I am still checking.

The WAR WEB-INF/lib folder only has Derby Jars nothing else.

The Repo with this code is at:
https://github.com/free2create/pro-jakarta-persistence-jakarta-ee10

It uses maven to build and after building you would want to deploy:
examples/Chapter3/03-slsbLifecycleExample/servlet/target/ WAR file.

______________
LoggerBean.java:
______________
package examples.stateless;

import jakarta.annotation.PostConstruct;
import jakarta.ejb.Stateless;
import java.util.logging.Logger;

@Stateless
public class LoggerBean {
    private Logger logger;

    @PostConstruct
    private void init() {
        logger = Logger.getLogger("notification");
    }

    public void logMessage(String message) {
        logger.info(message);
    }
}
_____________
LoggerServlet.java
_____________

package examples.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.naming.InitialContext;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.annotation.WebServlet;
import jakarta.ejb.EJB;

import examples.stateless.LoggerBean;

@WebServlet(name="LoggerServlet",
            urlPatterns="/LoggerServlet")
public class LoggerServlet extends HttpServlet {

    private final String TITLE =
        "Chapter 3: Stateless Session Bean Lifecycle Example";

    private final String DESCRIPTION =
        "This example demonstrates the basic use of lifecycle callbacks to
initialize a Stateless Session Bean. </br>" +
        "Enter a and click 'Go'.  This will trigger a servlet client that
talks " +
        "to a Stateless Session Bean to log a message.";

    @EJB LoggerBean logger;

    public void doGet(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        printHtmlHeader(out);

        // if there was a message submitted, log it
        String message = request.getParameter("message");
        if (message != null) {
            // use the logger bean to log a message
            logger.logMessage(message);
            out.println("Message '" + message + "' sent to logger.  " +
            "See the output on the server console or the log file at
&lt;SERVER_ROOT&gt;/glassfish/domains/domain1/logs/server.log.");
        }

        printHtmlFooter(out);
    }


    private void printHtmlHeader(PrintWriter out) throws IOException {
        //Code Deleted
    }


    private void printHtmlFooter(PrintWriter out) throws IOException {
        //Code Deleted
    }
}

__________________________________________
Exception
__________________________________________



02-Sep-2022 16:38:17.996 WARNING [main]
org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesObjectStreamClassCaches
Failed to clear soft references from ObjectStreamClass$Caches for web
application [ch3-03-slsb-servlet-1.0.0]
java.lang.ClassCastException: class java.io.ObjectStreamClass$Caches$1
cannot be cast to class java.util.Map (java.io.ObjectStreamClass$Caches$1
and java.util.Map are in module java.base of loader 'bootstrap')
at
org.apache.catalina.loader.WebappClassLoaderBase.clearCache(WebappClassLoaderBase.java:2374)
at
org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesObjectStreamClassCaches(WebappClassLoaderBase.java:2349)
at
org.apache.catalina.loader.WebappClassLoaderBase.clearReferences(WebappClassLoaderBase.java:1711)
at
org.apache.catalina.loader.WebappClassLoaderBase.stop(WebappClassLoaderBase.java:1639)
at
org.apache.tomee.catalina.TomEEWebappClassLoader.internalStop(TomEEWebappClassLoader.java:306)
at
org.apache.tomee.catalina.TomcatWebAppBuilder.afterStop(TomcatWebAppBuilder.java:2149)
at
org.apache.tomee.catalina.GlobalListenerSupport.lifecycleEvent(GlobalListenerSupport.java:127)
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.stop(LifecycleBase.java:265)
at
org.apache.catalina.core.ContainerBase$StopChild.call(ContainerBase.java:1412)
at
org.apache.catalina.core.ContainerBase$StopChild.call(ContainerBase.java:1401)
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:145)
at
org.apache.catalina.core.ContainerBase.stopInternal(ContainerBase.java:986)
at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:257)
at
org.apache.catalina.core.ContainerBase$StopChild.call(ContainerBase.java:1412)
at
org.apache.catalina.core.ContainerBase$StopChild.call(ContainerBase.java:1401)
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:145)
at
org.apache.catalina.core.ContainerBase.stopInternal(ContainerBase.java:986)
at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:257)
at
org.apache.catalina.core.StandardService.stopInternal(StandardService.java:497)
at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:257)
at
org.apache.catalina.core.StandardServer.stopInternal(StandardServer.java:979)
at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:257)
at org.apache.catalina.startup.Catalina.stop(Catalina.java:872)
at org.apache.catalina.startup.Catalina.start(Catalina.java:834)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)
at
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:345)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:476)

Reply via email to