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

Java 在JBoss中使用代理服务器配置Websphere MQConnectionFactory,java,authentication,jboss,proxy,ibm-mq,Java,Authentication,Jboss,Proxy,Ibm Mq,我想使用Websphere MQ 7提供的资源适配器,从JBoss AS server 5.1连接到运行在公司网络之外的服务器上的WSMQ队列 我设置了一个连接工厂,并希望将其配置为使用我们的代理服务器,这是连接到网络外的机器所必需的。我们的代理服务器需要身份验证 我找到了MQConnectionFactory属性proxyHostName和proxyPort,但无法添加身份验证用户名/密码 String userId = "test"; String password = "password"

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

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

我找到了MQConnectionFactory属性proxyHostName和proxyPort,但无法添加身份验证用户名/密码

String userId = "test";
String password = "password";
mqQueueConnectionFactory = new com.ibm.mq.jms.MQQueueConnectionFactory();
QueueConnection queueConnection =
mqQueueConnectionFactory.createQueueConnection(userId,password);
Java属性http.proxyHost等没有任何区别,这是有意义的,因为JMS不使用http

配置socksproxy主机、socksproxy端口、java.net.socks.username和java.net.socks.password属性也没有效果


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

您需要用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);

您需要使用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);

实例化MQQueueConnectionFactory时, 创建QueueConnection实例有两种方法,一种方法允许您指定用户ID和密码

String userId = "test";
String password = "password";
mqQueueConnectionFactory = new com.ibm.mq.jms.MQQueueConnectionFactory();
QueueConnection queueConnection =
mqQueueConnectionFactory.createQueueConnection(userId,password);

实例化MQQueueConnectionFactory时, 创建QueueConnection实例有两种方法,一种方法允许您指定用户ID和密码

String userId = "test";
String password = "password";
mqQueueConnectionFactory = new com.ibm.mq.jms.MQQueueConnectionFactory();
QueueConnection queueConnection =
mqQueueConnectionFactory.createQueueConnection(userId,password);