我正在使用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”没有使用propper凭证来打开连接。在我以编程方式通过jndi获取“jmsConnectionFactory”的同时,没有弹簧容器,一切正常。是否有任何线索为什么spring的连接工厂使用另一个凭证来获得连接?