2009-08-11 2 views
3

У меня есть две отдельные установки WebSphere. (На самом деле это WebSphere Application Server V6.1 с EJB 3.0 и пакетами веб-сервисов, а другой сервер - WebSphere ESB Server V6.2). Тем не менее, я знаю, что ESB действительно построен поверх WAS, поэтому он имеет все настройки конфигурации, которые имеет сервер regualr WAS.Поиск EJB JNDI на разных серверах WebSphere

На моем ESB-сервере я пытаюсь открыть службу, написанную как EJB 3.0, которая будет развернута на сервере WAS 6.1. Мой вопрос заключается не в том, как получить вызовы EJB 2.1 для вызова в EJB 3.0. Мы уже это сделали. Мой вопрос заключается в том, как вызвать физические виртуальные машины. Сервер приложений WebSphere работает в своей собственной ячейке/узле/сервере с ESB-сервера. Из того, что я прочитал в документации IBM, можно настроить привязку пространства имен на WAS, чтобы указать на удаленный EJB на другом экземпляре WAS. Таким образом, вы можете использовать JNDI для поиска компонента в одном экземпляре WAS, который действительно находится в другом экземпляре WAS. Красота этого метода заключается в том, что местоположение EJB, которое вы хотите, абстрагируется до уровня контейнера, и вам не нужно перетаскивать файлы свойств IP-адресов и портов, которые вам нужны для доступа к компоненту, если он изменяет серверы и т. Д. Вы просто делаете стандартный поиск JNDI для удаленного EJB и получаете его.

Звучит как это можно сделать. (См. Следующие ссылки: http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.websphere.express.doc/info/exp/ae/tnam_view_bindings.html) Особенно следите за ссылками на привязки пространств имен EJB и Indirect.

Но я некоторое время бил головой об этом. Это имеет смысл. Похоже, это можно сделать. И привязка косвенного пространства имен выглядит наиболее перспективной. Но я не могу заставить его работать правильно. Мой ESB-сервер продолжает жаловаться на то, что не обнаружил comp/env/ejb в контексте, в котором я его прошу. Очень озадачен этим.

Просто интересно, сделал ли кто-нибудь подобное раньше. Можете ли вы дать мне конкретный пример того, как вы это настроили в WAS, чтобы сделать это? Любая помощь оценивается

ответ

4

Ну, с тех пор я разговаривал с IBM о том, как это сделать, и был удивлен их ответом. Они ответили, что если вы говорите EJB в EJB в одном и том же сервере или кластере серверов, используйте EJB RMI через IIOP. С JNDI это тезисы, в которых фактически работает компонент (в кластерной среде).

Если вы переходите с одного сервера (или кластера серверов) на другой сервер (или кластер серверов) независимо от того, находится ли цель и источник в одной и той же ячейке, IBM рекомендовала использовать службы обмена сообщениями или веб-службы , Они считали, что это лучший метод абстракции между приложениями, чтобы они не «привязывались» друг к другу. Они сказали, что вы можете заставить EJB поговорить с RMI через CORBA, но сказали сделать это ТОЛЬКО, если это абсолютно необходимо. И, конечно же, вам нужно будет знать номер IP и номер порта для входа в CORBA (а также каждый член кластера, если в кластерной среде).

Опять же, этот вид удивил меня, но это имеет смысл. Просто подумал, что буду делиться этими мыслями с миром, особенно если вы работаете с WebSphere.

0

как для поиска из кот

  1. использование IBM JDK как среда для кота
  2. найти bootstab порта, использование IIOP в PROVIDER_URL
+0

IBM JDK трудно получить от того, что я вижу. Те, которые доступны на их веб-сайте, устарели. И обновленные, которые вы можете получить, упакованы вместе с другими продуктами (например, WebSphere Application Server), которые задают вопрос ... зачем покупать эти продукты для получения IBM JDK, если вы используете Tomcat? Почему бы не использовать WAS тогда? –

0

я застрял с той же проблемой.После попытки включить все WebSphere и IBM ОРБ банку нашла эту статью на IBM Как Lookup в EJB и другие ресурсы в WebSphere Application Server с помощью Oracle JDK клиента - http://www-01.ibm.com/support/docview.wss?uid=swg21382740

в основном использовал CNCtxFactory вместо WsnInitialContextFactory

//props.put(Context.INITIAL_CONTEXT_FACTORY,"com.ibm.websphere.naming.WsnInitialContextFactory"); 
Hashtable env = new Hashtable(); 
      env.put("java.naming.factory.initial", "com.sun.jndi.cosnaming.CNCtxFactory"); 
      env.put("java.naming.provider.url", iioppath); 
+0

Не совсем то, что мне нужно. Я запускаю контейнер для обоих (т. Е. В WebSphere). Я хотел бы перекрещивать экземпляры WebSphere. Но вот уловка - я бы не хотел знать имена ячеек, узлов и серверов, которые могут измениться для каждой среды. Поэтому я хотел бы искать EJB на сервере 2, так как он был локальным сервером 1. Из приведенных выше ссылок в моем вопросе это выглядит возможным. Просто интересно, не так ли. –

Смежные вопросы