Uploaded image for project: 'Application Server 3  4  5 and 6'
  1. Application Server 3 4 5 and 6
  2. JBAS-200

hotdeploy, CMP and classloader problem

    XMLWordPrintable

Details

    Description

      SourceForge Submitter: rvigniel .
      there are problems while redeploying EJBs with custom
      types.
      here is an example:

      my EJB:
      public
      abstract class TestEJB implements javax.ejb.EntityBean
      {
      ...
      public abstract java.lang.Integer getId();
      public
      abstract void setId(java.lang.Integer id);

      public abstract
      CustomData getData();
      public abstract void
      setData(CustomData data);
      ...
      }

      my class
      CustomData:
      public class CustomData implements
      java.io.Serializable {

      private String name;
      private
      byte[] rawdata;
      ...
      }

      I create an EJB instance, which
      is correctly stored and read.
      then I redeploy (hot deploy) my
      application, without any change and without restarting the jboss
      server.
      when I try to get an EJB, I get the following
      errors:

      2002-07-29 12:13:37,498 DEBUG
      [org.jboss.ejb.plugins.cmp.jdbc.JDBCLoadEntityCommand.Test]
      Executing SQL: SELECT data FROM test WHERE
      (id=?)
      2002-07-29 12:13:37,526 WARN
      [org.jboss.jetty.Jetty] WARNING: Servlet Exception for
      /admin/testCustom.jsp
      java.lang.reflect.UndeclaredThrowableException
      at
      $Proxy172.getId(Unknown Source)
      at
      org.apache.jsp.testCustom$jsp._jspService(testCustom$jsp.java:70)
      at
      org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:107)
      at
      javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
      at
      org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:201)
      at
      org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:381)
      at
      org.apache.jasper.servlet.JspServlet.service(JspServlet.java:473)
      at
      javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
      at
      org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:371)
      at
      org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:613)
      at
      org.mortbay.http.HttpContext.handle(HttpContext.java:1387)
      at
      org.mortbay.jetty.servlet.FilterHandler$Chain.doFilter(FilterHandler.java:368)
      at
      org.mortbay.jetty.servlet.FilterHandler.handle(FilterHandler.java:228)
      at
      org.mortbay.http.HttpContext.handle(HttpContext.java:1387)
      at
      org.mortbay.http.HttpContext.handle(HttpContext.java:1326)
      at
      org.mortbay.http.HttpServer.service(HttpServer.java:757)
      at
      org.jboss.jetty.Jetty.service(Jetty.java:528)
      at
      org.mortbay.http.HttpConnection.service(HttpConnection.java:741)
      at
      org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:914)
      at
      org.mortbay.http.HttpConnection.handle(HttpConnection.java:756)
      at
      org.mortbay.http.SocketListener.handleConnection(SocketListener.java:151)
      at
      org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:287)
      at
      org.mortbay.util.ThreadPool$JobRunner.run(ThreadPool.java:715)
      at
      java.lang.Thread.run(Thread.java:536)
      Caused by:
      java.rmi.ServerException: Internal error getting results for field
      member data; CausedByException is:
      Got a
      test.CustomData: 'test.CustomData@5268d7' while looking for
      a test.CustomData; nested exception
      is:
      javax.ejb.EJBException: Internal error getting results for
      field member data; CausedByException is:
      Got a
      test.CustomData: 'test.CustomData@5268d7' while looking for
      a test.CustomData
      at
      org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:119)
      at
      org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:176)
      at
      org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:61)
      at
      org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:129)
      at
      org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:183)
      at
      org.jboss.ejb.EntityContainer.invoke(EntityContainer.java:493)
      at
      org.jboss.ejb.plugins.local.BaseLocalContainerInvoker.invoke(BaseLocalContainerInvoker.java:296)
      at
      org.jboss.ejb.plugins.local.EntityProxy.invoke(EntityProxy.java:38)
      ...
      24 more
      Caused by: javax.ejb.EJBException: Internal error
      getting results for field member data; CausedByException
      is:
      Got a test.CustomData: 'test.CustomData@5268d7'
      while looking for a test.CustomData
      at
      org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCAbstractCMPFieldBridge.loadArgumentResults(JDBCAbstractCMPFieldBridge.java:360)
      at
      org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCAbstractCMPFieldBridge.loadInstanceResults(JDBCAbstractCMPFieldBridge.java:304)
      at
      org.jboss.ejb.plugins.cmp.jdbc.JDBCLoadEntityCommand.execute(JDBCLoadEntityCommand.java:142)
      at
      org.jboss.ejb.plugins.cmp.jdbc.JDBCLoadEntityCommand.execute(JDBCLoadEntityCommand.java:62)
      at
      org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.loadEntity(JDBCStoreManager.java:572)
      at
      org.jboss.ejb.plugins.CMPPersistenceManager.loadEntity(CMPPersistenceManager.java:410)
      at
      org.jboss.resource.connectionmanager.CachedConnectionInterceptor.loadEntity(CachedConnectionInterceptor.java:353)
      at
      org.jboss.ejb.plugins.EntitySynchronizationInterceptor.invoke(EntitySynchronizationInterceptor.java:262)
      at
      org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:186)
      at
      org.jboss.ejb.plugins.EntityInstanceInterceptor.invoke(EntityInstanceInterceptor.java:152)
      at
      org.jboss.ejb.plugins.EntityLockInterceptor.invoke(EntityLockInterceptor.java:107)
      at
      org.jboss.ejb.plugins.EntityCreationInterceptor.invoke(EntityCreationInterceptor.java:69)
      at
      org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:96)
      ...
      31 more

      if I restart the jboss server, everything is ok, I
      can get my EJBs without any problem.

      the line
      "Got a
      test.CustomData: 'test.CustomData@5268d7' while looking for
      a test.CustomData;"
      make me think this may be a
      classloader problem, there may be two instances of the class
      "test.CustomData" in two different classloaders.

      i'm
      using jboss3.0.1RC1 with jdk1.4.0-b92 on linux
      RH7.3

      I tried with current cvs HEAD revision, I get the
      same kind of errors with more details:

      2002-07-29
      14:11:19,680 ERROR [org.jboss.ejb.plugins.LogInterceptor]
      EJBException, causedBy:
      java.sql.SQLException: Got a
      test.CustomData: 'test.CustomData@b5ac2c' while looking for
      a test.CustomData
      at
      org.jboss.ejb.plugins.cmp.jdbc.JDBCUtil.coerceToJavaType(JDBCUtil.java:457)
      at
      org.jboss.ejb.plugins.cmp.jdbc.JDBCUtil.getResult(JDBCUtil.java:327)
      at
      org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCAbstractCMPFieldBridge.loadArgumentResults(JDBCAbstractCMPFieldBridge.java:350)
      at
      org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCAbstractCMPFieldBridge.loadInstanceResults(JDBCAbstractCMPFieldBridge.java:304)
      at
      org.jboss.ejb.plugins.cmp.jdbc.JDBCLoadEntityCommand.execute(JDBCLoadEntityCommand.java:142)
      at
      org.jboss.ejb.plugins.cmp.jdbc.JDBCLoadEntityCommand.execute(JDBCLoadEntityCommand.java:62)
      at
      org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.loadEntity(JDBCStoreManager.java:572)
      at
      org.jboss.ejb.plugins.CMPPersistenceManager.loadEntity(CMPPersistenceManager.java:410)
      at
      org.jboss.resource.connectionmanager.CachedConnectionInterceptor.loadEntity(CachedConnectionInterceptor.java:353)
      at
      org.jboss.ejb.plugins.EntitySynchronizationInterceptor.invoke(EntitySynchronizationInterceptor.java:262)
      at
      org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:186)
      at
      org.jboss.ejb.plugins.EntityInstanceInterceptor.invoke(EntityInstanceInterceptor.java:152)
      at
      org.jboss.ejb.plugins.EntityLockInterceptor.invoke(EntityLockInterceptor.java:107)
      at
      org.jboss.ejb.plugins.EntityCreationInterceptor.invoke(EntityCreationInterceptor.java:69)
      at
      org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:108)
      at
      org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:179)
      at
      org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:61)
      at
      org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:130)
      at
      org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:204)
      at
      org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderInterceptor.java:154)
      at
      org.jboss.ejb.EntityContainer.invoke(EntityContainer.java:481)
      at
      org.jboss.ejb.plugins.local.BaseLocalProxyFactory.invoke(BaseLocalProxyFactory.java:351)
      at
      org.jboss.ejb.plugins.local.EntityProxy.invoke(EntityProxy.java:38)
      at
      $Proxy36.getId(Unknown Source)
      at
      org.apache.jsp.testCustom$jsp._jspService(testCustom$jsp.java:70)
      at
      org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:107)
      at
      javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
      at
      org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:201)
      at
      org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:381)
      at
      org.apache.jasper.servlet.JspServlet.service(JspServlet.java:473)
      at
      javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
      at
      org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:348)
      at
      org.mortbay.jetty.servlet.WebApplicationHandler.handle(WebApplicationHandler.java:312)
      at
      org.mortbay.http.HttpContext.handle(HttpContext.java:1572)
      at
      org.mortbay.http.HttpContext.handle(HttpContext.java:1512)
      at
      org.mortbay.http.HttpServer.service(HttpServer.java:792)
      at
      org.jboss.jetty.Jetty.service(Jetty.java:531)
      at
      org.mortbay.http.HttpConnection.service(HttpConnection.java:784)
      at
      org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:941)
      at
      org.mortbay.http.HttpConnection.handle(HttpConnection.java:799)
      at
      org.mortbay.http.SocketListener.handleConnection(SocketListener.java:182)
      at
      org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:322)
      at
      org.mortbay.util.ThreadPool$JobRunner.run(ThreadPool.java:713)
      at
      java.lang.Thread.run(Thread.java:536)
      2002-07-29
      14:11:19,704 WARN [org.jboss.jbossweb] WARNING:
      Exception for
      /testCustom/testCustom.jsp
      javax.ejb.EJBException:
      Internal error getting results for field member data;
      CausedByException is:
      Got a test.CustomData:
      'test.CustomData@b5ac2c' while looking for a
      test.CustomData
      at
      org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCAbstractCMPFieldBridge.loadArgumentResults(JDBCAbstractCMPFieldBridge.java:360)
      at
      org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCAbstractCMPFieldBridge.loadInstanceResults(JDBCAbstractCMPFieldBridge.java:304)
      at
      org.jboss.ejb.plugins.cmp.jdbc.JDBCLoadEntityCommand.execute(JDBCLoadEntityCommand.java:142)
      at
      org.jboss.ejb.plugins.cmp.jdbc.JDBCLoadEntityCommand.execute(JDBCLoadEntityCommand.java:62)
      at
      org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.loadEntity(JDBCStoreManager.java:572)
      at
      org.jboss.ejb.plugins.CMPPersistenceManager.loadEntity(CMPPersistenceManager.java:410)
      at
      org.jboss.resource.connectionmanager.CachedConnectionInterceptor.loadEntity(CachedConnectionInterceptor.java:353)
      at
      org.jboss.ejb.plugins.EntitySynchronizationInterceptor.invoke(EntitySynchronizationInterceptor.java:262)
      at
      org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:186)
      at
      org.jboss.ejb.plugins.EntityInstanceInterceptor.invoke(EntityInstanceInterceptor.java:152)
      at
      org.jboss.ejb.plugins.EntityLockInterceptor.invoke(EntityLockInterceptor.java:107)
      at
      org.jboss.ejb.plugins.EntityCreationInterceptor.invoke(EntityCreationInterceptor.java:69)
      at
      org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:108)
      at
      org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:179)
      at
      org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:61)
      at
      org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:130)
      at
      org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:204)
      at
      org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderInterceptor.java:154)
      at
      org.jboss.ejb.EntityContainer.invoke(EntityContainer.java:481)
      at
      org.jboss.ejb.plugins.local.BaseLocalProxyFactory.invoke(BaseLocalProxyFactory.java:351)
      at
      org.jboss.ejb.plugins.local.EntityProxy.invoke(EntityProxy.java:38)
      at
      $Proxy36.getId(Unknown Source)
      at
      org.apache.jsp.testCustom$jsp._jspService(testCustom$jsp.java:70)
      at
      org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:107)
      at
      javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
      at
      org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:201)
      at
      org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:381)
      at
      org.apache.jasper.servlet.JspServlet.service(JspServlet.java:473)
      at
      javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
      at
      org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:348)
      at
      org.mortbay.jetty.servlet.WebApplicationHandler.handle(WebApplicationHandler.java:312)
      at
      org.mortbay.http.HttpContext.handle(HttpContext.java:1572)
      at
      org.mortbay.http.HttpContext.handle(HttpContext.java:1512)
      at
      org.mortbay.http.HttpServer.service(HttpServer.java:792)
      at
      org.jboss.jetty.Jetty.service(Jetty.java:531)
      at
      org.mortbay.http.HttpConnection.service(HttpConnection.java:784)
      at
      org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:941)
      at
      org.mortbay.http.HttpConnection.handle(HttpConnection.java:799)
      at
      org.mortbay.http.SocketListener.handleConnection(SocketListener.java:182)
      at
      org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:322)
      at
      org.mortbay.util.ThreadPool$JobRunner.run(ThreadPool.java:713)
      at
      java.lang.Thread.run(Thread.java:536)
      java.sql.SQLException:
      Got a test.CustomData: 'test.CustomData@b5ac2c' while
      looking for a test.CustomData
      at
      org.jboss.ejb.plugins.cmp.jdbc.JDBCUtil.coerceToJavaType(JDBCUtil.java:457)
      at
      org.jboss.ejb.plugins.cmp.jdbc.JDBCUtil.getResult(JDBCUtil.java:327)
      at
      org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCAbstractCMPFieldBridge.loadArgumentResults(JDBCAbstractCMPFieldBridge.java:350)
      at
      org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCAbstractCMPFieldBridge.loadInstanceResults(JDBCAbstractCMPFieldBridge.java:304)
      at
      org.jboss.ejb.plugins.cmp.jdbc.JDBCLoadEntityCommand.execute(JDBCLoadEntityCommand.java:142)
      at
      org.jboss.ejb.plugins.cmp.jdbc.JDBCLoadEntityCommand.execute(JDBCLoadEntityCommand.java:62)
      at
      org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.loadEntity(JDBCStoreManager.java:572)
      at
      org.jboss.ejb.plugins.CMPPersistenceManager.loadEntity(CMPPersistenceManager.java:410)
      at
      org.jboss.resource.connectionmanager.CachedConnectionInterceptor.loadEntity(CachedConnectionInterceptor.java:353)
      at
      org.jboss.ejb.plugins.EntitySynchronizationInterceptor.invoke(EntitySynchronizationInterceptor.java:262)
      at
      org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:186)
      at
      org.jboss.ejb.plugins.EntityInstanceInterceptor.invoke(EntityInstanceInterceptor.java:152)
      at
      org.jboss.ejb.plugins.EntityLockInterceptor.invoke(EntityLockInterceptor.java:107)
      at
      org.jboss.ejb.plugins.EntityCreationInterceptor.invoke(EntityCreationInterceptor.java:69)
      at
      org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:108)
      at
      org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:179)
      at
      org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:61)
      at
      org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:130)
      at
      org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:204)
      at
      org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderInterceptor.java:154)
      at
      org.jboss.ejb.EntityContainer.invoke(EntityContainer.java:481)
      at
      org.jboss.ejb.plugins.local.BaseLocalProxyFactory.invoke(BaseLocalProxyFactory.java:351)
      at
      org.jboss.ejb.plugins.local.EntityProxy.invoke(EntityProxy.java:38)
      at
      $Proxy36.getId(Unknown Source)
      at
      org.apache.jsp.testCustom$jsp._jspService(testCustom$jsp.java:70)
      at
      org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:107)
      at
      javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
      at
      org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:201)
      at
      org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:381)
      at
      org.apache.jasper.servlet.JspServlet.service(JspServlet.java:473)
      at
      javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
      at
      org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:348)
      at
      org.mortbay.jetty.servlet.WebApplicationHandler.handle(WebApplicationHandler.java:312)
      at
      org.mortbay.http.HttpContext.handle(HttpContext.java:1572)
      at
      org.mortbay.http.HttpContext.handle(HttpContext.java:1512)
      at
      org.mortbay.http.HttpServer.service(HttpServer.java:792)
      at
      org.jboss.jetty.Jetty.service(Jetty.java:531)
      at
      org.mortbay.http.HttpConnection.service(HttpConnection.java:784)
      at
      org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:941)
      at
      org.mortbay.http.HttpConnection.handle(HttpConnection.java:799)
      at
      org.mortbay.http.SocketListener.handleConnection(SocketListener.java:182)
      at
      org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:322)
      at
      org.mortbay.util.ThreadPool$JobRunner.run(ThreadPool.java:713)
      at
      java.lang.Thread.run(Thread.java:536)

      you can find a
      example in the application file attached:
      1- deploy the
      application
      2- exectute the jsp file
      /testCustom/testCustom.jsp. this will create a new ejb. if the ejb
      already exists, the jsp just show the ejb content
      3- redeploy the
      application (with a 'touch testCustom.ear' for example)
      4-
      execute the jsp. you will get the error
      5- restart jboss server and
      execute jsp, now everything is ok...

      Attachments

        Activity

          People

            starksm64 Scott Stark (Inactive)
            sourceforge-user SourceForge legacy user (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: