powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Удаленный вызов Session EJB (WebSphere)
19 сообщений из 19, страница 1 из 1
Удаленный вызов Session EJB (WebSphere)
    #34336188
anton_evane
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброе время суток.
добрые люди никто не подскажет как вызвать метод бина с удаленной машины.
Бин задеплоин на WAS.
Мне нужно вызвать клиентом метод который находится в бине и описан через Remote Interface.

Как это сделать.
...
Рейтинг: 0 / 0
Удаленный вызов Session EJB (WebSphere)
    #34336260
Kudinov Anton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.ibm.websphere.naming.WsnInitialContextFactory");
env.put(Context.PROVIDER_URL, "iiop://localhost:2809");

javax.naming.InitialContext initialContext = new javax.naming.InitialContext(env);

дальше как обычно
...
Рейтинг: 0 / 0
Удаленный вызов Session EJB (WebSphere)
    #34336430
anton_evane
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
делаю

Код: plaintext
Object obj = initialContext.lookup("ejb/ejbs/AccessHome");

Не может клас найти, никто не подскажет?

javax.naming.NoInitialContextException: Cannot instantiate class: com.ibm.websphere.naming.WsnInitialContextFactory. Root exception is java.lang.ClassNotFoundException: com.ibm.websphere.naming.WsnInitialContextFactory
at java.net.URLClassLoader.findClass(URLClassLoader.java:376)
at java.lang.ClassLoader.loadClass(ClassLoader.java:570)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:442)
at java.lang.ClassLoader.loadClass(ClassLoader.java:502)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:260)
at com.sun.naming.internal.VersionHelper12.loadClass(VersionHelper12.java:60)
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:662)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:257)
at javax.naming.InitialContext.init(InitialContext.java:233)
at javax.naming.InitialContext.<init>(InitialContext.java:209)
at ru.systematic.Client.getMethod(Client.java:28)
at ru.systematic.Client.main(Client.java:38)
...
Рейтинг: 0 / 0
Удаленный вызов Session EJB (WebSphere)
    #34336455
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отличный, понятный стек трейс. Что может быть непонятного в отсутствии имплементации?
Подложите вебсферовский джарник (какой - хз. ищите в документации).
...
Рейтинг: 0 / 0
Удаленный вызов Session EJB (WebSphere)
    #34337393
anton_evane
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как теперь instance бина поднять и выполнить требуемый метод
...
Рейтинг: 0 / 0
Удаленный вызов Session EJB (WebSphere)
    #34337544
Juga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Похоже приложение не видит классы Веб Сферы для доступа к серверу.
...
Рейтинг: 0 / 0
Удаленный вызов Session EJB (WebSphere)
    #34337743
unregestered
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kudinov AntonHashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.ibm.websphere.naming.WsnInitialContextFactory");
env.put(Context.PROVIDER_URL, "iiop://localhost:2809");

javax.naming.InitialContext initialContext = new javax.naming.InitialContext(env);

дальше как обычно

Но для начала не мешало бы конечно залогинится

LoginContext loginContext = new LoginContext("other",
new UsernamePasswordHandler(userName, password.toCharArray()));

loginContext.login();

И настроить некоторые мелочи
...
Рейтинг: 0 / 0
Удаленный вызов Session EJB (WebSphere)
    #34340254
anton_evane
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
unregestered Kudinov AntonHashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.ibm.websphere.naming.WsnInitialContextFactory");
env.put(Context.PROVIDER_URL, "iiop://localhost:2809");

javax.naming.InitialContext initialContext = new javax.naming.InitialContext(env);

дальше как обычно

Но для начала не мешало бы конечно залогинится

LoginContext loginContext = new LoginContext("other",
new UsernamePasswordHandler(userName, password.toCharArray()));

loginContext.login();

И настроить некоторые мелочи

А что именно настроить надо, тока начал сферу копать да и J2EE, авторизация отключеа нужно ли логинится.
...
Рейтинг: 0 / 0
Удаленный вызов Session EJB (WebSphere)
    #34340330
Фотография raidan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лениво выдирать куски.
Вот как это делается для Bea Weblogic. Уверен, что и для WebSphere всё будет точно так же.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
 package  .............;

 import  java.util.*;

 import  javax.naming.*;
 import  javax.rmi.*;

 import  com.forward.ejbs.iface.docsismodem.*;

 public   class  EJBDocsisModemProcessorClient
{
     private   static   final  String ERROR_NULL_REMOTE = "Remote interface reference is null.  It must be created by calling one of the Home interface methods first.";
     private  EJBDocsisModemProcessor eJBDocsisModemProcessor =  null ;
     private  EJBDocsisModemProcessorHome eJBDocsisModemProcessorHome =  null ;

    //Construct the EJB test client
     public  EJBDocsisModemProcessorClient (String url, String user, String password)
    {
        initialize(url, user, password);
    }

     public   void  initialize (String url, String user, String password)
    {

         try  {

            //get naming context
            Context context = getInitialContext(url, user, password);
            //look up jndi name
            Object ref = context.lookup("EJBDocsisModemProcessor");
            //look up jndi name and cast to Home interface
            eJBDocsisModemProcessorHome = (EJBDocsisModemProcessorHome) PortableRemoteObject.narrow(ref,
                    EJBDocsisModemProcessorHome. class );

        }  catch  (Exception e) {
            e.printStackTrace();
        }

    }

     public   void  close ()
    {
         try  {
             if  (eJBDocsisModemProcessor !=  null ) {
                eJBDocsisModemProcessor.remove();
            }
        }  catch  (Exception e) {
            e.printStackTrace();
        }

    }

     public  Context getInitialContext (String url, String user, String password)
             throws  Exception
    {
        Properties properties;
         try  {
            properties =  new  Properties();
            properties.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
            properties.put(Context.PROVIDER_URL, url);
             if  (user !=  null ) {
                properties.put(Context.SECURITY_PRINCIPAL, user);
                properties.put(Context.SECURITY_CREDENTIALS, password ==  null  ? "" : password);
            }
             return   new  javax.naming.InitialContext(properties);
        }  catch  (Exception e) {
            System.out.println("Unable to connect to WebLogic server at " + url);
            System.out.println("Please make sure that the server is running.");
             throw  e;
        }
    }

    //----------------------------------------------------------------------------
    // Methods that use Home interface methods to generate a Remote interface reference
    //----------------------------------------------------------------------------

     public  EJBDocsisModemProcessor create ()
    {
         try  {
            eJBDocsisModemProcessor = eJBDocsisModemProcessorHome.create();
        }  catch  (Exception e) {
            e.printStackTrace();
        }
         return  eJBDocsisModemProcessor;
    }

    //----------------------------------------------------------------------------
    // Methods that use Remote interface methods to access data through the bean
    //----------------------------------------------------------------------------

     public  Collection getInputCollection ()
    {
        Collection returnValue =  null ;
         if  (eJBDocsisModemProcessor ==  null ) {
            System.out.println("Error in getInputCollection(): " + ERROR_NULL_REMOTE);
             return  returnValue;
        }

         try  {
            returnValue = eJBDocsisModemProcessor.getInputCollection();
        }  catch  (Exception e) {
            e.printStackTrace();
        }
         return  returnValue;
    }

     public   void  processConfirmation (Collection data)
    {
         if  (eJBDocsisModemProcessor ==  null ) {
            System.out.println("Error in processConfirmation(): " + ERROR_NULL_REMOTE);
             return ;
        }

         try  {
            eJBDocsisModemProcessor.processConfirmation(data);
        }  catch  (Exception e) {
            e.printStackTrace();
        }
    }

    //----------------------------------------------------------------------------
    // Utility Methods
    //----------------------------------------------------------------------------

     public  EJBDocsisModemProcessorHome getHome ()
    {
         return  eJBDocsisModemProcessorHome;
    }
}


После создания такого класса следует вызвать метод create, а потом уже вызывать все заимплементированные методы.
...
Рейтинг: 0 / 0
Удаленный вызов Session EJB (WebSphere)
    #34340335
anton_evane
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
LoginContext loginContext =  new  LoginContext("other",
 new  UsernamePasswordHandler(userName, password.toCharArray()));

Да а поподробнее про класс UsernamePasswordHandler???
...
Рейтинг: 0 / 0
Удаленный вызов Session EJB (WebSphere)
    #34340395
anton_evane
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
raidanЛениво выдирать куски.
Вот как это делается для Bea Weblogic. Уверен, что и для WebSphere всё будет точно так же.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
 package  .............;

 import  java.util.*;

 import  javax.naming.*;
 import  javax.rmi.*;

 import  com.forward.ejbs.iface.docsismodem.*;

 public   class  EJBDocsisModemProcessorClient
{
     private   static   final  String ERROR_NULL_REMOTE = "Remote interface reference is null.  It must be created by calling one of the Home interface methods first.";
     private  EJBDocsisModemProcessor eJBDocsisModemProcessor =  null ;
     private  EJBDocsisModemProcessorHome eJBDocsisModemProcessorHome =  null ;

    //Construct the EJB test client
     public  EJBDocsisModemProcessorClient (String url, String user, String password)
    {
        initialize(url, user, password);
    }

     public   void  initialize (String url, String user, String password)
    {

         try  {

            //get naming context
            Context context = getInitialContext(url, user, password);
            //look up jndi name
            Object ref = context.lookup("EJBDocsisModemProcessor");
            //look up jndi name and cast to Home interface
            eJBDocsisModemProcessorHome = (EJBDocsisModemProcessorHome) PortableRemoteObject.narrow(ref,
                    EJBDocsisModemProcessorHome. class );

        }  catch  (Exception e) {
            e.printStackTrace();
        }

    }

     public   void  close ()
    {
         try  {
             if  (eJBDocsisModemProcessor !=  null ) {
                eJBDocsisModemProcessor.remove();
            }
        }  catch  (Exception e) {
            e.printStackTrace();
        }

    }

     public  Context getInitialContext (String url, String user, String password)
             throws  Exception
    {
        Properties properties;
         try  {
            properties =  new  Properties();
            properties.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
            properties.put(Context.PROVIDER_URL, url);
             if  (user !=  null ) {
                properties.put(Context.SECURITY_PRINCIPAL, user);
                properties.put(Context.SECURITY_CREDENTIALS, password ==  null  ? "" : password);
            }
             return   new  javax.naming.InitialContext(properties);
        }  catch  (Exception e) {
            System.out.println("Unable to connect to WebLogic server at " + url);
            System.out.println("Please make sure that the server is running.");
             throw  e;
        }
    }

    //----------------------------------------------------------------------------
    // Methods that use Home interface methods to generate a Remote interface reference
    //----------------------------------------------------------------------------

     public  EJBDocsisModemProcessor create ()
    {
         try  {
            eJBDocsisModemProcessor = eJBDocsisModemProcessorHome.create();
        }  catch  (Exception e) {
            e.printStackTrace();
        }
         return  eJBDocsisModemProcessor;
    }

    //----------------------------------------------------------------------------
    // Methods that use Remote interface methods to access data through the bean
    //----------------------------------------------------------------------------

     public  Collection getInputCollection ()
    {
        Collection returnValue =  null ;
         if  (eJBDocsisModemProcessor ==  null ) {
            System.out.println("Error in getInputCollection(): " + ERROR_NULL_REMOTE);
             return  returnValue;
        }

         try  {
            returnValue = eJBDocsisModemProcessor.getInputCollection();
        }  catch  (Exception e) {
            e.printStackTrace();
        }
         return  returnValue;
    }

     public   void  processConfirmation (Collection data)
    {
         if  (eJBDocsisModemProcessor ==  null ) {
            System.out.println("Error in processConfirmation(): " + ERROR_NULL_REMOTE);
             return ;
        }

         try  {
            eJBDocsisModemProcessor.processConfirmation(data);
        }  catch  (Exception e) {
            e.printStackTrace();
        }
    }

    //----------------------------------------------------------------------------
    // Utility Methods
    //----------------------------------------------------------------------------

     public  EJBDocsisModemProcessorHome getHome ()
    {
         return  eJBDocsisModemProcessorHome;
    }
}


После создания такого класса следует вызвать метод create, а потом уже вызывать все заимплементированные методы.



Это конечно все хорошо но вопрос состоит в том что Bean крутится на сервере отдельном.

А клиент находится на удаленной машине.

Мне нужно каким нибудь образом обратится к Бину поднять его инстанс и вызвать требуемы ей get или set методы.
...
Рейтинг: 0 / 0
Удаленный вызов Session EJB (WebSphere)
    #34340442
Фотография raidan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
anton_evane

Это конечно все хорошо но вопрос состоит в том что Bean крутится на сервере отдельном.

А клиент находится на удаленной машине.

Мне нужно каким нибудь образом обратится к Бину поднять его инстанс и вызвать требуемы ей get или set методы.
А вы внимательно изучили код? Или не утруждали себя этим, скажите честно.
...
Рейтинг: 0 / 0
Удаленный вызов Session EJB (WebSphere)
    #34340445
Фотография raidan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
anton_evane
Вы представляете себе, как работают механизмы EJB?
...
Рейтинг: 0 / 0
Удаленный вызов Session EJB (WebSphere)
    #34340453
Фотография raidan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Напоследок скажу, что переменная url (передаваемая на вход) выглядит как t3://192.168.15.998:7001
...
Рейтинг: 0 / 0
Удаленный вызов Session EJB (WebSphere)
    #34340464
anton_evane
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я изучаю код, это мой напарник решил поспрашивать извиняюсь за него.
Просто в двоем все это хозяйство топик то один вот он и пишет в него что не понимает.
...
Рейтинг: 0 / 0
Удаленный вызов Session EJB (WebSphere)
    #34340477
anton_evane
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
raidanНапоследок скажу, что переменная url (передаваемая на вход) выглядит как t3://192.168.15.998:7001

Спасибо за код многое стало понятно, щас попробуем
...
Рейтинг: 0 / 0
Удаленный вызов Session EJB (WebSphere)
    #34340495
Фотография raidan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
anton_evane
Спасибо за код многое стало понятно, щас попробуем
Попробуйте. Не забудьте только поменять CONTEXT_FACTORY :)
...
Рейтинг: 0 / 0
Удаленный вызов Session EJB (WebSphere)
    #34340525
anton_evane
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поменял
...
Рейтинг: 0 / 0
Удаленный вызов Session EJB (WebSphere)
    #34341947
dsghsdfgsdfgsdf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
anton_evane unregestered Kudinov AntonHashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.ibm.websphere.naming.WsnInitialContextFactory");
env.put(Context.PROVIDER_URL, "iiop://localhost:2809");

javax.naming.InitialContext initialContext = new javax.naming.InitialContext(env);

дальше как обычно

Но для начала не мешало бы конечно залогинится

LoginContext loginContext = new LoginContext("other",
new UsernamePasswordHandler(userName, password.toCharArray()));

loginContext.login();

И настроить некоторые мелочи

А что именно настроить надо, тока начал сферу копать да и J2EE, авторизация отключеа нужно ли логинится.

Просто не полностью ясна вся ситуация. Удалённый вызов ЕЖБ разный бывает: одно дело из веб-компонента обращаться. Там за вас контейнер логинится. Другое дело из станд-алоне приложения. Кроме того если вызов идёт через весь земной шар, то вам возможно придётся настроить безопасное соединение. UsernamePasswordHandler - это ЖБосовский класс в ВебЛоджике придётся что-то другое использовать (с ВЛ не работал).
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Удаленный вызов Session EJB (WebSphere)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]