Beginner question: deployment order problem
skidvd Sep 6, 2004 2:01 PMHello:
I have a beginner question related to a deployment order problem. I have a jar file containing several EJBs (a session bean and an MDB). This jar deploys and works flawlessly IF it is deployed AFTER the container has completely initialized following startup. If, however, I attempt to start up the container with the jar file already deployed, the container startup will hang (and apparently never return) during the deployment of the contained MDB EJBModule. Obviously, I am missing some deployment order dependency somewhere - the difficulty that I am having is determining what they are. Also, please note that ths MDB is configured to be invoked via the HTTPIL service in case this has anything to do with this.
I have attempted to add
<depends>tags for anything that I felt might be remotely related - however this has had no apparent effect - so I assume that I am not doing this correctly in some way or missing the correct ones. I have also attempted to use the jmx-console ServiceController MBean listIncompletelyDeployed operation. However, this was unsuccessful as the container has not yet initialized and I presume that the jmx-console is not yet available (no other operations in the console seem to respond at this point either - but do work after startup without this jar in place).
I am using JBoss 3.2.5 with embedded Tomcat 5. Here is my jboss.xml deployment descriptor for your reference. I would greatly appreciate any and all suggestions and insights into this problem.
<!DOCTYPE jboss PUBLIC "-//JBoss//DTD JBOSS 3.2//EN" "http://www.jboss.org/j2ee/dtd/jboss_3_2.dtd"> <jboss> <enterprise-beans> <session> <ejb-name>Registration</ejb-name> <jndi-name>apps/Ensuren/Registration</jndi-name> <local-jndi-name>apps/Ensuren/RegistrationLocal</local-jndi-name> <!-- Use the following to tunnel over HTTPS --> <invoker-bindings> <invoker> <invoker-proxy-binding-name> stateless-https-invoker</invoker-proxy-binding-name> </invoker> </invoker-bindings> </session> <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> <depends>jboss.mq:service=DestinationManager</depends> <depends>jboss.mq:service=SecurityManager</depends> <depends>jboss.mq:service=Invoker</depends> <depends>jboss.mq:service=InvocationLayer,type=HTTPSUIL2</depends> <depends>jboss.mq.destination:service=Topic,name=discoveryResults</depends> <depends>jboss.web:service=WebServer</depends> <depends>jboss:service=TransactionManager</depends> <depends>jboss.security:service=JaasSecurityDomain,domain=RMI+SSL</depends> <depends>jboss.mq:service=HTTPInvocationLayer,type=HTTPS</depends> <depends>jboss:service=invoker,type=https</depends> <depends>jboss:service=invoker,type=https,target=Naming</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> <invoker-proxy-bindings> <!-- A custom invoker for RMI/SSL --> <invoker-proxy-binding> <name>stateless-ssl-invoker</name> <invoker-mbean> jboss:service=invoker,type=jrmp,socketType=SSL </invoker-mbean> <proxy-factory>org.jboss.proxy.ejb.ProxyFactory</proxy-factory> <proxy-factory-config> <client-interceptors> <home> <interceptor>org.jboss.proxy.ejb.HomeInterceptor</interceptor> <interceptor>org.jboss.proxy.SecurityInterceptor</interceptor> <interceptor>org.jboss.proxy.TransactionInterceptor</intercep> <interceptor>org.jboss.invocation.InvokerInterceptor</interce> </home> <bean> <interceptor>org.jboss.proxy.ejb.StatelessSessionInterceptor< /interceptor> <interceptor>org.jboss.proxy.SecurityInterceptor</interceptor> <interceptor>org.jboss.proxy.TransactionInterceptor</intercep> <interceptor>org.jboss.invocation.InvokerInterceptor</interce> </bean> </client-interceptors> </proxy-factory-config> </invoker-proxy-binding> <!-- A custom invoker for RMI/HTTPs --> <invoker-proxy-binding> <name>stateless-https-invoker</name> <invoker-mbean> jboss:service=invoker,type=https </invoker-mbean> <proxy-factory>org.jboss.proxy.ejb.ProxyFactory</proxy-factory> <proxy-factory-config> <client-interceptors> <home> <interceptor>org.jboss.proxy.ejb.HomeInterceptor</interceptor> <interceptor>org.jboss.proxy.SecurityInterceptor</interceptor> <interceptor>org.jboss.proxy.TransactionInterceptor</intercep> <interceptor>org.jboss.invocation.InvokerInterceptor</interce> </home> <bean> <interceptor>org.jboss.proxy.ejb.StatelessSessionInterceptor< /interceptor> <interceptor>org.jboss.proxy.SecurityInterceptor</interceptor> <interceptor>org.jboss.proxy.TransactionInterceptor</intercep> <interceptor>org.jboss.invocation.InvokerInterceptor</interce> </bean> </client-interceptors> </proxy-factory-config> </invoker-proxy-binding> <!-- A custom invoker for JMS/HTTPs --> <invoker-proxy-binding> <name>message-driven-bean-https</name> <invoker-mbean> jboss.mq:service=HTTPInvocationLayer,type=HTTPS </invoker-mbean> <proxy-factory>org.jboss.ejb.plugins.jms.JMSContainerInvoker</proxy-fac> <proxy-factory-config> <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.MessageDriven InstanceInterceptor</interceptor> <interceptor transaction="Bean">org.jboss.ejb.plugins.MessageDriven TxInterceptorBMT</interceptor> <interceptor transaction="Bean" metricsEnabled="false">org.jboss.ej b.plugins.MetricsInterceptor</interceptor> <interceptor>org.jboss.resource.connectionmanager.CachedConnectionI nterceptor</interceptor> </container-interceptors> <instance-pool>org.jboss.ejb.plugins.MessageDrivenInstancePool</instan> <instance-cache></instance-cache> <persistence-manager></persistence-manager> <container-pool-conf> <MaximumSize>100</MaximumSize> </container-pool-conf> <depends>jboss.mq:service=DestinationManager</depends> <depends>jboss.mq:service=SecurityManager</depends> <depends>jboss.mq:service=Invoker</depends> <depends>jboss.mq:service=InvocationLayer,type=HTTPSUIL2</depends> <depends>jboss.web:service=WebServer</depends> <depends>jboss:service=TransactionManager</depends> <depends>jboss.security:service=JaasSecurityDomain,domain=RMI+SSL</dep> <depends>jboss.mq:service=HTTPInvocationLayer,type=HTTPS</depends> <depends>jboss:service=invoker,type=https</depends> <depends>jboss:service=invoker,type=https,target=Naming</depends> <depends>jboss.mq:service=JMSProviderLoader,type=https,name=HTTPSJMSProvider,socketType=SSL</depends> </container-configuration> </container-configurations> </jboss>