在经过数小时的调查发现QCF忽略了给予它的JAAS身份验证,而是使用自己的方法获取WAS user.name并将其传递给MQ时,WAS QCF尝试连接到MQ时出现以下错误以获得连接并失败。.有人知道为什么WAS QCF在这里忽略JAAS身份验证。我看到了一个post,但没有看到具体的答案。
错误:
{{1}}
答案 0 :(得分:0)
您需要按以下方式将用户凭据传递给QueueConnection:
QueueConnection conn = cf.createQueueConnection(userID, password);
conn.start();
其中cf是QueueConnectionFactory。
即
try
{
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.fscontext.RefFSContextFactory");
env.put(Context.PROVIDER_URL, "file:/" + "some_path_to_mq_jndi"
Context ctx = new InitialContext(env);
cf = (QueueConnectionFactory) ctx.lookup("myQCF");
}
catch (NamingException e)
{
System.err.println(e.getLocalizedMessage());
e.printStackTrace();
throw e;
}