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

Как это сделать.
...
Рейтинг: 0 / 0
16.02.2007, 12:55:14
    #34336260
Kudinov Anton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаленный вызов Session EJB (WebSphere)
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
16.02.2007, 13:35:03
    #34336430
anton_evane
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаленный вызов Session EJB (WebSphere)
делаю

Код: 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
16.02.2007, 13:44:59
    #34336455
Timm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаленный вызов Session EJB (WebSphere)
Отличный, понятный стек трейс. Что может быть непонятного в отсутствии имплементации?
Подложите вебсферовский джарник (какой - хз. ищите в документации).
...
Рейтинг: 0 / 0
16.02.2007, 17:34:40
    #34337393
anton_evane
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаленный вызов Session EJB (WebSphere)
А как теперь instance бина поднять и выполнить требуемый метод
...
Рейтинг: 0 / 0
16.02.2007, 18:25:26
    #34337544
Juga
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаленный вызов Session EJB (WebSphere)
Похоже приложение не видит классы Веб Сферы для доступа к серверу.
...
Рейтинг: 0 / 0
16.02.2007, 20:03:10
    #34337743
unregestered
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаленный вызов Session EJB (WebSphere)
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
19.02.2007, 11:09:10
    #34340254
anton_evane
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаленный вызов Session EJB (WebSphere)
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
19.02.2007, 11:27:15
    #34340330
raidan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаленный вызов Session EJB (WebSphere)
Лениво выдирать куски.
Вот как это делается для 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
19.02.2007, 11:29:01
    #34340335
anton_evane
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаленный вызов Session EJB (WebSphere)
Код: plaintext
1.
LoginContext loginContext =  new  LoginContext("other",
 new  UsernamePasswordHandler(userName, password.toCharArray()));

Да а поподробнее про класс UsernamePasswordHandler???
...
Рейтинг: 0 / 0
19.02.2007, 11:45:58
    #34340395
anton_evane
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаленный вызов Session EJB (WebSphere)
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
19.02.2007, 11:55:53
    #34340442
raidan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаленный вызов Session EJB (WebSphere)
anton_evane

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

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

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

Спасибо за код многое стало понятно, щас попробуем
...
Рейтинг: 0 / 0
19.02.2007, 12:07:30
    #34340495
raidan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаленный вызов Session EJB (WebSphere)
anton_evane
Спасибо за код многое стало понятно, щас попробуем
Попробуйте. Не забудьте только поменять CONTEXT_FACTORY :)
...
Рейтинг: 0 / 0
19.02.2007, 12:17:21
    #34340525
anton_evane
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаленный вызов Session EJB (WebSphere)
поменял
...
Рейтинг: 0 / 0
19.02.2007, 17:39:36
    #34341947
dsghsdfgsdfgsdf
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаленный вызов Session EJB (WebSphere)
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
Форумы / Java [игнор отключен] [закрыт для гостей] / Удаленный вызов Session EJB (WebSphere) / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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