0 Replies Latest reply on Sep 13, 2004 10:29 PM by Todd Gould

    Beginner question, deployment order problem

    Todd Gould Novice

      I have an MDB that is accessed via the HTTPIL (instead of UIL2). It seems to be working just fine but has created a deployment order problem. If it is deployed after the container has been started all is fine. However, if it is deployed before container startup (ie. the jar file exists in the deploy directory before the container is started), the conatiner will hang during the deploy of this MDB.

      This problem seems to be directly related to the HTTPIL transport mechanism I'm setting up via the invoker-bindings, proxy-factory and container-config elements in the following jboss.xml file (I know this because commenting out the invoker-binding element in the message-driven element avoids the hang - bt of course does not use the HTTPIL as required in my instance):

      <!DOCTYPE jboss PUBLIC
       "-//JBoss//DTD JBOSS 3.2//EN"
       "http://www.jboss.org/j2ee/dtd/jboss_3_2.dtd">
      <jboss>
       <enterprise-beans>
       <message-driven>
       <ejb-name>ResultsBean</ejb-name>
       <destination-jndi-name>topic/discoveryResults</destination-jndi-name>
       <!--
       Use the following to tunnel over HTTPS
       -->
       <configuration-name>HTTPS Message Driven Bean</configuration-name>
       <invoker-bindings>
       <invoker>
       <invoker-proxy-binding-name>
       message-driven-bean-https</invoker-proxy-binding-name>
       </invoker>
       </invoker-bindings>
       <resource-ref>
       <res-ref-name>jms/TCF</res-ref-name>
       <jndi-name>HTTPCOnnectionFactory</jndi-name>
       </resource-ref>
       <depends>jboss.web:service=WebServer</depends>
      
       <depends>jboss.mq.destination:service=Topic,name=discoveryResults</depend>
       <depends>jboss.security:service=JaasSecurityDomain,domain=RMI+SSL</depend>
       <depends>jboss.mq:service=HTTPInvocationLayer,type=HTTPS</depends>
       <depends>jboss.mq:service=TracingInterceptor</depends>
       <depends>jboss.mq:service=ServerSessionPoolMBean,name=StdJMSPool</depends>
       <depends>jboss.mq:service=DestinationManager</depends>
       <depends>jboss.mq:service=SecurityManager</depends>
       <depends>jboss.mq.destination:service=Queue,name=DLQ</depends>
       <depends>jboss:service=Naming</depends>
       <depends>jboss:service=invoker,type=jrmp</depends>
       <depends>jboss:service=TransactionManager</depends>
       <depends>jboss:service=invoker,type=https,target=Naming</depends>
       <depends>jboss:service=invoker,type=https</depends>
       <depends>jboss.jmx:type=adaptor,name=Invoker</depends>
       <depends>jboss.jmx:type=adaptor,name=Invoker,protocol=jrmp,service=proxyFactory</depends>
       <depends>jboss.jmx:type=adaptor,name=Invoker</depends>
       <depends>jboss.mq:service=Invoker</depends>
       <depends>jboss.mq:service=InvocationLayer,type=UIL2</depends>
       <depends>jboss.mq:service=HTTPInvocationLayer,type=HTTPS</depends>
       <depends>jboss.mq:service=JMSProviderLoader,type=https,name=HTTPSJMSProvider,socketType=SSL</depends>
       <depends>jboss.mq:service=DestinationManager</depends>
       <depends>jboss.mq:service=SecurityManager</depends>
       <depends>jboss.mq:service=JMSProviderLoader,name=JMSProvider</depends>
       <depends>jboss.mq:service=JMSProviderLoader,type=https,name=HTTPSJMSProvider,socketType=SSL</depends>
       </message-driven>
       </enterprise-beans>
       <!-- A custom invoker for JMS/HTTPs -->
       <invoker-proxy-binding>
       <name>message-driven-bean-https</name>
       <invoker-mbean>
       <!--
       use for HTTPIL
       -->
       jboss.mq:service=HTTPInvocationLayer,type=HTTPS
       </invoker-mbean>
       <proxy-factory>org.jboss.ejb.plugins.jms.JMSContainerInvoker</proxy-fac>
       <proxy-factory-config>
       <!--
       Use with HTTPIL
       -->
       <JMSProviderAdapterJNDI>HTTPSJMSProvider</JMSProviderAdapterJNDI>
       <ServerSessionPoolFactoryJNDI>StdJMSPool</ServerSessionPoolFactoryJN>
       <!-- WARN: Don't set this to zero until a bug in the pooled executor
       is fixed -->
       <MinimumSize>1</MinimumSize>
       <MaximumSize>15</MaximumSize>
       <KeepAliveMillis>30000</KeepAliveMillis>
       <MaxMessages>1</MaxMessages>
       <MDBConfig>
       <ReconnectIntervalSec>10</ReconnectIntervalSec>
       <DLQConfig>
       <DestinationQueue>queue/DLQ</DestinationQueue>
       <MaxTimesRedelivered>10</MaxTimesRedelivered>
       <TimeToLive>0</TimeToLive>
       </DLQConfig>
       </MDBConfig>
       </proxy-factory-config>
       </invoker-proxy-binding>
       </invoker-proxy-bindings>
      
       <container-configurations>
       <container-configuration>
       <container-name>HTTPS Message Driven Bean</container-name>
       <call-logging>true</call-logging>
       <invoker-proxy-binding-name>message-driven-bean-https</invoker-proxy-b>
       <container-interceptors>
       <interceptor>org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor</i>
       <interceptor>org.jboss.ejb.plugins.LogInterceptor</interceptor>
       <interceptor>org.jboss.ejb.plugins.RunAsSecurityInterceptor</interc>
       <!-- CMT -->
       <interceptor transaction="Container">org.jboss.ejb.plugins.TxInterc
      eptorCMT</interceptor>
       <interceptor transaction="Container" metricsEnabled="false">org.jbo
      ss.ejb.plugins.MetricsInterceptor</interceptor>
       <interceptor transaction="Container">org.jboss.ejb.plugins.MessageD
      rivenInstanceInterceptor</interceptor>
       <!-- BMT -->
       <interceptor transaction="Bean">org.jboss.ejb.plugins.MessageDrivenInstanceInterceptor</interceptor>
       <interceptor transaction="Bean">org.jboss.ejb.plugins.MessageDrivenTxInterceptorBMT</interceptor>
       <interceptor transaction="Bean" metricsEnabled="false">org.jboss.ejb.plugins.MetricsInterceptor</interceptor>
       <interceptor>org.jboss.resource.connectionmanager.CachedConnectionInterceptor</interceptor>
       </container-interceptors>
       <instance-pool>org.jboss.ejb.plugins.MessageDrivenInstancePool</instance-pool>
       <instance-cache></instance-cache>
       <persistence-manager></persistence-manager>
       <container-pool-conf>
       <MaximumSize>100</MaximumSize>
       </container-pool-conf>
       <depends>jboss.web:service=WebServer</depends>
      
       <depends>jboss.mq:service=DestinationManager</depends>
       <depends>jboss.mq:service=ServerSessionPoolMBean,name=StdJMSPool</depends>
       <depends>jboss.mq:service=SecurityManager</depends>
       <depends>jboss.mq.destination:service=Queue,name=DLQ</depends>
       <depends>jboss.mq.destination:service=Topic,name=discoveryResults</depends>
       <depends>jboss.security:service=JaasSecurityDomain,domain=RMI+SSL</depends>
       <depends>jboss.jca:service=CachedConnectionManager</depends>
       <depends>jboss:type=Service,name=PropertyEditorManager</depends>
       <depends>jboss.j2ee:service=ClientDeployer</depends>
       <depends>jboss.alerts:service=ConsoleAlertListener</depends>
       <depends>jboss.jca:service=CachedConnectionManager</depends>
       <depends>jboss:type=Service,name=PropertyEditorManager</depends>
       <depends>jboss.j2ee:service=ClientDeployer</depends>
       <depends>jboss.alerts:service=ConsoleAlertListener</depends>
       <depends>jboss.mq:service=HTTPInvocationLayer,type=HTTPS</depends>
       <depends>jboss.mq:service=TracingInterceptor</depends>
       <depends>jboss:service=Naming</depends>
       <depends>jboss:service=invoker,type=jrmp</depends>
       <depends>jboss:service=TransactionManager</depends>
       <depends>jboss:service=invoker,type=https,target=Naming</depends>
       <depends>jboss:service=invoker,type=https</depends>
       <depends>jboss.jmx:type=adaptor,name=Invoker</depends>
       <depends>jboss.jmx:type=adaptor,name=Invoker,protocol=jrmp,service=proxyFactory</depends>
       <depends>jboss.jmx:type=adaptor,name=Invoker</depends>
       <depends>jboss.mq:service=Invoker</depends>
       <depends>jboss.mq:service=InvocationLayer,type=UIL2</depends>
       <depends>jboss.mq:service=HTTPInvocationLayer,type=HTTPS</depends>
       <depends>jboss.mq:service=JMSProviderLoader,type=https,name=HTTPSJMSProvider,socketType=SSL</depends>
       <depends>jboss.mq:service=DestinationManager</depends>
       <depends>jboss.mq:service=SecurityManager</depends>
       <depends>jboss.mq:service=JMSProviderLoader,name=JMSProvider</depends>
      
       <depends>jboss.mq:service=JMSProviderLoader,type=https,name=HTTPSJMSProvi
      der,socketType=SSL</depends>
       </container-configuration>
       </container-configurations>
      </jboss>
      
      


      As you can see, I have been building up (incrementally adding one or two at a time) a large depends list in failed attempts to address this problem. However, I still end up in the same place - everything works fine if and only if the jar file is deployed AFTER container startup. If the container is started with the jar file in place, it will hang during the deloyment of the MDB.

      By the way, setting the EJBDeployer to DEBUG has not shed any light on this. I have additionally tried to use the jmx-console listIncompletelyDeployed MBeans to no avail, as it is NOT yet available when the container hangs on startup in response to this MDB.

      What depends or other items am I missing? What do I need to do to get this MDB (which appears to be working just fine otherwise) to NOT hang the container when it's associated jar file exists in the deploy directory at container startup time?

      Thanks in advance for your help!