3

我正在使用spring来获取jms的连接工厂

<!-- looking through jndi -->
<bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate">
<property name="environment">
    <props>
        <prop key="java.naming.factory.initial">weblogic.jndi.WLInitialContextFactory</prop>
        <prop key="java.naming.provider.url">t3://xxx.xxx.xx.x:8002</prop>
        <prop key="java.naming.security.principal">test</prop>
        <prop key="java.naming.security.credentials">test</prop>
    </props>
</property>
</bean>

<!-- JMS Topic Connection Factory -->
<bean id="jmsConnectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiTemplate" ref="jndiTemplate" />
    <property name="jndiName" value="jms/AMP/AMPConnectionFactory" />
    <property name="lookupOnStartup" value="true" />
    <property name="cache" value="false" />
    <property name="proxyInterface" value="javax.jms.ConnectionFactory" />
</bean>

应用程序本身在 weblogic 的一个实例上运行,而 jndi 查找在外部 weblogic 服务器上执行。问题是,当我尝试在上述“jmsConnectionFactory”的帮助下创建连接时,我收到错误:

Caused by: java.lang.SecurityException: [Security:090398]Invalid Subject: principals=[weblogic, Administrators]

似乎我的“jmsConnectionFactory”没有使用适当的凭据来打开连接。在我以编程方式通过 jndi 获得“jmsConnectionFactory”的同时,没有弹簧容器,一切正常。有什么线索为什么spring的连接工厂使用另一个凭据来获取连接?

4

0 回答 0