在JBoss中使用代理服务器配置Websphere MQConnectionFactory

时间:2011-11-29 14:59:02

标签: java authentication jboss proxy ibm-mq

我想使用Websphere MQ(7)提供的资源适配器从JBoss AS服务器(5.1)连接到WSMQ队列(在公司网络外部的服务器上运行)。

我设置了一个连接工厂,并希望将其配置为使用我们的代理服务器,这是连接到网络外部的计算机所必需的。我们的代理服务器需要身份验证。

我找到了{MQConnectionFactory)属性proxyHostNameproxyPort,但没有办法添加身份验证(用户名/密码)。

Java属性http.proxyHost等没有任何区别,这是有道理的,因为JMS不使用http。

配置socksProxyHostsocksProxyPortjava.net.socks.usernamejava.net.socks.password属性也无效。

我在这里不知所措,如何使用需要身份验证的代理服务器从JBoss AS连接到远程WSMQ队列?

2 个答案:

答案 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);