Se connecter à EMS file d'attente JMS à l'aide de Spring3 + JNDI
Je vais avoir quelques questions de créer une connexion (et de lecture) d'un Tibco EMS, file d'attente JMS.
<beans>
<bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate">
<property name="environment">
<props>
<prop key="java.naming.factory.initial">com.tibco.tibjms.naming.TibjmsInitialContextFactory</prop>
<prop key="java.naming.provider.url">tcp://ems-dit-am-uat-1.app.xxx.net:30055</prop>
</props>
</property>
</bean>
<bean id="jmsConnectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiTemplate" ref="jndiTemplate" /> <property name="jndiName"
value="DRDRFIQueueConnectionFactory" /> </bean>
<bean id="jmsDestinationResolver"
class="org.springframework.jms.support.destination.JndiDestinationResolver">
<property name="jndiTemplate" ref="jndiTemplate" />
<property name="cache" value="true" />
</bean>
<bean id="destination" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiTemplate" ref="jndiTemplate" />
<property name="jndiName" value="Q.NY.DERIV.DRD.RFI" />
</bean>
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="jmsConnectionFactory" />
<property name="destinationResolver" ref="jmsDestinationResolver" />
<property name="defaultDestination" ref="destination" />
</bean>
<bean id="jmsReceiver" class="com.csfb.fao.rds.rfi.application.DRDReceiverTst">
<property name="jmsTemplate">
<ref bean="jmsTemplate" />
</property>
</bean>
</beans>
L'exception que j'obtiens est:
javax.de nommage.AuthenticationException: Non permis: nom non valide ou
mot de passe [Root exception javax.jms.JMSSecurityException: invalides
le nom ou le mot de passe]
com.tibco.tibjms.de nommage.TibjmsContext.recherche(TibjmsContext.java:668)
au
com.tibco.tibjms.de nommage.TibjmsContext.recherche(TibjmsContext.java:489)
au javax.de nommage.InitialContext.recherche(InitialContext.java:392) à
org.springframework.jndi.JndiTemplate$1.doInContext(JndiTemplate.java:154)
au
org.springframework.jndi.JndiTemplate.execute(JndiTemplate.java:87)
au
org.springframework.jndi.JndiTemplate.recherche(JndiTemplate.java:152)
au
org.springframework.jndi.JndiTemplate.recherche(JndiTemplate.java:178)
au
org.springframework.jndi.JndiLocatorSupport.recherche(JndiLocatorSupport.java:95)
au
org.springframework.jndi.JndiObjectLocator.recherche(JndiObjectLocator.java:105)
au
org.springframework.jndi.JndiObjectFactoryBean.lookupWithFallback(JndiObjectFactoryBean.java:201)
au
org.springframework.jndi.JndiObjectFactoryBean.afterPropertiesSet(JndiObjectFactoryBean.java:187)
au
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1477)
au
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1417)
... 12 plus
Le seul utilisateur/mot de passe que j'ai donné est pour la file d'attente JMS - où puis-je régler ça?
Merci
Chris
OriginalL'auteur ChrisM | 2011-07-20
Vous devez vous connecter pour publier un commentaire.
Eu besoin d'envelopper l'usine de raccordement dans un UserCredentialsConnectionFactory:
OriginalL'auteur ChrisM
J'ai eu quelques problème similaire , la solution était d'ajouter (en plus de la solution de cette question)
à
jndiTemplate
bean configurationOriginalL'auteur Paweł Kaczorowski
Je n'ai pas d'expérience avec les EMS, mais l'utilisateur et le mot de passe sont généralement fixés sur la connexion de l'usine, de sorte que vous ne souhaitez configurer que sur l'objet fourni par JNDI.
Vous n'avez pas de là. Le JndiObjectFactoryBean seulement récupère un objet à partir du registre JNDI. L'usine de raccordement, d'être la chose responsable de la création de connexions, c'est où vous devez définir les informations d'identification. Vous avez besoin d'aller là où l'usine de raccordement est en cours de configuration dans JNDI et de l'y fixer.
OriginalL'auteur Ryan Stewart