Я пытаюсь просмотреть очередь JMS на JBoss AS 7.1.1.Final с помощью Hermes JMS, но получаю «пустое» дерево JNDI. Чтобы исследовать это, я написал простую программу для создания дампа узлов дерева JNDI с сервера JBoss. Код примерно такой:
public static void main(String[] args) throws Exception {
final Properties jndiProperties = getJboss7Properties();
// final Properties jndiProperties = getHornetQProperties();
// Dumps the initial context contents
InitialContext ctx = new InitialContext(jndiProperties);
listRootJndiContext(ctx);
// Simple lookup
System.out.println(ctx.lookup("java:jms/RemoteConnectionFactory")
.getClass().getName());
}
private static Properties getJboss7Properties() {
final Properties jndiProperties = new Properties();
jndiProperties.put(Context.INITIAL_CONTEXT_FACTORY,
"org.jboss.naming.remote.client.InitialContextFactory");
jndiProperties.put(Context.PROVIDER_URL, "remote://localhost:4447");
jndiProperties.put(Context.SECURITY_PRINCIPAL, "guest");
jndiProperties.put(Context.SECURITY_CREDENTIALS, "guest123");
return jndiProperties;
}
private static void listRootJndiContext(Context ctx) throws NamingException {
System.out.println("Listing root JNDI context:");
NamingEnumeration<NameClassPair> list = ctx.list("");
if (list.hasMore()) {
while (list.hasMore()) {
NameClassPair ncp = list.next();
System.out.println(ncp.getName() + " (" + ncp.getClassName() + ")");
}
} else {
System.out.println("Empty list!");
}
}
При вызове ctx.list("")
возвращаемый список всегда пуст, хотя ctx.lookup("java:jms/RemoteConnectionFactory")
возвращает фабрику соединений JMS, как и ожидалось.
Я попытался запустить точно такой же код на автономном сервере HornetQ (2.2.14.Final), изменив свойства InitialContext, чтобы использовать «старый» протокол jnp, и узлы дерева JNDI были правильно сброшены.
Я также попытался запустить тот же код (за исключением вызова конструктора InitialContext() по умолчанию) на сервере (в сервлете), и он также работал, как и ожидалось (сброс узлов дерева JNDI).
Есть ли какое-либо разрешение для настройки стандартного.xml или что-то в этом роде?
Реализована ли вообще эта функция («Удаленный просмотр JNDI») в JBoss AS 7.1.1.Final?