2012-05-03 15 views
2

私は、Spring 3のリモートJNDIからオブジェクトを取得する方法を知りました。どこでURLを指定しましたか、コンテキストファイルなどでどのように設定しましたか?これが可能であることを示唆する何らかの不快な情報を発見しましたが、別のサーバーにあるJNDiのためにそれを行う方法の特異なソースはありません。SpringのリモートJNDIへのアクセス

答えて

2

あなたはこのような基本構成の中に、例えば、JndiObjectFactoryBeanクラスを使用することができます。

<bean id="someId" class="org.springframework.jndi.JndiObjectFactoryBean"> 
     <property name="jndiName" value="yourLookupNameGoesHere" /> 
     <property name="jndiEnvironment"> 
      <props> 
       <prop key="java.naming.provider.url">yourRemoteServerGoesHere:PortGoesHere</prop> 
       <prop key="java.naming.factory.initial">yourNamingContextFactoryGoesHere</prop> 
       <prop key="java.naming.factory.url.pkgs">yourPackagePrefixesGoHere</prop> 
       <!-- other key=values here --> 
      </props> 
     </property> 
     <!-- other properties here--> 
    </bean> 

必要に応じてあなたは、他のenvironment propertiesを指定することができますし、またthe Spring jee schemaを使用して、構成を簡素化することができます。

0

上記の例では、CAMEL Jmsコンポーネントを使用してJBoss EAP7のリモートactiveMQサーバーに接続する例を拡張しています。

あなたは春のXMLアプリケーションコンテキストでこれらの3つのBeanが必要になります

<bean id="remoteQCF" class="org.springframework.jndi.JndiObjectFactoryBean"> 
    <property name="jndiName" value="${factoryJndiName}" /> 
    <property name="jndiEnvironment"> 
    <props> 
     <prop key="java.naming.provider.url">http-remoting://${remoteHost}:${remotePort}</prop> 
     <prop key="java.naming.factory.initial">org.jboss.naming.remote.client.InitialContextFactory</prop> 
     <!-- other key=values here <prop key="java.naming.factory.url.pkgs">yourPackagePrefixesGoHere</prop> --> 
    </props> 
    </property> 
</bean> 
<bean id="remoteQCFproxy" 
    class="org.springframework.jms.connection.UserCredentialsConnectionFactoryAdapter"> 
    <property name="targetConnectionFactory" ref="remoteQCF" /> 
    <property name="username" value="${username}" /> 
    <property name="password" value="${password}" /> 
</bean> 
<bean id="jmsremote" class="org.apache.camel.component.jms.JmsComponent"> 
    <property name="connectionFactory" ref="remoteQCFproxy" /> 
</bean> 

各$ {xxxは}あなたが場所にしたり、アプリケーションコンテキスト内のプロパティのプレースホルダを提供しなければならない値を表します。

JMSキュー接続を開くためにユーザーとパスワードを必要としない場合は、2番目のBeanを省略して、Camel JmsComponent BeanのconnectionFactoryとして最初のBeanを直接参照できます。

「jmsremote:queue:myQueue1」のようなCAML URIでは 'jmsremote' Beanを使用できます

関連する問題