2011-07-20 18 views
3

Tibco EMS JMSキューへの接続を作成する際に問題が発生しました。Spring3 + JNDIを使用してEMS 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> 

私は取得しています例外は次のとおりです。

javax.naming.AuthenticationException:不可:無効な名前または パスワード[ルート例外さjavax.jms.JMSSecurityException:無効 名またはパスワード】 でcom.tibco.tibjms.naming.TibjmsContext.lookup(TibjmsContext.java:668) でcom.tibco.tibjms.naming.TibjmsContext.lookup(TibjmsContext.java:489) のjavax.naming.InitialContextました。 lookup(InitialContext.java:392)at org.springframework.jndi.JndiTemplate.lookup(でorg.springframework.jndi.JndiTemplate $ 1.doInContext(JndiTemplate.java:154) でorg.springframework.jndi.JndiTemplate.execute(JndiTemplate.java:87) JndiTemplate.java:152) でorg.springframework.jndi.JndiTemplate.lookup(JndiTemplate.java:178) でorg.springframework.jndi.JndiLocatorSupport.lookup(JndiLocatorSupport.java:95) org.springframeworkで.jndi.JndiObjectLocator.lookup(JndiObjectLocator.java:105) at org.springframework.jndi.JndiObjectFactoryBean.lookupWithFallback(JndiObjectFactoryBean.java:201) at org.springframework.jndi.JndiObjectFactoryBean.afterPropertiesSet(JndiObjectFactoryBean.java:187) org.springframework.beans.factoryでorg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1477) で.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1417) ...もっと12

私が与えられてきた唯一のユーザー/パスワードは、JMSキュー自身のためである - 私はそれを設定するのですか?

おかげ クリスは

答えて

2

はそれを手に入れた - UserCredentialsConnectionFactoryに接続ファクトリをラップするために必要な:

<bean id="authenticationConnectionFactory" 
    class="org.springframework.jms.connection.UserCredentialsConnectionFactoryAdapter"> 
    <property name="targetConnectionFactory" ref="jmsConnectionFactory" /> 
    <property name="username" value="yyyyy" /> 
    <property name="password" value="xxxx" /> 
</bean> 

<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"> 
    <property name="connectionFactory" ref="authenticationConnectionFactory" /> 
    <property name="destinationResolver" ref="jmsDestinationResolver" /> 
    <property name="defaultDestination" ref="destination" /> 
1

私はEMSでの経験を持っていないが、ユーザとパスワードは、通常の接続ファクトリに設定されているので、あなたは、JNDIによって提供されているオブジェクトの上にそれを設定したいと思います。

+0

JMS接続ファクトリを返すJndiObjectFactoryBeanでuser/pwdを設定するにはどうすればよいですか?私は上記の 'jmsConnectionFactory' Beanに設定することはできません.... – ChrisM

+0

@Chris:あなたはそれを設定しません。 JndiObjectFactoryBeanは、JNDIレジストリからのみオブジェクトを取得します。接続を作成する担当者である接続ファクトリは、資格情報を設定する必要があります。接続ファクトリがJNDIで設定されている場所であれば、どこにでも移動してそこに修正する必要があります。 –

2

私はいくつかの同様の問題があった、ソリューションがjndiTemplateに(この質問の解決策に加えて)

<prop key="java.naming.security.principal">username</prop> 
<prop key="java.naming.security.credentials">password</prop> 

を追加しましたbeanコンフィグレーション

関連する問題