9 Replies Latest reply on Jun 24, 2013 11:51 AM by ruben00

    Mod_Cluster 1.2.4.Final + AS5 - Not Working

    ruben00

      I went to github and downloaded the source and built mod_cluster 1.2.4

       

      After configuring it with AS5 (5.1.2) im getting the following error:

       

       

      From Server.log

      ====================

      013-06-18 16:09:19,991 WARN  [org.jboss.system.server.profileservice.hotdeploy.HDScanner] (HDScanner) Failed to process changes
      org.jboss.deployers.client.spi.IncompleteDeploymentException: Summary of incomplete deployments (SEE PREVIOUS ERRORS FOR DETAILS): DEPLOYMENTS MISSING DEPENDENCIES:
        Deployment "ModClusterListener" is missing the following dependencies:
          Dependency "WebServer" (should be in state "Create", but is actually in state "Configured") DEPLOYMENTS IN ERROR:
        Deployment "WebServer" is in error due to the following reason(s): Configured at org.jboss.deployers.plugins.deployers.DeployersImpl.checkComplete(DeployersImpl.java:1008)
      at org.jboss.deployers.plugins.deployers.DeployersImpl.checkComplete(DeployersImpl.java:954)
      at org.jboss.deployers.plugins.main.MainDeployerImpl.checkComplete(MainDeployerImpl.java:870)
      at org.jboss.system.server.profileservice.repository.MainDeployerAdapter.checkComplete(MainDeployerAdapter.java:128)
      at org.jboss.system.server.profileservice.hotdeploy.HDScanner.scan(HDScanner.java:416)
      at org.jboss.system.server.profileservice.hotdeploy.HDScanner.run(HDScanner.java:294)
      at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
      at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:351)
      at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:178)
      at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:178)
      at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
      at java.lang.Thread.run(Thread.java:722)



      ......

      2013-06-18 16:13:13,370 ERROR [org.jboss.system.server.profileservice.ProfileServiceBootstrap] (main) Failed to load profile: Summary of incomplete deployments (SEE PREVIOUS ERRORS FOR DETAILS):

        Deployment "ModClusterListener" is missing the following dependencies:
          Dependency "WebServer" (should be in state "Create", but is actually in state "Configured")
        Deployment "WebServer" is missing the following dependencies:
          Dependency "ModClusterListener" (should be in state "Create", but is actually in state "Configured")
        Deployment "jboss.web.deployment:war=/BOE" is missing the following dependencies:
          Dependency "jboss.web:service=WebServer" (should be in state "Create", but is actually in state "Configured")
        Deployment "jboss.web.deployment:war=/BOE/AdminTools" is missing the following dependencies:
          Dependency "jboss.web:service=WebServer" (should be in state "Create", but is actually in state "Configured")
        Deployment "jboss.web.deployment:war=/BOE/BusinessProcessBI" is missing the following dependencies:
          Dependency "jboss.web:service=WebServer" (should be in state "Create", but is actually in state "Configured")
        Deployment "jboss.web.deployment:war=/BOE/MOBIServer" is missing the following dependencies:
          Dependency "jboss.web:service=WebServer" (should be in state "Create", but is actually in state "Configured")
        Deployment "jboss.web.deployment:war=/BOE/MobileBIService" is missing the following dependencies:
          Dependency "jboss.web:service=WebServer" (should be in state "Create", but is actually in state "Configured")
        Deployment "jboss.web.deployment:war=/BOE/MobileOTA14" is missing the following dependencies:
          Dependency "jboss.web:service=WebServer" (should be in state "Create", but is actually in state "Configured")
        Deployment "jboss.web.deployment:war=/BOE/OpenSearch" is missing the following dependencies:
          Dependency "jboss.web:service=WebServer" (should be in state "Create", but is actually in state "Configured")
        Deployment "jboss.web.deployment:war=/BOE/clientapi" is missing the following dependencies:
          Dependency "jboss.web:service=WebServer" (should be in state "Create", but is actually in state "Configured")
        Deployment "jboss.web.deployment:war=/BOE/dswsbobje" is missing the following dependencies:
          Dependency "jboss.web:service=WebServer" (should be in state "Create", but is actually in state "Configured")
        Deployment "jboss.web.deployment:war=/ROOT" is missing the following dependencies:
          Dependency "jboss.web:service=WebServer" (should be in state "Create", but is actually in state "Configured")
        Deployment "jboss.web.deployment:war=/admin-console" is missing the following dependencies:
          Dependency "jboss.web:service=WebServer" (should be in state "Create", but is actually in state "Configured")
        Deployment "jboss.web.deployment:war=/invoker" is missing the following dependencies:
          Dependency "jboss.web:service=WebServer" (should be in state "Create", but is actually in state "Configured")
        Deployment "jboss.web.deployment:war=/jbossws" is missing the following dependencies:
          Dependency "jboss.web:service=WebServer" (should be in state "Create", but is actually in state "Configured")
        Deployment "jboss.web.deployment:war=/jmx-console" is missing the following dependencies:
          Dependency "jboss.web:service=WebServer" (should be in state "Create", but is actually in state "Configured")
        Deployment "jboss.web.deployment:war=/juddi" is missing the following dependencies:
          Dependency "jboss.web:service=WebServer" (should be in state "Create", but is actually in state "Configured")
        Deployment "jboss.web.deployment:war=/load-demo" is missing the following dependencies:
          Dependency "jboss.web:service=WebServer" (should be in state "Create", but is actually in state "Configured")
        Deployment "jboss.web.deployment:war=/web-console" is missing the following dependencies:
          Dependency "jboss.web:service=WebServer" (should be in state "Create", but is actually in state "Configured") DEPLOYMENTS IN ERROR:
        Deployment "jboss.web:service=WebServer" is in error due to the following reason(s): Configured
      Server.xml
      ===================

      <Listener className="org.jboss.web.tomcat.service.deployers.MicrocontainerIntegrationLifecycleListener" delegateBeanName="ModClusterListener" />

       

      jboss-bean.xml
      ==================


      <depends>ModClusterListener</depends>

       

       

      mod_cluster-jboss-beans.xml  (i added the text in red because it is missing / broken from the original github source)

      ============================

       

      <?xml version="1.0" encoding="UTF-8"?>
      <!--
        Beans that provide JBoss AS-side functionality for mod_cluster. These
        beans are all "On Demand", i.e. that are not installed unless requested.
      -->
      <deployment xmlns="urn:jboss:bean-deployer:2.0">

        <!-- Entry point: catalina lifecycle listener -->
        <bean name="ModClusterListener" class="org.jboss.modcluster.container.jbossweb.JBossWebEventHandlerAdapter" mode="On Demand">
          <constructor>
            <parameter class="org.jboss.modcluster.container.ContainerEventHandler"><inject bean="ModClusterService"/></parameter>
            <parameter class="javax.management.MBeanServer"><inject bean="JMXKernel" property="mbeanServer"/></parameter>
          </constructor>
          <depends>WebServer</depends>
        </bean>
       
        <!-- The core mod_cluster service -->
        <bean name="ModClusterService" class="org.jboss.modcluster.ModClusterService" mode="On Demand">
          <annotation>@org.jboss.aop.microcontainer.aspects.jmx.JMX(name="jboss.web:service=ModCluster",exposedInterface=org.jboss.modcluster.ModClusterServiceMBean.class)</annotation>
          <constructor>
            <parameter class="org.jboss.modcluster.config.impl.ModClusterConfig"><inject bean="ModClusterConfig"/></parameter>
            <parameter class="org.jboss.modcluster.load.LoadBalanceFactorProvider"><inject bean="DynamicLoadBalanceFactorProvider"/></parameter>
          </constructor>
        </bean>
       
        <!-- Configure this node's communication with the load balancer -->
        <bean name="ModClusterConfig" class="org.jboss.modcluster.config.impl.ModClusterConfig" mode="On Demand">
         
          <!-- Comma separated list of address:port listing the httpd servers
               where mod_cluster is running. -->
          <property name="proxyList">${jboss.mod_cluster.proxyList,jboss.modcluster.proxyList:}</property>
          <!-- URL prefix to send with commands to mod_cluster.  Default is no prefix. -->
          <!--property name="proxyURL"></property-->
         
          <!-- mod_advertise is a small httpd module that advertises the
               availability of httpd servers via multicast, allowing
               ModClusterService to discover the httpd front-end instead of/in
               addition to having them defined in proxyList. -->
          <!-- Whether to listen for advertise messages -->
          <property name="advertise">${jboss.mod_cluster.advertise:true}</property>
          <!-- Multicast address on which to listen for advertisements -->
          <property name="advertiseInterface">${jboss.mod_cluster.advertise.address,jboss.modcluster.advertise.address,jboss.partition.udpGroup:224.0.1.105}</property>
          <!-- Port to listen to for advertisements -->
          <property name="advertisePort">${jboss.mod_cluster.advertise.port,jboss.modcluster.advertise.port:23364}</property>
         
          <!-- Comma delimited list of contexts that should *not* be auto-registered with httpd. -->
          <!-- ROOT indicates the root context. -->
          <!-- Context may be qualified by host using a colon, e.g. host1:context1 -->
          <!-- If no host is defined, localhost is assumed. -->
          <property name="excludedContexts">${jboss.mod_cluster.excludedContexts,jboss.modcluster.excludedContexts:ROOT,admin-console,invoker,jbossws,jmx-console,juddi,web-console}</property>
          <property name="autoEnableContexts">${jboss.mod_cluster.autoEnableContexts:true}</property>
         
          <!-- Security key the proxy is going to send with advertise messages.
               Default is none. -->
          <!--property name="advertiseSecurityKey"></property-->
         
          <!-- Whether to use SSL to communicate with mod_cluster. Note this
               has nothing to do with handling of https requests by JBoss Web -->
          <property name="ssl">false</property>
         
          <!-- Configuration values for the load balancer itself (must be the
               same on all nodes in the cluster). These will be passed to the
               load balancer. -->
          <property name="stickySession">true</property>
          <property name="stickySessionForce">false</property>
          <property name="stickySessionRemove">false</property>
          <property name="maxAttempts">1</property>
          <property name="workerTimeout">-1</property>
        </bean>
       
        <!-- Provides information to ModClusterService informing it how much load
             this server should take.  This impl calculates load factor from a
             number of metrics and adjusts the value periodically based on runtime
             conditions, using to the JBossWeb engine's backgroundProcessorDelay. -->
        <bean name="DynamicLoadBalanceFactorProvider" class="org.jboss.modcluster.load.impl.DynamicLoadBalanceFactorProvider" mode="On Demand">
          <annotation>@org.jboss.aop.microcontainer.aspects.jmx.JMX(name="jboss.web:service=ModCluster,provider=LoadBalanceFactor",exposedInterface=org.jboss.modcluster.load.impl.DynamicLoadBalanceFactorProviderMBean.class)</annotation>
          <constructor>
            <parameter>
              <!-- Define the load metrics to use in your load balance factor calculation here -->
              <set elementClass="org.jboss.modcluster.load.metric.LoadMetric">
                <inject bean="BusyConnectorsLoadMetric"/>
                <inject bean="HeapMemoryUsageLoadMetric"/>
              </set>
            </parameter>
          </constructor>
          <!-- The number of historical load values used to determine load factor -->
          <!--property name="history">9</property-->
          <!-- The exponential decay factor for historical load values -->
          <!--property name="decayFactor">2</property-->
        </bean>

        <!-- Default load metrics/sources -->
        <!-- The JBossWeb connector thread pool usage as a ratio of busy threads to max thread pool size -->
        <!-- Analogous to method=B in mod_jk -->
        <bean name="BusyConnectorsLoadMetric" class="org.jboss.modcluster.load.metric.impl.BusyConnectorsLoadMetric" mode="On Demand">
          <annotation>@org.jboss.aop.microcontainer.aspects.jmx.JMX(name="jboss.web:service=ModCluster,provider=LoadBalanceFactor,metric=BusyConnectors",exposedInterface=org.jboss.modcluster.load.metric.LoadMetricMBean.class)</annotation>
          <!-- The weight determines the significance of this metric with respect
               to others in the overall load balance factor calculation -->
          <property name="weight">2</property>
        </bean>
       
        <!-- The heap memory usage as a ratio of used heap to max heap size -->
        <!-- N.B. This load metric is its own source -->
        <bean name="HeapMemoryUsageLoadMetric" class="org.jboss.modcluster.load.metric.impl.HeapMemoryUsageLoadMetric" mode="On Demand">
          <annotation>@org.jboss.aop.microcontainer.aspects.jmx.JMX(name="jboss.web:service=ModCluster,provider=LoadBalanceFactor,metric=HeapMemoryUsage",exposedInterface=org.jboss.modcluster.load.metric.LoadMetricMBean.class)</annotation>
          <!--property name="weight">1</property-->
        </bean>


        <!-- Alternative load balance factor providers -->
       
        <!-- Basic impl that returns a static load balance factor.
             This would replace the DynamicLoadBalanceFactorProvider
             used above.
         -->
        <bean name="SimpleLoadBalanceFactorProvider" class="org.jboss.modcluster.load.impl.SimpleLoadBalanceFactorProvider" mode="On Demand">
          <annotation>@org.jboss.aop.microcontainer.aspects.jmx.JMX(name="jboss.web:service=ModCluster,provider=LoadBalanceFactor",exposedInterface=org.jboss.modcluster.load.impl.SimpleLoadBalanceFactorProviderMBean.class)</annotation>
          <property name="loadBalanceFactor">1</property>
        </bean>

        <!--
             Alternative load metrics, grouped by source.
             To use these, inject them into the set passed to the
             DynamicLoadBalanceFactorProvider bean's constructor above.
         -->
       
        <!-- CPU usage -->
        <!-- Perhaps the best metric for determining system load - but only available on Java 1.6 or later -->
        <bean name="AverageSystemLoadMetric" class="org.jboss.modcluster.load.metric.impl.AverageSystemLoadMetric" mode="On Demand">
          <annotation>@org.jboss.aop.microcontainer.aspects.jmx.JMX(name="jboss.web:service=ModCluster,provider=LoadBalanceFactor,metric=AverageSystemLoad",exposedInterface=org.jboss.modcluster.load.metric.LoadMetricMBean.class)</annotation>
        </bean>
        <!-- The system memory usage as ratio of used memory to total memory size -->
        <!-- Requires com.sun.management.OperatingSystemMXBean, i.e. Sun or OpenJDK JVM -->
        <bean name="SystemMemoryUsageLoadMetric" class="org.jboss.modcluster.load.metric.impl.SystemMemoryUsageLoadMetric" mode="On Demand">
          <annotation>@org.jboss.aop.microcontainer.aspects.jmx.JMX(name="jboss.web:service=ModCluster,provider=LoadBalanceFactor,metric=SystemMemoryUsage",exposedInterface=org.jboss.modcluster.load.metric.LoadMetricMBean.class)</annotation>
        </bean>


        <!-- The number of requests/sec processed by the JBossWeb connectors, with respect to the defined capacity -->
        <!-- Analogous to method=R in mod_jk -->
        <bean name="RequestCountLoadMetric" class="org.jboss.modcluster.load.metric.impl.RequestCountLoadMetric" mode="On Demand">
          <annotation>@org.jboss.aop.microcontainer.aspects.jmx.JMX(name="jboss.web:service=ModCluster,provider=LoadBalanceFactor,metric=RequestCount",exposedInterface=org.jboss.modcluster.load.metric.LoadMetricMBean.class)</annotation>
          <!-- This metric requires an explicit capacity, e.g. maximum capacity of 1000 requests/sec -->
          <property name="capacity">1000</property>
        </bean>
        <!-- The incoming traffic received by JBossWeb connectors in KB/sec, with respect to the defined capacity -->
        <!-- Analogous to method=T in mod_jk -->
        <bean name="ReceiveTrafficLoadMetric" class="org.jboss.modcluster.load.metric.impl.ReceiveTrafficLoadMetric" mode="On Demand">
          <annotation>@org.jboss.aop.microcontainer.aspects.jmx.JMX(name="jboss.web:service=ModCluster,provider=LoadBalanceFactor,metric=ReceiveTraffic",exposedInterface=org.jboss.modcluster.load.metric.LoadMetricMBean.class)</annotation>
          <!-- This metric requires an explicit capacity, e.g. max capacity of 1024 KB/s -->
          <property name="capacity">1024</property>
        </bean>
        <!-- The outgoing traffic sent by JBossWeb connectors in KB/sec, with respect to the defined capacity -->
        <bean name="SendTrafficLoadMetric" class="org.jboss.modcluster.load.metric.impl.SendTrafficLoadMetric" mode="On Demand">
          <annotation>@org.jboss.aop.microcontainer.aspects.jmx.JMX(name="jboss.web:service=ModCluster,provider=LoadBalanceFactor,metric=SendTraffic",exposedInterface=org.jboss.modcluster.load.metric.LoadMetricMBean.class)</annotation>
          <!-- This metric requires an explicit capacity, e.g. max capacity of 512 KB/s -->
          <property name="capacity">512</property>
        </bean>


        <!-- The number of active sessions, with respect to the defined capacity -->
        <!-- Analogous to method=S in mod_jk -->
        <bean name="ActiveSessionsLoadMetric" class="org.jboss.modcluster.load.metric.impl.ActiveSessionsLoadMetric" mode="On Demand">
          <annotation>@org.jboss.aop.microcontainer.aspects.jmx.JMX(name="jboss.web:service=ModCluster,provider=LoadBalanceFactor,metric=ActiveSessions",exposedInterface=org.jboss.modcluster.load.metric.LoadMetricMBean.class)</annotation>
          <!-- This metric requires an explicit capacity, e.g. max capacity of 1000 active sessions -->
          <property name="capacity">1000</property>
        </bean>

        <!-- Generic load metrics/sources -->
       
        <!-- Uses the sum of the values of the specified attribute for each
             mbean matching the query, with respect to a defined capacity. -->
        <bean name="MBeanAttributeLoadMetric" class="org.jboss.modcluster.load.metric.impl.MBeanAttributeLoadMetric" mode="On Demand">
          <annotation>@org.jboss.aop.microcontainer.aspects.jmx.JMX(name="jboss.web:service=ModCluster,provider=LoadBalanceFactor,metric=MBeanAttribute",exposedInterface=org.jboss.modcluster.load.metric.LoadMetricMBean.class)</annotation>
          <property name="pattern"><!-- mbean name pattern --></property>
          <property name="attribute"><!-- mbean attribute --></property>
          <property name="capacity">1</property>
        </bean>
        <!-- Uses the ratio of the sum of the values of the specified dividend attribute,
             to the sum of the values of the specified divisor attribute for each mbean
             matching the query. -->
        <bean name="MBeanAttributeRatioLoadMetric" class="org.jboss.modcluster.load.metric.impl.MBeanAttributeRatioLoadMetric" mode="On Demand">
          <annotation>@org.jboss.aop.microcontainer.aspects.jmx.JMX(name="jboss.web:service=ModCluster,provider=LoadBalanceFactor,metric=MBeanAttributeRatio",exposedInterface=org.jboss.modcluster.load.metric.LoadMetricMBean.class)</annotation>
          <property name="pattern"><!-- mbean name pattern --></property>
          <property name="dividendAttribute"><!-- mbean attribute --></property>
          <property name="divisorAttribute"><!-- mbean attribute --></property>
        </bean>

      </deployment>

       

       

      Any suggestions would be greatly appreciated.

       

      This same server / configuration works perfectly fine with mod_cluster 1.2.0

        • 1. Re: Mod_Cluster 1.2.4.Final + AS5 - Not Working
          jfclere

          You should use the ./src/main/resources/mod_cluster-jboss-beans.xml of 1.2.4.Final that the 1.2.0 one.

           

          And why are you using AS5?

          • 2. Re: Mod_Cluster 1.2.4.Final + AS5 - Not Working
            ruben00

            Hi,

             

            I believe im using the 1.2.4.Final, which i get by going to github, clicking on Branches->Tags->1.2.4.Final and clicking on "Download Zip"

             

            Even while browsing the source i can see that the mod_cluster-jboss-beans.xml in github is the same as the one i posted above (same as of 1.2.1 actually)

             

            And the reason for using AS5 (actually EAP 5.1) is because SAP Crystal Server 2011 is only supported on AS4/AS5 (plus tomcat6 and some others, but im using jboss for this deployment)

            • 3. Re: Mod_Cluster 1.2.4.Final + AS5 - Not Working
              jfclere

              1.2.4 won't work with AS5. The logging system has been changed to 3.1.2.GA and that is incompatible with AS5 logging.

              • 4. Re: Mod_Cluster 1.2.4.Final + AS5 - Not Working
                pferraro

                Have you tried upgrading jboss-logging in AS5 to 3.1.x?  It should be backwards compatible...

                • 5. Re: Mod_Cluster 1.2.4.Final + AS5 - Not Working
                  ruben00

                  I copied in:

                   

                  jboss-logging-3.1.2.GA

                  log4j-1.2.16

                  jboss-logmanager-1.2.0.GA

                  slf4j-api-1.6.1

                   

                   

                  Removed

                  slf4j-jboss-logging.jar

                  jboss-logging-jdk.jar

                  jboss-logging-log4j.jar

                  jboss-logging-spi.jar

                   

                  And ended up getting an error. 

                   

                  Exception in thread "main" java.lang.NoClassDefFoundError: org/jboss/logging/Logger

                   

                  which is related to jboss-logging-spi.jar being missing

                   

                  anything im missing?

                  • 6. Re: Mod_Cluster 1.2.4.Final + AS5 - Not Working
                    pferraro

                    You probably still need slf4j-jboss-logging.jar.

                    You might also need org.jboss.logging:log4j-jboss-logmanager.

                     

                    I don't see why should should be seeing that error.  org.jboss.logging.Logger is found in org.jboss.logging:jboss-logging

                    • 7. Re: Mod_Cluster 1.2.4.Final + AS5 - Not Working
                      ruben00

                      So progress update:

                       

                      Left these 3 Jar files alone:

                       

                      jboss-logging-jdk.jar

                      jboss-logging-log4j.jar

                      jboss-logging-spi.jar

                       

                       

                      Added into "common\lib":

                       

                      jboss-logging 3.1.2 (renamed to jboss-logging)

                      jboss-logmanager-1.2.0.GA (renamed to jboss-logmanager)

                      slf4j-api-1.6.1 (renamed to slf4j-api)

                      slf4j-log4j12-1.6.1 (renamed to slf4j-jboss-logging)

                       

                      Server starts cleanly, logs still work, etc

                       

                      When I add mod_cluster 1.2.4 back in, no dice, same error as my original post

                      • 8. Re: Mod_Cluster 1.2.4.Final + AS5 - Not Working
                        pferraro

                        You have to delete the old jboss-logging-*.jar files.  These are the old versions.

                        • 9. Re: Mod_Cluster 1.2.4.Final + AS5 - Not Working
                          ruben00

                          Well,

                           

                          I tried deleting all the jboss-logging-*.jar files, and got the same exception as above

                           

                          I found that jboss-common (> 3) contained the org.jboss.logging.Logger class, so i tried replacing that as well and deleting jboss-common-*.jar and all that did was create a new exception "Caused by: java.lang.ClassNotFoundException: org.jboss.util.NestedRuntimeException"

                           

                          im all out of ideas