1

私はSpring 3.0を使用しており、JBossアプリケーションサーバー内でリモートWebLogicアプリケーションサーバーへのJNDIルックアップを実行しています。WebLogic JNDI サーバーに接続するためのプロパティは、 soa.propertiesというプロパティ ファイルに含まれています。JndiTemplate Beanを初期化するためのspring-config.xmlは次のようになります。

    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
      <list>
        <value>classpath:app.properties</value>
        <value>classpath:soa.properties</value>
      </list>
    </property>
  </bean>
  <bean id="soaJndiTemplate" class="org.springframework.jndi.JndiTemplate">
    <property name="environment">
        <props>
            <prop key="java.naming.factory.initial">${soa.provider.initial}</prop>
            <prop key="java.naming.provider.url">${soa.provider.url}</prop>
            <prop key="java.naming.security.principal">${soa.security.principal}</prop>
            <prop key="java.naming.security.credentials">${soa.security.credentials}</prop>
        </props>
    </property>
  </bean>

これは、soa.propertiesファイルから値を引き出すには問題なく機能しますが、WebLogic JNDI 接続の値を JBoss JNDI ツリーから引き出すことをお勧めします。

私の問題は、初期化にプロパティを必要とする InitialContext オブジェクトの初期化にあるようです。

WebLogic JNDI 接続のすべての JNDI 文字列値を JBoss JNDI に入れました。以下は、値を取り出してJndiTemplate Bean を初期化するために使用しているコードです。

<bean id="soaUrl" class="org.springframework.jndi.JndiObjectFactoryBean">
  <property name="jndiName"       value="soa/provider/url" />
</bean>
<bean id="soaFactory" class="org.springframework.jndi.JndiObjectFactoryBean">
  <property name="jndiName"       value="soa/provider/connection/factory" />
</bean>
<bean id="soaInitial" class="org.springframework.jndi.JndiObjectFactoryBean">
  <property name="jndiName"       value="soa/provider/initial" />
</bean>
<bean id="soaPrincipal" class="org.springframework.jndi.JndiObjectFactoryBean">
  <property name="jndiName"       value="soa/security/principal" />
</bean>
<bean id="soaCredential" class="org.springframework.jndi.JndiObjectFactoryBean">
  <property name="jndiName"       value="soa/security/credential" />
</bean>
<bean id="testsoaJndiTemplate" class="org.springframework.jndi.JndiTemplate">
  <property name="environment">
    <map>
      <entry key="java.naming.factory.initial"  value-ref="soaUrl" />
      <entry key="java.naming.provider.url"     value-ref="soaFactory" />
      <entry key="java.naming.provider.initial" value-ref="soaInitial" />
      <entry key="java.security.principal"      value-ref="soaPrincipal" />
      <entry key="java.security.credential"     value-ref="soaCredential" />
    </map>
  </property>
</bean>

私のアプリケーションはこれらの Bean を作成した状態で表示されますが、testsoaJndiTemplatesoaConnectionFactoryのように指定して使用すると、うまくいきません。

<bean id="soaConnectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiTemplate"   ref="testsoaJndiTemplate" />
    <property name="jndiName"       value="${soa.provider.connection.factory.name}" />
</bean>

エラーは非常にわかりにくいので、意味があります。ありがとう

4

0 に答える 0