7 Replies Latest reply on Sep 8, 2011 1:23 AM by konami

    JBoss5.1.0-GA startup with messaging problems

    skymic

      Hi all,

      I use JBoss5.1.0-GA with the default profile on a Windows XP professional PC with the sun JDK 1.6.0_17.

      When I examine my server.log after JBoss started up I find the following:


      2009-12-11 15:24:21,622 ERROR [org.jboss.system.server.profileservice.ProfileServiceBootstrap] (main) Failed to load profile: Summary of incomplete deployments (SEE PREVIOUS ERRORS FOR DETAILS):

      DEPLOYMENTS MISSING DEPENDENCIES:
      Deployment "jboss.messaging.connectionfactory:service=ClusterPullConnectionFactory" is missing the following dependencies:
      Dependency "jboss.messaging:service=PostOffice" (should be in state "Create", but is actually in state "Configured")
      Deployment "jboss.messaging.connectionfactory:service=ClusteredConnectionFactory" is missing the following dependencies:
      Dependency "jboss.messaging:service=PostOffice" (should be in state "Create", but is actually in state "Configured")
      Deployment "jboss.messaging.connectionfactory:service=ConnectionFactory" is missing the following dependencies:
      Dependency "jboss.messaging:service=PostOffice" (should be in state "Create", but is actually in state "Configured")
      Deployment "jboss.messaging.destination:name=DLQ,service=Queue" is missing the following dependencies:
      Dependency "jboss.messaging:service=PostOffice" (should be in state "Create", but is actually in state "Configured")
      Deployment "jboss.messaging.destination:name=ExpiryQueue,service=Queue" is missing the following dependencies:
      Dependency "jboss.messaging:service=PostOffice" (should be in state "Create", but is actually in state "Configured")
      Deployment "jboss.messaging:service=PostOffice" is missing the following dependencies:
      Dependency "jboss.jgroups:service=ChannelFactory" (should be in state "Create", but is actually in state "** NOT FOUND Depends on 'jboss.jgroups:service=ChannelFactory' **")

      DEPLOYMENTS IN ERROR:
      Deployment "jboss.jgroups:service=ChannelFactory" is in error due to the following reason(s): ** NOT FOUND Depends on 'jboss.jgroups:service=ChannelFactory' **



      I think it's the ChannelFactory in the last line which causes the problem.

      Does anybody know why this ChannelFactory cannot be found?

      Thanks in advance.


        • 1. Re: JBoss5.1.0-GA startup with messaging problems
          brian.stansberry

          It's not there because the ChannelFactory is a clustering feature and clustering isn't part of the "default" config. So sounds like your JBoss Messaging configuration has been altered.

          So you have 2 choices, depending on whether you actually want clustered JBM. (Either way, as a best practice I recommend you create your own configuration in a separate directory and leave "default" containing what came with the AS distribution).

          If you want clustering:

          1) Copy the "cluster" folder from all/deploy to yourconfig/deploy
          2) Copy the contents of the all/lib folder to yourconfig/lib

          If you don't want clustering:

          Compare yourconfig/deploy/messaging/???-persistence-service.xml file to the default/deploy/messaginghsqldb-persistence-service.xml file that comes in the standard AS distribution, particularly the jboss.messaging:service=PostOffice mbean. You don't want:

          <attribute name="Clustered">true</attribute>


          <depends optional-attribute-name="ChannelFactoryName">jboss.jgroups:service=ChannelFactory</depends>
           <attribute name="ControlChannelName">jbm-control</attribute>
           <attribute name="DataChannelName">jbm-data</attribute>
           <attribute name="ChannelPartitionName">${jboss.partition.name:DefaultPartition}-JMS</attribute>


          There may be other subtleties in the JBM configuration; I'm not a JBM guru but getting rid of the above "depends" element is the key one. Check the JBM user forums if you have trouble; I suspect this question has come up before.

          • 2. Re: JBoss5.1.0-GA startup with messaging problems
            skymic

            Thanks Brian, problem solved:

             

            I copied the $JBOSS_HOME/docs/examples/jms/oracle-persistence.xml to $JBOSS_HOME/server/default/deploy/messaging.

            I removed hsqldb-persistence-service.xml since I want to use an Oracle DB and not the hsqldb. I also do not want the clustered mode.

             

            This oracle-persistence.xml file has a section for the PostOffice mbean and has the

             

            <attribute

            name="Clustered">false</attribute>

             

             

            set to false. The all entries after the Clustered attribute have to be commented out if one does not use the clustered mode. There is actually a comment in the config file which I did not notice.

             

            After I commented out the elements after the clustered attribute JBoss started up without this warning in the server.log.

             

            The mbean configuration for PostOffice without clustering in the oracle-persistence.xml should look like this:

             

            <!-- Messaging Post Office MBean configuration
            ========================================= -->

             

            <mbean code="org.jboss.messaging.core.jmx.MessagingPostOfficeService"
            name
            ="jboss.messaging:service=PostOffice"
            xmbean-dd
            ="xmdesc/MessagingPostOffice-xmbean.xml">

             

            <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>

             

            <depends>jboss.jca:service=DataSourceBinding,name=idmDS</depends>

             

            <depends optional-attribute-name="TransactionManager">jboss:service=TransactionManager</depends>

             

            <!-- The name of the post office -->

             

            <attribute name="PostOfficeName">JMS post office</attribute>

             

            <!-- The datasource used by the post office to access it's binding information -->

             

            <attribute name="DataSource">java:/idmDS</attribute>

             

            <!-- If true will attempt to create tables and indexes on every start-up -->

             

            <attribute name="CreateTablesOnStartup">true</attribute>

             

            <attribute name="SqlProperties"><![CDATA[
            CREATE_POSTOFFICE_TABLE=CREATE TABLE JBM_POSTOFFICE (POSTOFFICE_NAME VARCHAR2(255), NODE_ID INTEGER, QUEUE_NAME VARCHAR2(255), COND VARCHAR2(1023), SELECTOR VARCHAR2(1023), CHANNEL_ID INTEGER, CLUSTERED CHAR(1), ALL_NODES CHAR(1), PRIMARY KEY(POSTOFFICE_NAME, NODE_ID, QUEUE_NAME))
            INSERT_BINDING=INSERT INTO JBM_POSTOFFICE (POSTOFFICE_NAME, NODE_ID, QUEUE_NAME, COND, SELECTOR, CHANNEL_ID, CLUSTERED, ALL_NODES) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
            DELETE_BINDING=DELETE FROM JBM_POSTOFFICE WHERE POSTOFFICE_NAME=? AND NODE_ID=? AND QUEUE_NAME=?
            LOAD_BINDINGS=SELECT QUEUE_NAME, COND, SELECTOR, CHANNEL_ID, CLUSTERED, ALL_NODES FROM JBM_POSTOFFICE WHERE POSTOFFICE_NAME=? AND NODE_ID=?
            ]]>
            </attribute>

             

            <!-- This post office is non clustered. If you want a clustered post office then set to true -->

             

            <attribute name="Clustered">false</attribute>

             

            <!-- All the remaining properties only have to be specified if the post office is clustered.
            You can safely comment them out if your post office is non clustered -->

             

            <!-- The JGroups group name that the post office will use -->

             

            <!--<attribute name="GroupName">${jboss.messaging.groupname:MessagingPostOffice}</attribute>-->

             

            <!-- Max time to wait for state to arrive when the post office joins the cluster -->

             

            <!--<attribute name="StateTimeout">30000</attribute>-->

             

            <!-- Max time to wait for a synchronous call to node members using the MessageDispatcher -->

             

            <!--<attribute name="CastTimeout">30000</attribute>-->

             

            <!-- Set this to true if you want failover of connections to occur when a node is shut down -->

             

            <!--<attribute name="FailoverOnNodeLeave">false</attribute>

            <depends optional-attribute-name="ChannelFactoryName">jboss.jgroups:service=ChannelFactory</depends>
            <attribute name="ControlChannelName">jbm-control</attribute>
            <attribute name="DataChannelName">jbm-data</attribute>
            <attribute name="ChannelPartitionName">${jboss.partition.name:DefaultPartition}-JMS</attribute>-->

            </mbean>

            • 3. Re: JBoss5.1.0-GA startup with messaging problems
              brian.stansberry

              Thanks for posting your config; will probably help others.

               

              My guess is keeping both clustered and non-clustered versions of the docs/examples files is just too much, so the clustered ones are used.

              • 4. Re: JBoss5.1.0-GA startup with messaging problems

                It certainly did help me, thanks.

                • 5. Re: JBoss5.1.0-GA startup with messaging problems
                  clauritsen

                  Thanks. This was my problem as well. I didn't expect that I'd be *required* to comment-out these attributes. Would have thought setting clustered to "false" would have sufficed.

                  • 6. Re: JBoss5.1.0-GA startup with messaging problems
                    edmiikk

                    Hi Michael,

                    Finally find your post after a couple of hours of searching for "DLQ not bound".

                    Agree about the need to make it clearer about incompatilbe options in the mysql-persistance.xml,

                    as the resulting errors are opaque.

                    Thanks for the post.

                    • 7. Re: JBoss5.1.0-GA startup with messaging problems
                      konami

                      Bump. Thanks for your post. Saves my time. I wish JBoss AS folks could ship with more configuration files for clustered and non-clustered persistence-service.xml files.