5 Replies Latest reply on Dec 7, 2005 4:45 AM by ibeveridge

    Problems with redeployment.

    neilalbiston

      I'm using JBOSS 3.2.5 ( with jGroups 2.2.8 and jCache 1.2.3 )
      There is a strangs 'feature' which affects hot deployment on all of our systems.
      the initial deployment of an application is OK. The application loads onto all nodes in the cluster without errors and appears to run OK.
      The problem appears on an upgrade.
      The new ear is copied to the farm directory of one node.
      Each node appears to undeploy and redeploy sucessfullly. There are no errors in the server.log.....but

      The new application churns out lots of ???? not bound errors whenever the naming service is called.
      e.g. 2005-09-13 14:48:08,519 INFO [STDOUT] javax.naming.NameNotFoundException: env not bound
      ..
      I've noticed that , in the tmp/deploy directory , the old applications ear file disappears but the old applications ear-contents directory does not. As if something is holding on to part of the old version of the application.
      ...Clue 2 there is also a warning towards the end of the undeployment stage....
      2005-09-13 14:47:59,878 INFO [org.jboss.ejb.EjbModule] Undeployed: CustomPropertiesCmp
      2005-09-13 14:47:59,879 INFO [org.jboss.ejb.EjbModule] Undeployed: CommunitiesCmp
      2005-09-13 14:47:59,880 INFO [org.jboss.ejb.EjbModule] Undeployed: OperatorChargebandsCmp
      2005-09-13 14:47:59,942 INFO [org.jboss.deployment.EARDeployer] Init J2EE application: file:/home/neil/jboss/server/dialogue/farm/200-SamsManager.ear
      2005-09-13 14:48:00,445 WARN [org.jboss.deployment.DeploymentInfo] Only the root deployment can set the loader repository, ingoring config=null
      2005-09-13 14:48:00,454 DEBUG [uk.dialogue.api.sams.mbean.SamsLogsService] Constructor has been executed
      ....
      Shut the jboss server down and restart and everything is fine. But until this little feature has been removed we've lost hot deployment ( which was very nice to have ).

      Any pointers appreciated.

      Neil

        • 1. Re: Problems with redeployment.
          neilalbiston

          Here is the jboss-service xml... just in case it helps.

          <?xml version="1.0" encoding="UTF-8"?>
          
          <!-- $Id: jboss-service.xml,v 1.59.2.43 2004/01/03 16:21:25 jhaynie Exp $ -->
          
          <!-- ===================================================================== -->
          <!-- JBoss Server Configuration -->
          <!-- ===================================================================== -->
          
          <server>
          
           <!-- Load all jars from the JBOSS_DIST/server/<config>/lib directory. This
           can be restricted to specific jars by specifying them in the archives
           attribute.
           -->
           <classpath codebase="lib" archives="*"/>
          
          
           <!-- ==================================================================== -->
           <!-- JSR-77 Single JBoss Server Management Domain -->
           <!-- ==================================================================== -->
           <mbean code="org.jboss.management.j2ee.LocalJBossServerDomain"
           name="jboss.management.local:j2eeType=J2EEDomain,name=Manager">
           <attribute name="MainDeployer">jboss.system:service=MainDeployer</attribute>
           <attribute name="SARDeployer">jboss.system:service=ServiceDeployer</attribute>
           <attribute name="EARDeployer">jboss.j2ee:service=EARDeployer</attribute>
           <attribute name="EJBDeployer">jboss.ejb:service=EJBDeployer</attribute>
           <attribute name="RARDeployer">jboss.jca:service=RARDeployer</attribute>
           <attribute name="CMDeployer">jboss.jca:service=ConnectionFactoryDeployer</attribute>
           <attribute name="WARDeployer">jboss.web:service=WebServer</attribute>
           <attribute name="MailService">jboss:service=Mail</attribute>
           <attribute name="JMSService">jboss.mq:service=DestinationManager</attribute>
           <attribute name="JNDIService">jboss:service=Naming</attribute>
           <attribute name="JTAService">jboss:service=TransactionManager</attribute>
           <attribute name="UserTransactionService">jboss:service=ClientUserTransaction</attribute>
           <attribute name="RMI_IIOPService">jboss:service=CorbaORB</attribute>
           </mbean>
          
           <!-- Preload all custom editors for VMs that don't use the thread
           context class loader when searching for PropertyEditors. Uncomment
           if your JDK 1.3.0 VM fails to find JBoss PropertyEditors.
           <mbean code="org.jboss.varia.property.PropertyEditorManagerService"
           name="jboss:type=Service,name=BootstrapEditors">
           <attribute name="BootstrapEditors">
           java.math.BigDecimal=org.jboss.util.propertyeditor.BigDecimalEditor
           java.lang.Boolean=org.jboss.util.propertyeditor.BooleanEditor
           java.lang.Class=org.jboss.util.propertyeditor.ClassEditor
           java.util.Date=org.jboss.util.propertyeditor.DateEditor
           java.io.File=org.jboss.util.propertyeditor.FileEditor
           java.net.InetAddress=org.jboss.util.propertyeditor.InetAddressEditor
           java.lang.Integer=org.jboss.util.propertyeditor.IntegerEditor
           javax.management.ObjectName=org.jboss.mx.util.propertyeditor.ObjectNameEditor
           java.util.Properties=org.jboss.util.propertyeditor.PropertiesEditor
           [Ljava.lang.String;=org.jboss.util.propertyeditor.StringArrayEditor
           java.net.URL=org.jboss.util.propertyeditor.URLEditor
           </attribute>
           </mbean>
           -->
          
           <!-- ==================================================================== -->
           <!-- Log4j Initialization -->
           <!-- ==================================================================== -->
          
           <mbean code="org.jboss.logging.Log4jService"
           name="jboss.system:type=Log4jService,service=Logging">
           <attribute name="ConfigurationURL">resource:log4j.xml</attribute>
           <!-- Set the org.apache.log4j.helpers.LogLog.setQuiteMode. As of log4j1.2.8
           this needs to be set to avoid a possible deadlock on exception at the
           appender level. See bug#696819.
           -->
           <attribute name="Log4jQuietMode">true</attribute>
           </mbean>
          
           <!-- ==================================================================== -->
           <!-- JBoss RMI Classloader - only install when available -->
           <!-- ==================================================================== -->
           <mbean code="org.jboss.util.property.jmx.SystemPropertyClassValue"
           name="jboss.rmi:type=RMIClassLoader">
           <attribute name="Property">java.rmi.server.RMIClassLoaderSpi</attribute>
           <attribute name="ClassName">org.jboss.system.JBossRMIClassLoader</attribute>
           </mbean>
          
           <!-- ==================================================================== -->
           <!-- Service Binding -->
           <!-- ==================================================================== -->
          
           <!-- Automatically activated when generatting the clustering environment -->
           <!-- @TESTSUITE_CLUSTER_CONFIG@ -->
          
           <!--
           | Binding service manager for port/host mapping. This is a sample
           | config that demonstrates a JBoss instances with a server name 'jboss1'
           | loading its bindings from an XML file using the ServicesStoreFactory
           | implementation returned by the XMLServicesStoreFactory.
           |
           | ServerName: The unique name assigned to a JBoss server instance for
           | lookup purposes. This allows a single ServicesStore to handle mulitiple
           | JBoss servers.
           |
           | StoreURL: The URL string passed to org.jboss.services.binding.ServicesStore
           | during initialization that specifies how to connect to the bindings store.
           | StoreFactory: The org.jboss.services.binding.ServicesStoreFactory interface
           | implementation to create to obtain the ServicesStore instance.
          
           <mbean code="org.jboss.services.binding.ServiceBindingManager"
           name="jboss.system:service=ServiceBindingManager">
           <attribute name="ServerName">ports-01</attribute>
           <attribute name="StoreURL">../docs/examples/binding-manager/sample-bindings.xml</attribute>
           <attribute name="StoreFactoryClassName">
           org.jboss.services.binding.XMLServicesStoreFactory
           </attribute>
           </mbean>
          
           -->
          
          
           <!-- ==================================================================== -->
           <!-- Class Loading -->
           <!-- ==================================================================== -->
          
           <mbean code="org.jboss.web.WebService"
           name="jboss:service=WebService">
           <attribute name="Port">8083</attribute>
           <!-- Should resources and non-EJB classes be downloadable -->
           <attribute name="DownloadServerClasses">true</attribute>
           <attribute name="Host">${jboss.bind.address}</attribute>
           <attribute name="BindAddress">${jboss.bind.address}</attribute>
           </mbean>
          
           <!-- ==================================================================== -->
           <!-- JNDI -->
           <!-- ==================================================================== -->
          
           <mbean code="org.jboss.naming.NamingService"
           name="jboss:service=Naming">
           <!-- The listening port for the bootstrap JNP service. Set this to -1
           to run the NamingService without the JNP invoker listening port.
           -->
           <attribute name="Port">1099</attribute>
           <!-- The bootstrap JNP server bind address. This also sets the default
           RMI service bind address. Empty == all addresses
           -->
           <attribute name="BindAddress">${jboss.bind.address}</attribute>
           <!-- The port of the RMI naming service, 0 == anonymous -->
           <attribute name="RmiPort">1098</attribute>
           <!-- The RMI service bind address. Empty == all addresses
           -->
           <attribute name="RmiBindAddress">${jboss.bind.address}</attribute>
           </mbean>
          
           <mbean code="org.jboss.naming.JNDIView"
           name="jboss:service=JNDIView"
           xmbean-dd="resource:xmdesc/JNDIView-xmbean.xml">
           </mbean>
          
           <!-- ==================================================================== -->
           <!-- Security -->
           <!-- ==================================================================== -->
          
           <mbean code="org.jboss.security.plugins.SecurityConfig"
           name="jboss.security:service=SecurityConfig">
           <attribute name="LoginConfig">jboss.security:service=XMLLoginConfig</attribute>
           </mbean>
           <mbean code="org.jboss.security.auth.login.XMLLoginConfig"
           name="jboss.security:service=XMLLoginConfig">
           <attribute name="ConfigResource">login-config.xml</attribute>
           </mbean>
          
           <!-- JAAS security manager and realm mapping -->
           <mbean code="org.jboss.security.plugins.JaasSecurityManagerService"
           name="jboss.security:service=JaasSecurityManager">
           <attribute name="SecurityManagerClassName">
           org.jboss.security.plugins.JaasSecurityManager
           </attribute>
           </mbean>
          
           <!-- ==================================================================== -->
           <!-- Transactions -->
           <!-- ==================================================================== -->
           <!-- The configurable Xid factory. For use with Oracle, set pad to true -->
           <mbean code="org.jboss.tm.XidFactory"
           name="jboss:service=XidFactory">
           <!--attribute name="Pad">true</attribute-->
           </mbean>
          
           <!--
           | The fast in-memory transaction manager.
           -->
           <mbean code="org.jboss.tm.TransactionManagerService"
           name="jboss:service=TransactionManager"
           xmbean-dd="resource:xmdesc/TransactionManagerService-xmbean.xml">
           <attribute name="TransactionTimeout">300</attribute>
          
           <depends optional-attribute-name="XidFactory">jboss:service=XidFactory</depends>
           </mbean>
          
           <!--
           | UserTransaction support.
           -->
           <mbean code="org.jboss.tm.usertx.server.ClientUserTransactionService"
           name="jboss:service=ClientUserTransaction"
           xmbean-dd="resource:xmdesc/ClientUserTransaction-xmbean.xml">
           <depends>
           <mbean code="org.jboss.invocation.jrmp.server.JRMPProxyFactory"
           name="jboss:service=proxyFactory,target=ClientUserTransactionFactory">
           <attribute name="InvokerName">jboss:service=invoker,type=jrmp</attribute>
           <attribute name="TargetName">jboss:service=ClientUserTransaction</attribute>
           <attribute name="JndiName">UserTransactionSessionFactory</attribute>
           <attribute name="ExportedInterface">org.jboss.tm.usertx.interfaces.UserTransactionSessionFactory</attribute>
           <attribute name="ClientInterceptors">
           <interceptors>
           <interceptor>org.jboss.proxy.ClientMethodInterceptor</interceptor>
           <interceptor>org.jboss.invocation.InvokerInterceptor</interceptor>
           </interceptors>
           </attribute>
           <depends>jboss:service=invoker,type=jrmp</depends>
           </mbean>
           </depends>
           <depends optional-attribute-name="TxProxyName">
           <mbean code="org.jboss.invocation.jrmp.server.JRMPProxyFactory"
           name="jboss:service=proxyFactory,target=ClientUserTransaction">
           <attribute name="InvokerName">jboss:service=invoker,type=jrmp</attribute>
           <attribute name="TargetName">jboss:service=ClientUserTransaction</attribute>
           <attribute name="JndiName"></attribute>
           <attribute name="ExportedInterface">org.jboss.tm.usertx.interfaces.UserTransactionSession</attribute>
           <attribute name="ClientInterceptors">
           <interceptors>
           <interceptor>org.jboss.proxy.ClientMethodInterceptor</interceptor>
           <interceptor>org.jboss.invocation.InvokerInterceptor</interceptor>
           </interceptors>
           </attribute>
           <depends>jboss:service=invoker,type=jrmp</depends>
           </mbean>
           </depends>
          
           </mbean>
          
           <!-- ==================================================================== -->
           <!-- Invokers to the JMX node -->
           <!-- ==================================================================== -->
          
           <!-- RMI/JRMP invoker -->
           <mbean code="org.jboss.invocation.jrmp.server.JRMPInvoker"
           name="jboss:service=invoker,type=jrmp">
           <attribute name="RMIObjectPort">4444</attribute>
           <attribute name="ServerAddress">${jboss.bind.address}</attribute>
           <!--
           <attribute name="RMIClientSocketFactory">custom</attribute>
           <attribute name="RMIServerSocketFactory">custom</attribute>
           <attribute name="SecurityDomain">ssl-domain-name</attribute>
           -->
          
           <depends>jboss:service=TransactionManager</depends>
           </mbean>
          
           <mbean code="org.jboss.invocation.local.LocalInvoker"
           name="jboss:service=invoker,type=local">
          
           <depends>jboss:service=TransactionManager</depends>
           </mbean>
          
           <mbean code="org.jboss.invocation.pooled.server.PooledInvoker"
           name="jboss:service=invoker,type=pooled">
           <attribute name="NumAcceptThreads">1</attribute>
           <attribute name="MaxPoolSize">300</attribute>
           <attribute name="ClientMaxPoolSize">300</attribute>
           <attribute name="SocketTimeout">60000</attribute>
           <attribute name="ServerBindAddress">${jboss.bind.address}</attribute>
           <attribute name="ServerBindPort">4445</attribute>
           <attribute name="ClientConnectAddress">${jboss.bind.address}</attribute>
           <attribute name="ClientConnectPort">0</attribute>
           <attribute name="EnableTcpNoDelay">false</attribute>
          
           <depends optional-attribute-name="TransactionManagerService">jboss:service=TransactionManager</depends>
           </mbean>
          
           <!-- ==================================================================== -->
           <!-- The deployers... -->
           <!-- ==================================================================== -->
          
           <!-- EJB deployer, remove to disable EJB behavior-->
           <mbean code="org.jboss.ejb.EJBDeployer" name="jboss.ejb:service=EJBDeployer">
           <attribute name="VerifyDeployments">true</attribute>
           <attribute name="ValidateDTDs">false</attribute>
           <attribute name="MetricsEnabled">false</attribute>
           <attribute name="VerifierVerbose">true</attribute>
          
           <!--
           StrictVerifier: Setting this to 'true' will cause all deployments
           to fail when the Verifier detected a problem with the contained
           Beans.
           -->
           <attribute name="StrictVerifier">false</attribute>
          
           <depends optional-attribute-name="TransactionManagerServiceName">jboss:service=TransactionManager</depends>
           <depends optional-attribute-name="WebServiceName">jboss:service=WebService</depends>
           </mbean>
          
           <!-- EAR deployer, remove if you are not using Web layers -->
           <mbean code="org.jboss.deployment.EARDeployer" name="jboss.j2ee:service=EARDeployer">
           </mbean>
          
           <mbean code="org.jboss.varia.deployment.BeanShellSubDeployer"
           name="jboss.scripts:service=BSHDeployer">
           </mbean>
          
           <!-- ==================================================================== -->
           <!-- Monitoring and Management -->
           <!-- ==================================================================== -->
          
           <!-- Uncomment to enable JMX monitoring of the bean cache
           <mbean code="org.jboss.monitor.BeanCacheMonitor"
           name="jboss.monitor:name=BeanCacheMonitor"/>
           -->
          
           <!-- Uncomment to enable JMX monitoring of the entity bean locking-->
           <mbean code="org.jboss.monitor.EntityLockMonitor"
           name="jboss.monitor:name=EntityLockMonitor"/>
          
           <!-- ==================================================================== -->
           <!-- Deployment Scanning -->
           <!-- ==================================================================== -->
          
           <!-- An mbean for hot deployment/undeployment of archives.
           -->
           <mbean code="org.jboss.deployment.scanner.URLDeploymentScanner"
           name="jboss.deployment:type=DeploymentScanner,flavor=URL">
          
           <!-- Uncomment (and comment/remove version below) to enable usage of the
           DeploymentCache
           <depends optional-attribute-name="Deployer">jboss.deployment:type=DeploymentCache</depends>
           -->
           <depends optional-attribute-name="Deployer">jboss.system:service=MainDeployer</depends>
          
           <!-- The URLComparator can be used to specify a deployment ordering
           for deployments found in a scanned directory. The class specified
           must be an implementation of java.util.Comparator, it must be able
           to compare two URL objects, and it must have a no-arg constructor.
           Two deployment comparators are shipped with JBoss:
           - org.jboss.deployment.DeploymentSorter
           Sorts by file extension, as follows:
           "sar", "service.xml", "rar", "jar", "war", "wsr", "ear", "zip",
           "*"
           - org.jboss.deployment.scanner.PrefixDeploymentSorter
           If the name portion of the url begins with 1 or more digits, those
           digits are converted to an int (ignoring leading zeroes), and
           files are deployed in that order. Files that do not start with
           any digits will be deployed first, and they will be sorted by
           extension as above with DeploymentSorter.
           -->
           <attribute name="URLComparator">org.jboss.deployment.DeploymentSorter</attribute>
           <!--
           <attribute name="URLComparator">org.jboss.deployment.scanner.PrefixDeploymentSorter</attribute>
           -->
          
           <!-- The Filter specifies a java.io.FileFilter for scanned
           directories. Any file not accepted by this filter will not be
           deployed. The org.jboss.deployment.scanner.DeploymentFilter
           rejects the following patterns:
           "#*", "%*", ",*", ".*", "_$*", "*#", "*$", "*%", "*.BAK",
           "*.old", "*.orig", "*.rej", "*.bak", "*,v", "*~", ".make.state",
           ".nse_depinfo", "CVS", "CVS.admin", "RCS", "RCSLOG", "SCCS",
           "TAGS", "core", "tags"
           -->
           <attribute name="Filter">org.jboss.deployment.scanner.DeploymentFilter</attribute>
          
           <attribute name="ScanPeriod">5000</attribute>
          
           <!-- URLs are comma separated and resolve relative to the server home URL
           unless the given path is absolute. If the URL ends in "/" it is
           considered a collection and scanned, otherwise it is simply deployed;
           this follows RFC2518 convention and allows discrimination between
           collections and directories that are simply unpacked archives.
          
           URLs may be local (file:) or remote (http:). Scanning is supported
           for remote URLs but unpacked deployment units are not.
          
           Example URLs:
           deploy/
           scans ${jboss.server.url}/deploy/, which is local or remote
           depending on the URL used to boot the server
           ${jboss.server.home}/deploy/
           scans ${jboss.server.home)/deploy, which is always local
           file:/var/opt/myapp.ear
           deploy myapp.ear from a local location
           file:/var/opt/apps/
           scans the specified directory
           http://www.test.com/netboot/myapp.ear
           deploys myapp.ear from a remote location
           http://www.test.com/netboot/apps/
           scans the specified WebDAV location
           -->
           <attribute name="URLs">
           deploy/
           </attribute>
          
           <!-- Indicates if the scanner should recursively scan directories that
           contain no "." in their names. This can be used to group applications
           and services that must be deployed and that have the same
           logical function in the same directory i.e.
           deploy/JMX/
           deploy/JMS/
           ...
           -->
           <attribute name="RecursiveSearch">True</attribute>
           </mbean>
          
          
          <!-- <mbean code="uk.dialogue.api.sams.mbean.SamsSchedulerServiceMBean" name="jboss:type=example,name=schedulable" xmbean-dd="">
           </mbean>
           <mbean code="org.jboss.util.Scheduler" name="jboss:service=Scheduler">
           <attribute name="StartAtStartup">true</attribute>
           <attribute name="SchedulableMBean">jboss:type=example,name=schedulable</attribute>
           <attribute name="SchedulableMBeanMethod">perform(DATE,REPETITIONS)</attribute>
           <attribute name="InitialStartDate">NOW</attribute>
           <attribute name="SchedulePeriod">10000</attribute>
           <attribute name="InitialRepetitions">10</attribute>
           </mbean>
          
          <mbean code="org.jboss.varia.scheduler.Scheduler"
           name="dialogue:service=MyService">
           <attribute name="StartAtStartup">true</attribute>
           <attribute name="SchedulableClass">uk.dialogue.api.sams.ejb.Scheduler</attribute>
           <attribute name="InitialStartDate">27/06/2005 14:50</attribute>
           <attribute name="InitialRepetitions">-1</attribute>
           <attribute name="SchedulePeriod">100000</attribute>
          
           <depends>
           <mbean code="javax.management.timer.Timer" name="jboss:service=MyServiceTimer"/>
           </depends>
           </mbean>
           <mbean code="javax.management.timer.Timer" name="DefaultDomain:service=timer"/> -->
          
          </server>
          


          • 2. Re: Problems with redeployment.
            neilalbiston

            I'm still searching for an answer to this. I've been trawling google, the forum and the FAQs but to no avail.
            I've read that the warning message may be a bug in 3.2.5 but could be unrelated.
            I also suspect that the ear-contents directory being left behind is a natural feature and is not causing the problems.....but I've no idea wht is causing the problems with the JNDI
            ...all the env not bound errors.

            This is affecting our live servers and the sys admins are getting a bit fed up with rebooting the environments every time we redeploy. Its not giving a good impression of jboss.

            any guidance or pointers would be very helpfully received.

            There have been no replies to this message for a few days, so either...
            1). No one knows. ( from the info I have provided...so what else do I need to post? )

            2). No one cares...( I'm running an old version and I know we are going to upgrade to 4.02 soon but until then.....).

            3). The answer is soooooooooo obvious, I just need to RTFM.... OK flame me. I wont mind. Any pointers appreciated..

            signed Desperate of Sheffield.

            • 3. Re: Problems with redeployment.
              neilalbiston

              I think my xml file has broken this thread.

              • 4. Re: Problems with redeployment.
                ibeveridge

                I'm getting this problem too. The app deploys and runs just fine, but make a trivial change to ejb-jar.xml and it all goes wrong.

                The newly redeployed app seems to be unable to find java:comp/env

                Likewise - any pointers will be appreciated.

                • 5. Re: Problems with redeployment.
                  ibeveridge

                  Additional note: I'm experiencing it in JBoss 4.0.2