| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java EE (J2EE) и Spring > Websphere клиент |
| Автор: KostenkoSergey 16.4.2007, 10:49 | ||||
| Как можно вызвать EJB, развёрнутый на WebSphere AppServer с другого сервера приложений (ну или контейнера для сервлетов) ? Пробую , для начала, по аналогии с другими серверами, написать просто майновый класс, что-то типа:
а в ответ :
Библиотеки WebSphere 6.0. Client подключил |
| Автор: KostenkoSergey 16.4.2007, 11:05 |
| Прошу прощения - поспешил с вопросом. Нужно включить ibmorb.jar в classpath, из ibm jdk (i.e. inside jre\lib folder). |
| Автор: y3u 16.4.2007, 11:07 |
| ну написано же, нету классика, проверь есть он или нету его... |
| Автор: KostenkoSergey 16.4.2007, 11:36 | ||||
да.. эт я уже понял Пошёл дальше:
И тут же напоролся на :
|
| Автор: y3u 16.4.2007, 12:10 |
| ну пройдись по стеку вызовов, посмотри где что к чему кастится и в дебаггере глянь какие реально инстансы достаются откуда... такие ж эксцепшены надо на отладке смотреть, больше ни чем помочь не могу... |
| Автор: KostenkoSergey 16.4.2007, 12:25 |
| Похоже дело в том, что я пытоаюсь получить доступ по JNDI на Websphere 6 из Sun JRE, попробовал из-под ibm-овской - прошло. Но получить доступ нужно мименно из под Sun JRE ... Вот тебе и портабельность :( 2y3u - спасибо за участие, но про "пройтись по стеку" недопонял .. стек вызовов привлекших к ошибке я привёл. Что ещё мне даст дебаг ? |
| Автор: y3u 16.4.2007, 12:31 |
| на дебаге можно посмотреть на класс каст эксцепшен, который тебе все валит, можно посмотреть какой инстанс нужен и какой инстанс реально приходит и сделать вывод почему не кастится |
| Автор: KostenkoSergey 16.4.2007, 15:11 | ||
| Вариант с endorsed не катит, пробовал. Если патчить ibm-овскими либами оно просит пропатчить ещё и core.jar, но в этом случае:
|
| Автор: w1nd 16.4.2007, 16:07 | ||
| О-о... всё не так просто, как кажется. Мне для того, чтобы подключится к удаленной вебсфере из sun jvm потребовалось: Положить в системное свойство com.ibm.CORBA.ConfigURL урл к конфигурационному файлу, содержащему следующее:
Также установить системные свойства: org.omg.CORBA.ORBClass = com.ibm.CORBA.iiop.ORB org.omg.CORBA.ORBSingletonClass = com.ibm.rmi.corba.ORBSingleton javax.rmi.CORBA.StubClass = com.ibm.rmi.javax.rmi.CORBA.StubDelegateImpl javax.rmi.CORBA.PortableRemoteObjectClass = com.ibm.rmi.javax.rmi.PortableRemoteObject javax.rmi.CORBA.UtilClass = com.ibm.ws.orb.WSUtilDelegateImpl com.ibm.CORBA.ORBPluginClass.com.ibm.ws.wlm.client.WLMClient = com.ibm.CORBA.ORBPluginClass.com.ibm.ws.orbimpl.transport.WSTransport = com.ibm.CORBA.ORBPluginClass.com.ibm.ws.orbimpl.WSORBPropertyManager = com.ibm.CORBA.ORBPluginClass.com.ibm.ISecurityUtilityImpl.SecurityPropertyManager = com.ibm.CORBA.ORBPluginClass.com.ibm.ws.orb.WSSubcontractInitImpl = org.omg.PortableInterceptor.ORBInitializerClass.com.ibm.ws.Transaction.JTS.TxInterceptorInitializer = org.omg.PortableInterceptor.ORBInitializerClass.com.ibm.ejs.ras.RasContextSupport = org.omg.PortableInterceptor.ORBInitializerClass.com.ibm.ISecurityLocalObjectBaseL13Impl.ClientRIWrapper = org.omg.PortableInterceptor.ORBInitializerClass.com.ibm.ws.activity.remote.cos.ActivityServiceClientInterceptor = org.omg.PortableInterceptor.ORBInitializerClass.com.ibm.ISecurityLocalObjectBaseL13Impl.CSIClientRI = org.omg.PortableInterceptor.ORBInitializerClass.com.ibm.debug.olt.ivbtrjrt.OLT_RI = org.omg.PortableInterceptor.ORBInitializerClass.com.ibm.ws.wlm.client.WLMClientInitializer = com.ibm.ws.orb.transport.ConnectionInterceptorName = com.ibm.ISecurityLocalObjectBaseL13Impl.SecurityConnectionInterceptor com.ibm.ws.orb.transport.WSSSLClientSocketFactoryName = com.ibm.ws.security.orbssl.WSSSLClientSocketFactoryImpl com.ibm.CORBA.enableLocateRequest = true com.ibm.CORBA.ORBCharEncoding = UTF8 com.ibm.CORBA.ForceTunnel = never com.ibm.CORBA.TransportMode = Pluggable В класс-путь поместить: bootstrap.jar com.ibm.ws.runtime_6.1.0.jar com.ibm.ws.sib.server_2.0.0.jar com.ibm.ws.sib.utils_2.0.0.jar com.ibm.ws.webservices.thinclient_6.1.0.jar ecore.jar ecutils.jar ffdc.jar ibmorb.jar iwsorbutil.jar lmproxy.jar marshall.jar properties.jar querybean.jar utils.jar wsexception.jar ws_runtime.jar xml.jar |
| Автор: KostenkoSergey 16.4.2007, 16:47 | ||
Спасибо, сичас буду пробовать.. получается дело не в патчах к Sun JRE, а в настройках WS ? 1. У меня sas.client.props расположен в \was\profiles\AppSrv01\properties\ - это он? Можешь поподробнее, где этот урл писать и что за формат конфига ? |
| Автор: w1nd 16.4.2007, 17:02 | ||
Узнал это не я, а мой коллега, в результате долгих попыток и поисков. Я теперь этим пользуюсь
Формат конфига - копи-паст с моего сообщения. Урл писать в системное свойство с названием "com.ibm.CORBA.ConfigURL". Конечно, кое-какое настройки, возможно, вам не подойдут, но дальше уж разберётесь. |
| Автор: KostenkoSergey 16.4.2007, 17:47 |
| У меня IBM WebSphere Application Server, 6.0.0.0 Я что то нигде не могу найти скледующие файлы: com.ibm.ws.runtime_6.0.0.jar com.ibm.ws.sib.server_2.0.0.jar com.ibm.ws.sib.utils_2.0.0.jar com.ibm.ws.webservices.thinclient_6.0.0.jar |
| Автор: KostenkoSergey 17.4.2007, 10:38 |
| w1nd, а вы точно не плугабили жре от сан ? Я вот тут посмотрел [http://www-1.ibm.com/support/docview.wss?rs=180&uid=swg27007298] Так, если правильно понял - то для Sun 32-bit Java 2 SDK, v 1.4.2_05 какой-то Pluggable Application client должен быть ... И ещё возвращаясь к твоему совету "Также установить системные свойства:" - это где надо было сделать ? Может я не туда их вписал :( |
| Автор: KostenkoSergey 17.4.2007, 16:15 |
| Есть небольшой сдвиг. В дистрибутиве с WS ND есть AppClient, после его инсталяции обнаружил следующие библиотеки: ibmext.jar, ibmorb.jar, ibmorbapi.jar, после того как пропатчил ими Sun JRE endorsed Standalone приложение заработало, а вот сервер по прежнему возвращает ошибку :( Скорее всего - это из-за того, что клиент кастит com.ibm.websphere.naming.WsnInitialContextFactory на com.sun.corba.se.impl.orb.ORBImpl, а сервер в моём случае на сom.inprise.vbroker.orb.ORB... и шо его блин делать |
| Автор: chief39 17.4.2007, 19:16 | ||||
Тих, не лупи так башкой апстену, соседи сбегутся
Клиент, гришь, въебсферовски? И он же кастит въебсферовски контекстфэктори на орбимпл?
А у тебя вылазят бесовские уши, так? Попробуй поглядеть в джариках въебсферовского клиента их реализацию контекста. И попробуй явно указать этот класс при . Типа org.ws.bla-bla.our.great.mega.Context вместо InitialContext |
| Автор: KostenkoSergey 17.4.2007, 20:14 | ||
ну не совсем бесовские ...
я так понял этот самый орб om.ibm.ws.naming.util.Helpers.getOrb просто не кастится на com.inprise.vbroker.orb.ORB толи из-за различий в ибмовских и сановских интерфейсах, толи исчё какогото... вообчем полная ... |
| Автор: KostenkoSergey 18.4.2007, 12:35 | ||||
| Наконец-то удалось победить lockup: Оказываеццо, через CORBA object URL можно обращаться к WS, минуя ибмовскую реализацию jndi. Пробовал через borlandовскую, прокатило :
Через сановскую, кстати тоже: com.sun.jndi.cosnaming.CNCtxFactory источник: http://publib.boulder.ibm.com/infocenter/wasinfo/v5r1//index.jsp?topic=/com.ibm.websphere.base.doc/info/aes/ae/rnam_example_prop2.html Правда до конца схема всё же ещё не работает Найденая ссылка портаблится(portableRemoteObject.narrow), объект создаётся, но при попытке вызвать remote-метод получаю:
С чем это может быть связано ? |
| Автор: chief39 18.4.2007, 13:09 | ||
Пробовал? У тебя и на сервере и на клиенте должна быть WS реализация, выходит что на сервере ты просто гребёшь WS а на клиенте, по дефалту, создаёшь реализацию БЕСовского контекста. Попробуй явно создать WSский инитиал контекст через нью и передать его переменой типа InitialContext |
| Автор: KostenkoSergey 18.4.2007, 14:46 |
Это ничего не меняет, когда я делаю : env.put(Context.INITIAL_CONTEXT_FACTORY,"com.ibm.websphere.naming.WsnInitialContextFactory"), я и так получаю IBM'овский контекст, соответственно с его jndi- и ORB-реализацией, последние под Sun JRE глючат. Используя другой контекст, соответственно получаю другую реализацию, к-я отрабатывает. - тут, наверное, немного не так. Не то, что бы "должна быть одинаковой", а достаточно что бы реализации "понимали" друг друга. Используя CORBA URL это достигается. Что примечательно: Вызов без параметров или с пераметрами = null до WS доходит и отрабатывается, а с не нуловыми значениями приводит к возникновению приведённой выше ошибки. Это наталкивает на мысль, что проблема переместилась на уровень "упаковки параметров" |
| Автор: w1nd 19.4.2007, 11:32 | ||
Что значит "плугабили"? JRE нетронутый.
Можно при старте приложения, до создания каких-либо контекстов получения каких-либо удалённых объектов. Ы помощью System.setProperty(). Только у меня websphere 6.1.0 Добавлено @ 11:36 Урл такого вида: corbaloc:iiop:<имя_сервера>:<порт> (с WsnInitialContextFactory) |