users@genericjmsra.java.net

Re: Multiple MDBs with Single CF

From: Jaideep Chhabra <Jaideep.Chhabra_at_Sun.COM>
Date: Wed, 11 Jan 2006 14:56:19 +0530

It works now,

looks like if you leave the default user id and passowrd blank in the cf
  (Sun Message Queue), then we get the user=empty/blank error.

The adapter uses the UserName and Password properties correctly.

Thanks
Jaideep

Jaideep Chhabra wrote:
> 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
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe_at_genericjmsra.dev.java.net
> For additional commands, e-mail: users-help_at_genericjmsra.dev.java.net
>