我想使用Websphere MQ(7)提供的资源适配器从JBoss AS服务器(5.1)连接到WSMQ队列(在公司网络外部的服务器上运行)。
我设置了一个连接工厂,并希望将其配置为使用我们的代理服务器,这是连接到网络外部的计算机所必需的。我们的代理服务器需要身份验证。
我找到了{MQConnectionFactory
)属性proxyHostName
和proxyPort
,但没有办法添加身份验证(用户名/密码)。
Java属性http.proxyHost
等没有任何区别,这是有道理的,因为JMS不使用http。
配置socksProxyHost
,socksProxyPort
,java.net.socks.username
和java.net.socks.password
属性也无效。
我在这里不知所措,如何使用需要身份验证的代理服务器从JBoss AS连接到远程WSMQ队列?
答案 0 :(得分:7)
您需要使用org.springframework.jms.connection.UserCredentialsConnectionFactoryAdapter
包装MQConnectionFactory MQConnectionFactory connectionFactory = new MQConnectionFactory();
connectionFactory.setTransportType(1);
connectionFactory.setHostName("localhost");
connectionFactory.setPort(1415);
connectionFactory.setQueueManager("DEV.QMGR");
UserCredentialsConnectionFactoryAdapter connectionFactoryAdapter=new UserCredentialsConnectionFactoryAdapter();
connectionFactoryAdapter.setTargetConnectionFactory(connectionFactory);
connectionFactoryAdapter.setUsername("myusername");
connectionFactoryAdapter.setPassword("mypassword");
JmsComponent jmsComponent = new JmsComponent();
jmsComponent.setConnectionFactory(connectionFactoryAdapter);
答案 1 :(得分:1)
实例化MQQueueConnectionFactory时 您有两种方法可以创建QueueConnection实例,其中一种方法可以指定userId和密码。
String userId = "test";
String password = "password";
mqQueueConnectionFactory = new com.ibm.mq.jms.MQQueueConnectionFactory();
QueueConnection queueConnection =
mqQueueConnectionFactory.createQueueConnection(userId,password);