7 Replies Latest reply on Nov 30, 2010 7:02 AM by Max Rydahl Andersen

    jboss hot-deploy limitations

    nimo stephan Master

      Am I right with the assumption that jboss-hot-deploy does not support to handle the import.sql script when starting the server?

       

      However, import.sql is within the hot-deploy folder. But when starting the server, I get this error:

      (When using maven-deploy and start the server without hot-deploying via jboss-tools,

      then executing of import script: /import.sql is successfully.)

       

      My persistence.xml has this entry:

       

      <property name="hibernate.hbm2ddl.auto" value="create-drop"/>

       

      I get this error only when using hot-deploy:


      09:44:42,133 INFO  [SchemaExport] Running hbm2ddl schema export
      09:44:42,133 INFO  [SchemaExport] exporting generated schema to database
      09:44:42,133 INFO  [SchemaExport] Executing import script: /import.sql
      09:44:42,133 ERROR [SchemaExport] schema export unsuccessful: org.hibernate.JDBCException: Error during import script execution at line 1
          at org.hibernate.tool.hbm2ddl.SchemaExport.importScript(SchemaExport.java:370) [:3.6.0.Final]
          at org.hibernate.tool.hbm2ddl.SchemaExport.execute(SchemaExport.java:276) [:3.6.0.Final]
          at org.hibernate.tool.hbm2ddl.SchemaExport.create(SchemaExport.java:219) [:3.6.0.Final]
          at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:370) [:3.6.0.Final]
          at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1842) [:3.6.0.Final]
          at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:902) [:3.6.0.Final]
          at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:74) [:3.6.0.Final]
          at org.jboss.jpa.builder.DefaultCEMFBuilder.build(DefaultCEMFBuilder.java:47) [:1.0.2-alpha-1]
          at org.jboss.as.jpa.scanner.HackCEMFBuilder.build(HackCEMFBuilder.java:49) [:6.0.0.20101110-CR1]
          at org.jboss.jpa.deployment.PersistenceUnitDeployment.start(PersistenceUnitDeployment.java:275) [:1.0.2-alpha-1]
          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [:1.6.0_21]
          at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [:1.6.0_21]
          at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [:1.6.0_21]
          at java.lang.reflect.Method.invoke(Method.java:597) [:1.6.0_21]
          at org.jboss.reflect.plugins.introspection.ReflectionUtils.invoke(ReflectionUtils.java:60) [jboss-reflect.jar:2.2.0.Alpha9]
          at org.jboss.reflect.plugins.introspection.ReflectMethodInfoImpl.invoke(ReflectMethodInfoImpl.java:168) [jboss-reflect.jar:2.2.0.Alpha9]
          at org.jboss.joinpoint.plugins.BasicMethodJoinPoint.dispatch(BasicMethodJoinPoint.java:66) [jboss-reflect.jar:2.2.0.Alpha9]
          at org.jboss.kernel.plugins.dependency.KernelControllerContextAction$JoinpointDispatchWrapper.execute(KernelControllerContextAction.java:257) [jboss-kernel.jar:2.2.0.Alpha10]
          at org.jboss.kernel.plugins.dependency.ExecutionWrapper.execute(ExecutionWrapper.java:47) [jboss-kernel.jar:2.2.0.Alpha10]
          at org.jboss.kernel.plugins.dependency.KernelControllerContextAction.dispatchExecutionWrapper(KernelControllerContextAction.java:125) [jboss-kernel.jar:2.2.0.Alpha10]
          at org.jboss.kernel.plugins.dependency.KernelControllerContextAction.dispatchJoinPoint(KernelControllerContextAction.java:72) [jboss-kernel.jar:2.2.0.Alpha10]
          at org.jboss.kernel.plugins.dependency.LifecycleAction.installActionInternal(LifecycleAction.java:202) [jboss-kernel.jar:2.2.0.Alpha10]
          at org.jboss.kernel.plugins.dependency.InstallsAwareAction.installAction(InstallsAwareAction.java:54) [jboss-kernel.jar:2.2.0.Alpha10]
          at org.jboss.kernel.plugins.dependency.InstallsAwareAction.installAction(InstallsAwareAction.java:42) [jboss-kernel.jar:2.2.0.Alpha10]
          at org.jboss.dependency.plugins.action.SimpleControllerContextAction.simpleInstallAction(SimpleControllerContextAction.java:62) [jboss-dependency.jar:2.2.0.Alpha10]
          at org.jboss.dependency.plugins.action.AccessControllerContextAction.install(AccessControllerContextAction.java:71) [jboss-dependency.jar:2.2.0.Alpha10]
          at org.jboss.dependency.plugins.AbstractControllerContextActions.install(AbstractControllerContextActions.java:51) [jboss-dependency.jar:2.2.0.Alpha10]
          at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:379) [jboss-dependency.jar:2.2.0.Alpha10]
          at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:2044) [jboss-dependency.jar:2.2.0.Alpha10]
          at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:1083) [jboss-dependency.jar:2.2.0.Alpha10]
          at org.jboss.dependency.plugins.AbstractController.executeOrIncrementStateDirectly(AbstractController.java:1322) [jboss-dependency.jar:2.2.0.Alpha10]
          at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1246) [jboss-dependency.jar:2.2.0.Alpha10]
          at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1139) [jboss-dependency.jar:2.2.0.Alpha10]
          at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:894) [jboss-dependency.jar:2.2.0.Alpha10]
          at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:641) [jboss-dependency.jar:2.2.0.Alpha10]
          at org.jboss.deployers.vfs.deployer.kernel.BeanMetaDataDeployer.deploy(BeanMetaDataDeployer.java:182) [:2.2.0.Alpha8]
          at org.jboss.deployers.vfs.deployer.kernel.BeanMetaDataDeployer.deploy(BeanMetaDataDeployer.java:58) [:2.2.0.Alpha8]
          at org.jboss.deployers.spi.deployer.helpers.AbstractSimpleRealDeployer.internalDeploy(AbstractSimpleRealDeployer.java:62) [:2.2.0.Alpha8]
          at org.jboss.deployers.spi.deployer.helpers.AbstractRealDeployer.deploy(AbstractRealDeployer.java:55) [:2.2.0.Alpha8]
          at org.jboss.deployers.plugins.deployers.DeployerWrapper.deploy(DeployerWrapper.java:179) [:2.2.0.Alpha8]
          at org.jboss.deployers.plugins.deployers.DeployersImpl.doDeploy(DeployersImpl.java:1832) [:2.2.0.Alpha8]
          at org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:1550) [:2.2.0.Alpha8]
          at org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:1571) [:2.2.0.Alpha8]
          at org.jboss.deployers.plugins.deployers.DeployersImpl.install(DeployersImpl.java:1491) [:2.2.0.Alpha8]
          at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:379) [jboss-dependency.jar:2.2.0.Alpha10]
          at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:2044) [jboss-dependency.jar:2.2.0.Alpha10]
          at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:1083) [jboss-dependency.jar:2.2.0.Alpha10]
          at org.jboss.dependency.plugins.AbstractController.executeOrIncrementStateDirectly(AbstractController.java:1322) [jboss-dependency.jar:2.2.0.Alpha10]
          at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1246) [jboss-dependency.jar:2.2.0.Alpha10]
          at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1139) [jboss-dependency.jar:2.2.0.Alpha10]
          at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:939) [jboss-dependency.jar:2.2.0.Alpha10]
          at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:654) [jboss-dependency.jar:2.2.0.Alpha10]
          at org.jboss.deployers.plugins.deployers.DeployersImpl.change(DeployersImpl.java:1983) [:2.2.0.Alpha8]
          at org.jboss.deployers.plugins.deployers.DeployersImpl.process(DeployersImpl.java:1076) [:2.2.0.Alpha8]
          at org.jboss.deployers.plugins.main.MainDeployerImpl.process(MainDeployerImpl.java:679) [:2.2.0.Alpha8]
          at org.jboss.system.server.profileservice.deployers.MainDeployerPlugin.process(MainDeployerPlugin.java:106) [:6.0.0.20101110-CR1]
          at org.jboss.profileservice.dependency.ProfileControllerContext$DelegateDeployer.process(ProfileControllerContext.java:130) [:0.1.0.Alpha1]
          at org.jboss.profileservice.dependency.ProfileDeployAction.deploy(ProfileDeployAction.java:148) [:0.1.0.Alpha1]
          at org.jboss.profileservice.dependency.ProfileDeployAction.installActionInternal(ProfileDeployAction.java:94) [:0.1.0.Alpha1]
          at org.jboss.kernel.plugins.dependency.InstallsAwareAction.installAction(InstallsAwareAction.java:54) [jboss-kernel.jar:2.2.0.Alpha10]
          at org.jboss.kernel.plugins.dependency.InstallsAwareAction.installAction(InstallsAwareAction.java:42) [jboss-kernel.jar:2.2.0.Alpha10]
          at org.jboss.dependency.plugins.action.SimpleControllerContextAction.simpleInstallAction(SimpleControllerContextAction.java:62) [jboss-dependency.jar:2.2.0.Alpha10]
          at org.jboss.dependency.plugins.action.AccessControllerContextAction.install(AccessControllerContextAction.java:71) [jboss-dependency.jar:2.2.0.Alpha10]
          at org.jboss.dependency.plugins.AbstractControllerContextActions.install(AbstractControllerContextActions.java:51) [jboss-dependency.jar:2.2.0.Alpha10]
          at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:379) [jboss-dependency.jar:2.2.0.Alpha10]
          at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:2044) [jboss-dependency.jar:2.2.0.Alpha10]
          at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:1083) [jboss-dependency.jar:2.2.0.Alpha10]
          at org.jboss.dependency.plugins.AbstractController.executeOrIncrementStateDirectly(AbstractController.java:1322) [jboss-dependency.jar:2.2.0.Alpha10]
          at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1246) [jboss-dependency.jar:2.2.0.Alpha10]
          at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1139) [jboss-dependency.jar:2.2.0.Alpha10]
          at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:939) [jboss-dependency.jar:2.2.0.Alpha10]
          at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:654) [jboss-dependency.jar:2.2.0.Alpha10]
          at org.jboss.profileservice.dependency.ProfileServiceController.activate(ProfileServiceController.java:188) [:0.1.0.Alpha1]
          at org.jboss.profileservice.AbstractProfileService.activateProfile(AbstractProfileService.java:170) [:0.1.0.Alpha1]
          at org.jboss.profileservice.bootstrap.AbstractProfileServiceBootstrap.activate(AbstractProfileServiceBootstrap.java:117) [:0.1.0.Alpha1]
          at org.jboss.profileservice.resolver.BasicResolverFactory$ProfileResolverFacade.deploy(BasicResolverFactory.java:89) [:0.1.0.Alpha1]
          at org.jboss.profileservice.bootstrap.AbstractProfileServiceBootstrap.start(AbstractProfileServiceBootstrap.java:97) [:0.1.0.Alpha1]
          at org.jboss.system.server.profileservice.bootstrap.BasicProfileServiceBootstrap.start(BasicProfileServiceBootstrap.java:130) [:6.0.0.20101110-CR1]
          at org.jboss.system.server.profileservice.bootstrap.BasicProfileServiceBootstrap.start(BasicProfileServiceBootstrap.java:56) [:6.0.0.20101110-CR1]
          at org.jboss.bootstrap.impl.base.server.AbstractServer.startBootstraps(AbstractServer.java:827) [jboss-bootstrap-impl-base.jar:2.1.0-alpha-5]
          at org.jboss.bootstrap.impl.base.server.AbstractServer$StartServerTask.run(AbstractServer.java:417) [jboss-bootstrap-impl-base.jar:2.1.0-alpha-5]
          at java.lang.Thread.run(Thread.java:619) [:1.6.0_21]
      Caused by: java.sql.SQLException: Table not found in statement [insert into Widget]
          at org.hsqldb.jdbc.Util.sqlException(Unknown Source) [:6.0.0.20101110-CR1]
          at org.hsqldb.jdbc.jdbcStatement.fetchResult(Unknown Source) [:6.0.0.20101110-CR1]
          at org.hsqldb.jdbc.jdbcStatement.execute(Unknown Source) [:6.0.0.20101110-CR1]
          at org.jboss.resource.adapter.jdbc.WrappedStatement.execute(WrappedStatement.java:91) [:6.0.0.20101110-CR1]
          at org.hibernate.tool.hbm2ddl.SchemaExport.importScript(SchemaExport.java:366) [:3.6.0.Final]
          ... 81 more

        • 1. Re: jboss hot-deploy limitations
          Max Rydahl Andersen Master

          The stacktrace shows that import.sql is being run so it is running so yes, it supports it.

           

          The problem is more about if there are any database configuration differences between the two runs ?

          • 2. Re: jboss hot-deploy limitations
            nimo stephan Master

            "The problem is more about if there are any database configuration differences between the two runs ?"

             

            No, there are no differences!

             

            I am using exactly this maven archetype (I did not manually edit it!):

             

            group id:

            org.jboss.weld.archetype

            artifact id:

            weld-jsf-jee

             

             

            There is a import.sql script.

             

            You can use this maven project to trace the failure:

             

            When deploying with maven and do NOT "add" the project to the jboss tools "add and remove.."-dialog  for synchronization,

            then the import.sql script works without problems.

             

            When NOT using maven and "add" the project to the jboss tools "add and remove.."-dialog for synchronization,

            then the jboss throws the error described above.

             

            (I am using jboss as 6 rc1 and jboss tools 3.2 beta (actual snapshot) )

            • 3. Re: jboss hot-deploy limitations
              Max Rydahl Andersen Master

              From what im seeing the import.sql *is* being run - "insert into Widget" comes from your import.sql, right ?

               

              If that fails then something is different in the setup somehow - I can't say what that is based on the stacktrace would need the full project and server config.

               

              btw. Add te project to the server from tools just means copy the deployment to the server in exploded form by default.

               

              Have you compared what your maven deployment and the exploded deployment contains ? maybe there are some differences here ?

              • 4. Re: jboss hot-deploy limitations
                nimo stephan Master

                okay, it works now!

                I deleted the tmp-folder and the work-directory of jboss and made a new (successfully) retry.

                 

                 

                I have only one question:

                 

                Do I need to make a "Full publish" when changing source code which has annotations

                (for example, Weld, Restfull WS,...)?

                 

                For example:

                 

                I hot deployed the war with the class "RestResource" and can point to http://localhost/mywar/rest/txt which shows "Hello WebService".

                 

                After that, I change the source-code of the class "RestResource.java" from

                 

                @Path("rest")
                public class RestResource {


                    @GET
                    @Path("txt")
                    @Produces("text/plain")
                    public String getResource()

                    {

                            return "Hello WebService";
                    }


                }

                 

                 

                to

                 

                @Path("rest")
                public class RestResource {


                     @GET
                     @Path("txt")
                     @Produces("text/plain")
                     public String getResource()

                    {

                            return "Hello WebService HOT DEPLOY";
                     }

                 

                }

                 

                I can see, Jboss Tools does the update of the RestResource.class in my hot-deployed-folder automatically (timestamp of that class is changed).

                 

                However, when I go to http://localhost/mywar/rest/txt, the text of my old source-code is shown: "Hello WebService" instead of "Hello WebService HOT DEPLOY".


                • 5. Re: jboss hot-deploy limitations
                  Max Rydahl Andersen Master

                  Yes, annotations aren't dynamically read.

                   

                  You can use the "Touch" icon in the menu for a project to touch the descriptor and trigger a redeploy.

                   

                  p.s. Seam components is an exception for this, if you put the components in the /hot folder it will be reread (assuming it only has Seam annotations)

                  • 6. Re: jboss hot-deploy limitations
                    nimo stephan Master

                    Oh, so the "Touch" icon is the same as a "full publish" !

                     

                    yes, now I am comming closer to really understand the hot-deployment of jboss tools.

                     

                    Thank you very much!

                    • 7. Re: jboss hot-deploy limitations
                      Max Rydahl Andersen Master

                      No, full publish means "Copy *everything* again" and by that effect a restart of the module occurs because the descriptor were touched.

                       

                      "Touch" just touches the descriptor so its faster (at least for large projects)