You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by "Rob Leland (Jira)" <ji...@apache.org> on 2022/09/03 03:48:00 UTC

[jira] [Created] (TOMEE-4032) Class cast Exception when undeploying application with @PostConstruct LifeCycle

Rob Leland created TOMEE-4032:
---------------------------------

             Summary: Class cast Exception when undeploying application with @PostConstruct LifeCycle
                 Key: TOMEE-4032
                 URL: https://issues.apache.org/jira/browse/TOMEE-4032
             Project: TomEE
          Issue Type: Bug
          Components: TomEE Core Server
    Affects Versions: 9.0.0-M8, 9.0.0-M9
            Reporter: Rob Leland
         Attachments: Stack-9.0.0-M8.log, Stack-9.0.0-M9-Sept-02-2022-GitHash-68be80e.log

A Class cast Exception is occurring , see attachment ,when stopping the container. The app is using  using @PostConstruct & @EJB Annotation.

 

This does not occur with GlassFish, 6.2.5.

But does for:
ENV:

TomEE Plus & MicroProfile TC v10.0.21/TCE: 9.0.0-M8
With OpenJDK 11 & 17 Under Ubuntu 22.04.

( I also built a Nightly from 9/2/2022 GitHash: [68be80e|https://github.com/free2create/tomee/commit/68be80e60291468a1c196b503837921e59e64a87])  using java 17 and the same error Occurs, I have also attached stack trace for that also. The Line # are the same.


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

The Repo with this app 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.

 

To reproduce you just need to deploy the app, and shutdown tomcat, no need to exercise the application.

But if you did want to test the app this is the URL:

[http://localhost:8080/ch3-03-slsb-servlet-1.0.0/LoggerServlet]

 

 

 

*Relevant Code:*
{code:java}
______________
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
    }
}
 
{code}
 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)