Как получить доступ к дереву JNDI администратора сервера в кластере weblogic? - PullRequest
0 голосов
/ 18 сентября 2018

У меня есть кластер с сервером администрирования, сервером 1 и сервером 2, приложение развернуто в кластере на сервер 1 и 2.

следующий код работает нормально, если я развертываю приложение в локальной сети,один сервер

InitialContext ctx = new InitialContext(); (MBeanServer) ctx.lookup("java:comp/env/jmx/domainRuntime");

, но после развертывания в кластер происходит сбой (NamingException)

, глядя на дерево JNDI, я вижу, что jmx / domainRuntime доступен только вadminserver.

поэтому в основном это и есть причина моего вопроса, как получить доступ к этому ресурсу в adminserver, если приложение находится на сервере 1 или 2.

заранее спасибо.

1 Ответ

0 голосов
/ 20 сентября 2018

Согласно https://docs.oracle.com/middleware/1213/wls/WJNDI/wls_jndi.htm#i473354 вы должны использовать следующий подход:

Пример 2-7 Использование службы имен в WebLogic Cluster

Hashtable ht = new Hashtable();
ht.put(Context.INITIAL_CONTEXT_FACTORY,
       "weblogic.jndi.WLInitialContextFactory");
ht.put(Context.PROVIDER_URL, "t3://acmeCluster:7001");
try {
  Context ctx = new InitialContext(ht);
  // Do the client's work
}
catch (NamingException ne) {
  // A failure occurred
}
finally {
  try {ctx.close();}
  catch (Exception e) {
    // a failure occurred
  }
}

Вы также должны обратиться к: Как искать ресурсы JNDI в WebLogic?

и содержащийся в нем верхний ответ, т. Е.

Hashtable<String, String> h = new Hashtable<String, String>(7);
h.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
h.put(Context.PROVIDER_URL, pURL); //For example "t3://127.0.0.1:7001"
h.put(Context.SECURITY_PRINCIPAL, pUsername);
h.put(Context.SECURITY_CREDENTIALS, pPassword);

InitialContext context = new InitialContext(h).........
...