javax.jms.JMSSecurityException:MQJMS2008:无法打开MQ队列
|
我有一个基于JMS的应用程序,该应用程序正在Websphere 6.0上运行,并且正在迁移到Websphere7。两个Websphere服务器都支持Websphere MQ 6.0服务器。尝试将测试servlet部署到Websphere 7服务器时,我收到以下异常:
javax.jms.JMSSecurityException:MQJMS2008:无法打开MQ队列
Websphere 6.0:RHEL 5.3
Websphere 7.0.0.15:RHEL 5.3
Websphere MQ 6.0:Windows Server 2003
Servlet测试代码:
public class JMSTestServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
String MQConnectionFactory, MQQueue;
public JMSTestServlet() {
super();
// TODO Auto-generated constructor stub
System.out.println(\"JMSTestServlet: loading\");
URL urlProps = getClass().getClassLoader().getResource(\"META-INF/startup.properties\");
Properties props = new Properties();
try
{
System.out.println(\"JMSTestServlet: loading properties\");
props.load( urlProps.openStream() );
MQConnectionFactory = props.getProperty(\"MQConnectionFactory\");
MQQueue = props.getProperty(\"MQQueue\");
System.out.println(\"JMSTestServlet: loading properties ... done!\");
sendMessage(\"ABCDEFGHIJKLMNOPQRSTUVWXYZ\");
} catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
protected void sendMessage(String messageString) {
QueueConnectionFactory fact;
QueueConnection qConn = null;
try {
System.out.println(\"JMSTestServlet: creating context\");
Context ctx = new InitialContext();
fact = (QueueConnectionFactory)ctx.lookup(MQConnectionFactory);
Destination destination = (Destination)ctx.lookup(MQQueue);
System.out.println(\"JMSTestServlet: creating QueueConnection\");
qConn = fact.createQueueConnection();
QueueSession qSess = qConn.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
MessageProducer prod = qSess.createProducer(destination);
System.out.println(\"JMSTestServlet: sending Message\");
TextMessage message = qSess.createTextMessage();
message.setText(messageString);
prod.send(message);
System.out.println(\"JMSTestServlet: done sendMessage()\");
} catch ( JMSException ex ) {
ex.toString();
ex.printStackTrace();
ex.getLinkedException().toString();
ex.getLinkedException().printStackTrace();
} catch ( NamingException ex ) {
System.out.println(\"JMSTestServlet: naming exception \" + ex.toString());
ex.printStackTrace();
} catch ( Exception ex ) {
System.out.println(\"JNDI API lookup failed: \" + ex.toString());
ex.printStackTrace();
} finally {
System.out.println(\"JMSTestServlet: cleaning up sendMessage()\");
try
{
if ( qConn != null ) qConn.close();
} catch (JMSException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
String messageString = request.getParameter(\"message\");
sendMessage(messageString);
} finally {
}
}
属性文件是:
MQConnectionFactory=jms/QUEUECONNFACTORY
MQQueue=jms/QUEUE
部署到Websphere 6后,我会在远程队列中收到消息。当我部署到Websphere 7时,我得到:
[4/13/11 14:53:55:622 EDT] 0000005c ConnectionEve A J2CA0056I: The Connection Manager received a fatal connection error from the Resource Adapter for resource JMS$QUEUECONNFACTORY$JMSManagedConnection@15. The exception is: javax.jms.JMSSecurityException: MQJMS2008: failed to open MQ queue \'QUEUE\'.
[4/13/11 14:53:55:622 EDT] 0000005c ConnectionEve W J2CA0206W: A connection error occurred. To help determine the problem, enable the Diagnose Connection Usage option on the Connection Factory or Data Source.
[4/13/11 14:53:55:623 EDT] 0000005c ConnectionEve A J2CA0056I: The Connection Manager received a fatal connection error from the Resource Adapter for resource jms/QUEUECONNFACTORY. The exception is: javax.jms.JMSSecurityException: MQJMS2008: failed to open MQ queue \'QUEUE\'.
[4/13/11 14:53:55:625 EDT] 0000005c SystemErr R javax.jms.JMSSecurityException: MQJMS2008: failed to open MQ queue \'QUEUE\'.
我很确定我已经在两个Websphere服务器上配置了相同的队列和连接工厂。我对如何解决此问题一无所知,而Google毫无帮助。
更新2011-04-15:
我从日志中提取了以下错误:
com.ibm.mq.MQException:MQJE001:完成码\'2 \',原因\'2035 \'
我已经在几个位置进行了阅读,但我真的看不到WAS 6和WAS 7之间的差异会导致此问题。
我正在以root用户身份在两台Linux主机上运行websphere。我有一个在Windows计算机上创建的root帐户,该帐户具有对MQ安装的完全权限:
setmqaut -t qmgr -m QM_webspheremq -p根+全部
没有找到相关结果
已邀请:
1 个回复
bab