users@genericjmsra.java.net

Re: Multiple MDBs with Single CF

From: Jaideep Chhabra <Jaideep.Chhabra_at_Sun.COM>
Date: Wed, 11 Jan 2006 12:20:51 +0530

Here is the stack trace and the DDs

**************** Stack Trace **********

[#|2006-01-11T01:25:59.516-0500|WARNING|sun-appserver-ee8.1|javax.enterprise.system.stream.err|_ThreadID=13;|javax.resource.ResourceException:
[C4084]: User authentication failed: user=empty/blank,
broker=sadie.east:8787(37767)
        at
com.sun.genericra.util.ExceptionUtils.newResourceException(ExceptionUtils.java:68)
        at
com.sun.genericra.inbound.InboundJmsResourcePool.initialize(InboundJmsResourcePool.java:83)
        at
com.sun.genericra.inbound.EndpointConsumer.initialize(EndpointConsumer.java:119)
        at
com.sun.genericra.inbound.EndpointConsumer.start(EndpointConsumer.java:112)
        at com.sun.genericra.GenericJMSRA.endpointActivation(GenericJMSRA.java:97)
        at
com.sun.enterprise.connectors.inflow.ConnectorMessageBeanClient.setup(ConnectorMessageBeanClient.java:221)
        at
com.sun.ejb.containers.MessageBeanContainer.<init>(MessageBeanContainer.java:187)
        at
com.sun.ejb.containers.ContainerFactoryImpl.createContainer(ContainerFactoryImpl.java:221)
        at
com.sun.enterprise.server.AbstractLoader.loadEjbs(AbstractLoader.java:477)
        at
com.sun.enterprise.server.ApplicationLoader.load(ApplicationLoader.java:125)
        at
com.sun.enterprise.server.HttpServiceApplicationLoader.load(HttpServiceApplicationLoader.java:97)
        at
com.sun.enterprise.server.ApplicationManager.applicationDeployed(ApplicationManager.java:224)
        at
com.sun.enterprise.server.ApplicationManager.applicationDeployed(ApplicationManager.java:164)
        at
com.sun.enterprise.server.ApplicationManager.applicationDeployed(ApplicationManager.java:486)
        at
com.sun.enterprise.admin.event.AdminEventMulticaster.invokeApplicationDeployEventListener(AdminEventMulticaster.java:872)
        at
com.sun.enterprise.admin.event.AdminEventMulticaster.handleApplicationDeployEvent(AdminEventMulticaster.java:856)
        at
com.sun.enterprise.admin.event.AdminEventMulticaster.processEvent(AdminEventMulticaster.java:424)
         at
com.sun.enterprise.admin.event.AdminEventMulticaster.multicastEvent(AdminEventMulticaster.java:139)
         at
com.sun.enterprise.ee.admin.mbeans.ServerRuntimeMBean.forwardEvent(ServerRuntimeMBean.java:64)
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
         at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
         at java.lang.reflect.Method.invoke(Method.java:585)
         at
com.sun.enterprise.admin.MBeanHelper.invokeOperationInBean(MBeanHelper.java:302)
         at
com.sun.enterprise.admin.runtime.BaseRuntimeMBean.invoke(BaseRuntimeMBean.java:383)
         at
com.sun.jmx.mbeanserver.DynamicMetaDataImpl.invoke(DynamicMetaDataImpl.java:213)
         at com.sun.jmx.mbeanserver.MetaDataImpl.invoke(MetaDataImpl.java:220)
         at
com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:815)
         at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:784)
         at
javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1408)
         at
javax.management.remote.rmi.RMIConnectionImpl.access$100(RMIConnectionImpl.java:81)
         at
javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1245)
         at
javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1341)
         at
javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:782)
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
         at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
         at java.lang.reflect.Method.invoke(Method.java:585)
         at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:294)
         at sun.rmi.transport.Transport$1.run(Transport.java:153)
         at java.security.AccessController.doPrivileged(Native Method)
         at sun.rmi.transport.Transport.serviceCall(Transport.java:149)
         at
sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460)
         at
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:701)
         at java.lang.Thread.run(Thread.java:595)
Caused by: com.sun.messaging.jms.JMSSecurityException: [C4084]: User
authentication failed: user=empty/blank, broker=sadie.east:8787(37767)
        at
com.sun.messaging.jmq.jmsclient.ProtocolHandler.authenticate(ProtocolHandler.java:819)
         at
com.sun.messaging.jmq.jmsclient.ProtocolHandler.hello(ProtocolHandler.java:749)
         at
com.sun.messaging.jmq.jmsclient.ProtocolHandler.hello(ProtocolHandler.java:679)
         at
com.sun.messaging.jmq.jmsclient.ConnectionImpl.hello(ConnectionImpl.java:394)
         at
com.sun.messaging.jmq.jmsclient.ConnectionImpl.openConnection(ConnectionImpl.java:1924)
         at
com.sun.messaging.jmq.jmsclient.ConnectionImpl.init(ConnectionImpl.java:712)
         at
com.sun.messaging.jmq.jmsclient.ConnectionImpl.<init>(ConnectionImpl.java:293)
         at
com.sun.messaging.jmq.jmsclient.UnifiedConnectionImpl.<init>(UnifiedConnectionImpl.java:33)
         at
com.sun.messaging.jmq.jmsclient.XAConnectionImpl.<init>(XAConnectionImpl.java:32)
         at
com.sun.messaging.XAConnectionFactory.createXAConnection(XAConnectionFactory.java:65)
         at
com.sun.messaging.XAConnectionFactory.createXAConnection(XAConnectionFactory.java:43)
         at
com.sun.genericra.inbound.InboundJmsResourcePool.initialize(InboundJmsResourcePool.java:71)
         ... 43 more
|#]

[#|2006-01-11T01:25:59.606-0500|SEVERE|sun-appserver-ee8.1|javax.enterprise.system.container.ejb.mdb|_ThreadID=13;|MDB00017:
[SimpleMessageEJB]: Exception in creating message-driven bean container:
[java.lang.Exception]|#]


***************************************

************* ejb-jar.xml ************

<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar version="2.1" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd">
   <display-name>SimpleMessageJAR</display-name>
   <enterprise-beans>
     <message-driven>
        <display-name>SimpleMessageEJB</display-name>
        <ejb-name>SimpleMessageEJB</ejb-name>
        <ejb-class>test.mdb.TestMDB</ejb-class>
        <messaging-type>javax.jms.MessageListener</messaging-type>
        <transaction-type>Container</transaction-type>
        <message-destination-type>javax.jms.Topic</message-destination-type>
        <resource-ref>
        <res-ref-name>jms/TCFactory</res-ref-name>
        <res-type>javax.jms.TopicConnectionFactory</res-type>
        <res-auth>Container</res-auth>
        <res-sharing-scope>Shareable</res-sharing-scope>
        </resource-ref>
     </message-driven>
   </enterprise-beans>
   <assembly-descriptor>
     <container-transaction>
       <method>
        <ejb-name>SimpleMessageEJB</ejb-name>
        <method-name>onMessage</method-name>
        <method-params>
           <method-param>javax.jms.Message</method-param>
        </method-params>
       </method>
       <trans-attribute>NotSupported</trans-attribute>
     </container-transaction>
   </assembly-descriptor>
</ejb-jar>

***************************************


************************** sun-ejb-jar.xml **************

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE sun-ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Application
Server 8.1 EJB 2.1//EN"
"http://www.sun.com/software/appserver/dtds/sun-ejb-jar_2_1-1.dtd">

<sun-ejb-jar>
    <enterprise-beans>
    <unique-id>1</unique-id>
        <ejb>
      <ejb-name>SimpleMessageEJB</ejb-name>
        <jndi-name>jms/TestTopic</jndi-name>
        <resource-ref>
        <res-ref-name>jms/TCFactory</res-ref-name>
        <!--
        jndi-name below should be the name of connector-resource created
in step 1 of configuration section above
        -->
        <jndi-name>jms/TCFactory</jndi-name>
        <default-resource-principal>
        <name>user</name>
        <password>password</password>
        </default-resource-principal>
        </resource-ref>
        <mdb-resource-adapter>
        <resource-adapter-mid>genericra</resource-adapter-mid>
        <activation-config>

        <activation-config-property>
        
<activation-config-property-name>DestinationType</activation-config-property-name>
        
<activation-config-property-value>javax.jms.Topic</activation-config-property-value>
        </activation-config-property>

        <activation-config-property>
        
<activation-config-property-name>SubscriptionDurability</activation-config-property-name>
        
<activation-config-property-value>Durable</activation-config-property-value>
        </activation-config-property>

        <activation-config-property>
        
<activation-config-property-name>SubscriptionName</activation-config-property-name>
        
<activation-config-property-value>PUBSTATE_user</activation-config-property-value>
        </activation-config-property>

        <activation-config-property>
        
<activation-config-property-name>ClientID</activation-config-property-name>
          <activation-config-property-value>user</activation-config-property-value>
        </activation-config-property>

        <activation-config-property>
        
<activation-config-property-name>UserName</activation-config-property-name>
          <activation-config-property-value>user</activation-config-property-value>
        </activation-config-property>

        <activation-config-property>
        
<activation-config-property-name>Password</activation-config-property-name>
        
<activation-config-property-value>password</activation-config-property-value>
        </activation-config-property>

        <activation-config-property>
        
<activation-config-property-name>ConnectionFactoryJndiName</activation-config-property-name>
        
<activation-config-property-value>validWorkingValue</activation-config-property-value>
        </activation-config-property>

        <activation-config-property>
        
<activation-config-property-name>DestinationJndiName</activation-config-property-name>
        
<activation-config-property-value>validWorkingValue</activation-config-property-value>
        </activation-config-property>

        </activation-config>
        </mdb-resource-adapter>
        </ejb>
        </enterprise-beans>
</sun-ejb-jar>

*********************************************************


Binod wrote:
> Can you post the complete deployment descriptor?
>
>> Yes that is what it looks like. I have not specified default user id
>> and passowrd parameters in the cf object stored in the jndi. If I do
>> specify some user like guest I get proper error - user not authorized.
>>
>> I missed to place the stack trace, here it is.
>>
>> ************
>> [#|2006-01-10T05:22:09.755-0500|SEVERE|sun-appserver-ee8.1|javax.enterprise.system.core.classloading|_ThreadID=13;|LDR5004:
>> UnExpected error occured while creating ejb container
>> java.lang.Exception
>> at
>> com.sun.enterprise.connectors.inflow.ConnectorMessageBeanClient.setup(ConnectorMessageBeanClient.java:230)
>>
>> at
>> com.sun.ejb.containers.MessageBeanContainer.<init>(MessageBeanContainer.java:187)
>>
>> at
>> com.sun.ejb.containers.ContainerFactoryImpl.createContainer(ContainerFactoryImpl.java:221)
>>
>> at
>> com.sun.enterprise.server.AbstractLoader.loadEjbs(AbstractLoader.java:477)
>>
>> at
>> com.sun.enterprise.server.ApplicationLoader.load(ApplicationLoader.java:125)
>>
>> at
>> com.sun.enterprise.server.HttpServiceApplicationLoader.load(HttpServiceApplicationLoader.java:97)
>>
>> at
>> com.sun.enterprise.server.ApplicationManager.applicationDeployed(ApplicationManager.java:224)
>>
>> at
>> com.sun.enterprise.server.ApplicationManager.applicationDeployed(ApplicationManager.java:164)
>>
>> at
>> com.sun.enterprise.server.ApplicationManager.applicationDeployed(ApplicationManager.java:486)
>>
>> at
>> com.sun.enterprise.admin.event.AdminEventMulticaster.invokeApplicationDeployEventListener(AdminEventMulticaster.java:872)
>> at
>> com.sun.enterprise.admin.event.AdminEventMulticaster.handleApplicationDeployEvent(AdminEventMulticaster.java:856)
>>
>> at
>> com.sun.enterprise.admin.event.AdminEventMulticaster.processEvent(AdminEventMulticaster.java:424)
>>
>> at
>> com.sun.enterprise.admin.event.AdminEventMulticaster.multicastEvent(AdminEventMulticaster.java:139)
>>
>> at
>> com.sun.enterprise.ee.admin.mbeans.ServerRuntimeMBean.forwardEvent(ServerRuntimeMBean.java:64)
>>
>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> at
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>
>> at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>
>> at java.lang.reflect.Method.invoke(Method.java:585)
>> at
>> com.sun.enterprise.admin.MBeanHelper.invokeOperationInBean(MBeanHelper.java:302)
>>
>> at
>> com.sun.enterprise.admin.runtime.BaseRuntimeMBean.invoke(BaseRuntimeMBean.java:383)
>>
>> at
>> com.sun.jmx.mbeanserver.DynamicMetaDataImpl.invoke(DynamicMetaDataImpl.java:213)
>>
>> at com.sun.jmx.mbeanserver.MetaDataImpl.invoke(MetaDataImpl.java:220)
>> at
>> com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:815)
>>
>> at
>> com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:784)
>> at
>> javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1408)
>>
>> at
>> javax.management.remote.rmi.RMIConnectionImpl.access$100(RMIConnectionImpl.java:81)
>>
>> at
>> javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1245)
>>
>> at
>> javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1341)
>>
>> at
>> javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:782)
>>
>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> at
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>
>> at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>
>> at java.lang.reflect.Method.invoke(Method.java:585)
>> at
>> sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:294)
>> at sun.rmi.transport.Transport$1.run(Transport.java:153)
>> at java.security.AccessController.doPrivileged(Native Method)
>> at sun.rmi.transport.Transport.serviceCall(Transport.java:149)
>> at
>> sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460)
>> at
>> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:701)
>>
>> at java.lang.Thread.run(Thread.java:595)
>> Caused by: javax.resource.ResourceException: [C4084]: User
>> authentication failed: user=empty/blank, broker=sadie.east:8787(37767)
>> at
>> com.sun.genericra.util.ExceptionUtils.newResourceException(ExceptionUtils.java:68)
>>
>> at
>> com.sun.genericra.inbound.InboundJmsResourcePool.initialize(InboundJmsResourcePool.java:83)
>>
>> at
>> com.sun.genericra.inbound.EndpointConsumer.initialize(EndpointConsumer.java:119)
>>
>> at
>> com.sun.genericra.inbound.EndpointConsumer.start(EndpointConsumer.java:112)
>>
>> at
>> com.sun.genericra.GenericJMSRA.endpointActivation(GenericJMSRA.java:97)
>> at
>> com.sun.enterprise.connectors.inflow.ConnectorMessageBeanClient.setup(ConnectorMessageBeanClient.java:221)
>>
>> ... 39 more
>> Caused by: com.sun.messaging.jms.JMSSecurityException: [C4084]: User
>> authentication failed: user=empty/blank, broker=sadie.east:8787(37767)
>>
>> ************
>>
>> Regards,
>> Jaideep
>>
>> Binod wrote:
>>
>>> Are you saying that , MDB, actually does not use these properties and
>>> instead it uses
>>> the properties of the object bound in JNDI?
>>>
>>> - Binod.
>>>
>>>> Yes I have specified the UserName and Password in the sun-ejb-jar.xml
>>>>
>>>> here is the entry that I made.
>>>>
>>>> <activation-config-property>
>>>> <activation-config-property-name>UserName</activation-config-property-name>
>>>>
>>>> <activation-config-property-value>name</activation-config-property-value>
>>>>
>>>> </activation-config-property>
>>>> <activation-config-property>
>>>> <activation-config-property-name>Password</activation-config-property-name>
>>>>
>>>> <activation-config-property-value>password</activation-config-property-value>
>>>>
>>>> </activation-config-property>
>>>>
>>>>
>>>> Regards,
>>>> Jaideep
>>>>
>>>>
>>>>
>>>>
>>>> Binod wrote:
>>>>
>>>>> Hi Jaideep,
>>>>>
>>>>>> Hi Binod,
>>>>>>
>>>>>> I got struck at a place, can you pls. suggest something here.
>>>>>>
>>>>>> In our setup we have four topics and MDBs listening to these
>>>>>> topics, additionally we have four users privileged to
>>>>>> subscribe/listen to these topics. We have configured subscription
>>>>>> type as durable in the MDB.
>>>>>> We want to have a single connection factory/connector connection
>>>>>> pool , and have the four mdbs deployed using the genericjmsra.
>>>>>> I am trying to configure a single durable mdb on one of the
>>>>>> topics. I am not able to specify the user id password for the
>>>>>> connection factory. I want to have it set at the time of
>>>>>> deployment so that I can specify different user ids for all the
>>>>>> four MDBs.
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> I thought you can specify UserName and Password as explicit
>>>>> activation-config properties or connection pool property. You dont
>>>>> need to depend
>>>>> on bound JNDI object for that. Did you try that?
>>>>>
>>>>> thanks,
>>>>> Binod.
>>>>>
>>>>>> I can't specify the user id and password in the cf stored in the
>>>>>> ldap as that would not allow the other MDB to connect to their
>>>>>> respective topics.
>>>>>>
>>>>>>
>>>>>> Regards,
>>>>>> Jaideep
>>>>>>
>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: users-unsubscribe_at_genericjmsra.dev.java.net
>>>>> For additional commands, e-mail: users-help_at_genericjmsra.dev.java.net
>>>>>
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: users-unsubscribe_at_genericjmsra.dev.java.net
>>>> For additional commands, e-mail: users-help_at_genericjmsra.dev.java.net
>>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscribe_at_genericjmsra.dev.java.net
>>> For additional commands, e-mail: users-help_at_genericjmsra.dev.java.net
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe_at_genericjmsra.dev.java.net
>> For additional commands, e-mail: users-help_at_genericjmsra.dev.java.net
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe_at_genericjmsra.dev.java.net
> For additional commands, e-mail: users-help_at_genericjmsra.dev.java.net
>