powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопрос новичка по EJB-клиенту
25 сообщений из 27, страница 1 из 2
Вопрос новичка по EJB-клиенту
    #34041108
Vinny Puhh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть рабочий сервак JBoss. Сделан EJB - Stateless Session Bean - и он работает на серваке. Из ВЕБ приложения - из сервлета - обратиться к нему (EJB) можно, все ок! Подскажите, плиз, как создать клиентское GUI-приложение - в смысле как из клиентского приложения обратиться к функциям данного EJB. Догадываюсь, что для клиента нужен файлик с описанием функций серверного бина и параметры подключения к серваку.
КАК? Если мона, то дайте простейший пример.... Всем ответившим заранее спасибо!
...
Рейтинг: 0 / 0
Вопрос новичка по EJB-клиенту
    #34041191
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на клиенте нужен remote интерфейс и файл ~/jboss/client/jbossclient-all.jar

на клиенте:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
        private static String PROVIDER_URL = "jnp://localhost:1099";
        InitialContext context;
        String providerURL = PROVIDER_URL;
        java.util.Properties properties = new Properties();

        properties.setProperty(InitialContext.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
        properties.setProperty(InitialContext.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces");
        properties.setProperty(InitialContext.PROVIDER_URL, providerURL);
        context = new InitialContext(properties);

        // EJB  3 . 0 !!!
        Object beanRef = this.getContext().lookup("java:/comp/env/BeanRemote/remote");
        BeanRemote remote =  PortableRemoteObject.narrow(beanRef, BeanRemote.class);

...
Рейтинг: 0 / 0
Вопрос новичка по EJB-клиенту
    #34041407
Vinny Puhh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пасиба! Буду пробовать! О результатах отпишусь.
...
Рейтинг: 0 / 0
Вопрос новичка по EJB-клиенту
    #34041430
Vinny Puhh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще один тупой вопрос: как сделать EJB-клиента в IDEA? Любого.... консольного например. Еще раз пасиба заранее.
...
Рейтинг: 0 / 0
Вопрос новичка по EJB-клиенту
    #34041442
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. создать новый java модуль
2. подключить к нему jbossclient-all.jar, возможно, кстати, понадобится еще log4j.jar
3. создать новый класс
4. в методе main написать код, приведенный выше.
...
Рейтинг: 0 / 0
Вопрос новичка по EJB-клиенту
    #34041451
Vinny Puhh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А как быть с классом remote-интерфейса? Каким образом его подключить к приложению? А если приложение будет на другой машине (ЛВС)?
...
Рейтинг: 0 / 0
Вопрос новичка по EJB-клиенту
    #34041467
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в идее можно создать зависимости между модулями. в частности, java модуль будет зависеть от ejb модуля.
на машине клиента будут лежать обе jar, вызываться будет jar с клиентскими классами, а jar с remote интерфейсами будет прописываться в classpath
...
Рейтинг: 0 / 0
Вопрос новичка по EJB-клиенту
    #34041472
Vinny Puhh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И еще вдогонку:
в директории "~jboss/client/"
у меня есть несколько файлов:

jboss-client.jar (250Kb)
jboss-common-client.jar (400Kb)
jbossall-client.jar (4Mb)

какой из них цеплять?
классы javax.* есть во всех....
...
Рейтинг: 0 / 0
Вопрос новичка по EJB-клиенту
    #34041485
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сказал же, jbossall-client.jar
...
Рейтинг: 0 / 0
Вопрос новичка по EJB-клиенту
    #34041540
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Client jar лучше собирать отдельно. Naming conventions .
Для EJB 2.0 в нем должны присутствовать home и remote интерфейсы.
...
Рейтинг: 0 / 0
Вопрос новичка по EJB-клиенту
    #34041562
Vinny Puhh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще раз огромное спасибо! Буду пробовать!
...
Рейтинг: 0 / 0
Вопрос новичка по EJB-клиенту
    #34041674
Vinny Puhh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Deadyна клиенте нужен remote интерфейс и файл ~/jboss/client/jbossclient-all.jar

на клиенте:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
        private static String PROVIDER_URL = "jnp://localhost:1099";
        InitialContext context;
        String providerURL = PROVIDER_URL;
        java.util.Properties properties = new Properties();

        properties.setProperty(InitialContext.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
        properties.setProperty(InitialContext.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces");
        properties.setProperty(InitialContext.PROVIDER_URL, providerURL);
        context = new InitialContext(properties);

        // EJB  3 . 0 !!!
        Object beanRef = this.getContext().lookup("java:/comp/env/BeanRemote/remote");
        BeanRemote remote =  PortableRemoteObject.narrow(beanRef, BeanRemote.class);



Все сделал! При запуске регается на:

BeanRemote remote = PortableRemoteObject.narrow(beanRef, BeanRemote.class);

(соотв. вместо BeanRemote подставлено имя интерфейса своего бина)

Вот ошибка:
java.lang.ClassCastException

возникает в этой строке:

Fleet remote = (Fleet) PortableRemoteObject.narrow(beanRef, Fleet.class);

(Приведение классов заставила ИДЕЯ сделать....)

Что не так?
...
Рейтинг: 0 / 0
Вопрос новичка по EJB-клиенту
    #34041692
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
используется ejb3.0? если нет, то надо home интерфейс получать, а не remote
...
Рейтинг: 0 / 0
Вопрос новичка по EJB-клиенту
    #34041693
Vinny Puhh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня заработало вот так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
 public   static   void  main(String[] args)
   {
    String PROVIDER_URL = "jnp://localhost:1099";
    InitialContext context;
    String providerURL = PROVIDER_URL;
    java.util.Properties properties =  new  Properties();

    properties.setProperty(InitialContext.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
    properties.setProperty(InitialContext.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces");
    properties.setProperty(InitialContext.PROVIDER_URL, providerURL);
     try 
     {
      context =  new  InitialContext(properties);
      // EJB 3.0!!!
      Object beanRef = context.lookup("FleetEJBRemote");
      FleetHome remote =  (FleetHome) PortableRemoteObject.narrow(beanRef, FleetHome. class );
      Fleet flt = remote.create();
      System.out.println("EJB: " + flt.getMessage());
     }
     catch  (Exception e) {e.printStackTrace();}
   }
...
Рейтинг: 0 / 0
Вопрос новичка по EJB-клиенту
    #34041698
Vinny Puhh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Deadyиспользуется ejb3.0? если нет, то надо home интерфейс получать, а не remote

Похоже используется 2.0, а не 3.0.....
...
Рейтинг: 0 / 0
Вопрос новичка по EJB-клиенту
    #34041734
Vinny Puhh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что бы это значило:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
c:\1111>java -cp c:\1111\jbossall-client.jar;c:\1111 client
javax.naming.CommunicationException [Root exception is java.lang.ClassNotFoundEx
ception: FleetHome (no security manager: RMI class loader disabled)]
        at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:728)
        at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:587)
        at javax.naming.InitialContext.lookup(Unknown Source)
        at client.main(client.java:28)
Caused by: java.lang.ClassNotFoundException: FleetHome (no security manager: RMI
 class loader disabled)
        at sun.rmi.server.LoaderHandler.loadProxyClass(Unknown Source)
        at java.rmi.server.RMIClassLoader$2.loadProxyClass(Unknown Source)
        at java.rmi.server.RMIClassLoader.loadProxyClass(Unknown Source)
        at sun.rmi.server.MarshalInputStream.resolveProxyClass(Unknown Source)
        at java.io.ObjectInputStream.readProxyDesc(Unknown Source)
        at java.io.ObjectInputStream.readClassDesc(Unknown Source)
        at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
        at java.io.ObjectInputStream.readObject0(Unknown Source)
        at java.io.ObjectInputStream.readObject(Unknown Source)
        at java.rmi.MarshalledObject.get(Unknown Source)
        at org.jnp.interfaces.MarshalledValuePair.get(MarshalledValuePair.java:7
2)
        at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:652)
        ... 3 more

это запуск клиента EJB с той же машины, только не из среды разработки...
в среде разработки (IDEA) все заработало.....
Что не так?
...
Рейтинг: 0 / 0
Вопрос новичка по EJB-клиенту
    #34041862
Vinny Puhh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
добавил клиенту в CLASSPATH jar-файл с EJB - заработало.... как из данного архива выделить только нужные интерфейсы? ведь таскать за клиентом всего бина - ето ж неправильно?
...
Рейтинг: 0 / 0
Вопрос новичка по EJB-клиенту
    #34041964
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. в таске анта построить jar только с remote интерфейсами.
2. создать отдельный модуль для интерфейсов.
...
Рейтинг: 0 / 0
Вопрос новичка по EJB-клиенту
    #34042041
Vinny Puhh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Deady1. в таске анта построить jar только с remote интерфейсами.
2. создать отдельный модуль для интерфейсов.

А можно ли немного поподробнее для новичка, если не затруднит сильно?
И - совсем наглость - применительно к среде ИДЕЯ...
Еще раз огромное спасибо!!! Получил ответы на основные вопросы - очень все просто оказалось....
...
Рейтинг: 0 / 0
Вопрос новичка по EJB-клиенту
    #34042061
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну для начала рекомендую погуглить на тему ant. а потом все понятно будет.
в кратце, строится 3 jar
- серверная: в ней лежат home, remote интерфейсы и их имплементации (то есть сами бины). эту jar надо будет деплоить в jboss
- клиентская jar - содержит клиентское приложение (например, swing, или набор сервлетов, если они будут запускаться на удаленном сервере)
- jar с home и remote интерфейсами - эту штуку надо будет распространять с клиентской частью, чтобы java не ругалась на ClassNotFoundException
...
Рейтинг: 0 / 0
Вопрос новичка по EJB-клиенту
    #34042108
Vinny Puhh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Deadyну для начала рекомендую погуглить на тему ant. а потом все понятно будет.
в кратце, строится 3 jar
- серверная: в ней лежат home, remote интерфейсы и их имплементации (то есть сами бины). эту jar надо будет деплоить в jboss
- клиентская jar - содержит клиентское приложение (например, swing, или набор сервлетов, если они будут запускаться на удаленном сервере)
- jar с home и remote интерфейсами - эту штуку надо будет распространять с клиентской частью, чтобы java не ругалась на ClassNotFoundException

-серверная джар - есть, тут все понятно
-клиентская джар - это есть, но не удалось заставить ИДЕЮ (в отличие от ДЖБилдера) копировать в результирующую директорию клиентский файл Босса
-КАК СДЕЛАТЬ этот ДЖАР? неужели только с помощью анта? Некое представление имею - все вручную - т.е. писать скрипт вручную.... или ест возможность автоматизации?

и можно ли с помощью анта копировать в результирующую папку Боссовский клиентский джар?

Спасибо!
...
Рейтинг: 0 / 0
Вопрос новичка по EJB-клиенту
    #34042157
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
с помощью анта все можно. ант - это и есть автоматизация.

зачем копировать jbossовский jar? приложение как распространяться будет?
если имена всем remote интерфейсам делать делать по типу BeanRemote (т.е. с суффиксов Remote), то такой таск создаст нужный jar:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
  <!--build the client jar-->
  <target name="Client" >
    <jar jarfile="for_client.jar" compress="false">
      <fileset dir="${dir.server}/classes" includes="**%af_src_comm_0*Remote.class"/>
    </jar>
  </target>


можно, например, хранить интерфейсы в отдельном пакете.. тогда их тоже можно будет выцепить.

а вообще, для интранета не так уж и плохо кинуть клиенту серверный jar. 20 метров туда, 20 метров сюда в локальной сети плохого не сделают
...
Рейтинг: 0 / 0
Вопрос новичка по EJB-клиенту
    #34042160
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
<fileset dir="${dir.server}/classes" includes="**/*Home.class **/*Remote.class"/>

форум скушал символы
...
Рейтинг: 0 / 0
Вопрос новичка по EJB-клиенту
    #34042229
Vinny Puhh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Deadyс помощью анта все можно. ант - это и есть автоматизация.

зачем копировать jbossовский jar? приложение как распространяться будет?
если имена всем remote интерфейсам делать делать по типу BeanRemote (т.е. с суффиксов Remote), то такой таск создаст нужный jar:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
  <!--build the client jar-->
  <target name="Client" >
    <jar jarfile="for_client.jar" compress="false">
      <fileset dir="${dir.server}/classes" includes="**%af_src_comm_0*Remote.class"/>
    </jar>
  </target>


можно, например, хранить интерфейсы в отдельном пакете.. тогда их тоже можно будет выцепить.

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

Зачем копировать боссовский джар? - приложение работает на одной из машин в ЛВС... Босс стоит на сетевом серваке.... как клиенту обратиться к серверу без данной библиотеки у себя? - вот зачем надо копировать боссовский джар.... - или я ошибаюсь в чем-то? (имеется в виду jbossall-client.jar)

Приложение будет распространяться одним/несколькими файлами.....

как запихнуть интерфейсы в отдельный пакет? в нем же должна будет находиться и реализация бина?

как прикрутить ант к ИДЕЕ?

Я понимаю, что вопросы звучат наверное глупо... но ....
Еще раз спасибо за огромную помощь.... главное ведь начать? :-)
...
Рейтинг: 0 / 0
Вопрос новичка по EJB-клиенту
    #34042260
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vinny Puhh
Зачем копировать боссовский джар? - приложение работает на одной из машин в ЛВС... Босс стоит на сетевом серваке.... как клиенту обратиться к серверу без данной библиотеки у себя? - вот зачем надо копировать боссовский джар.... - или я ошибаюсь в чем-то? (имеется в виду jbossall-client.jar)

Приложение будет распространяться одним/несколькими файлами.....

как запихнуть интерфейсы в отдельный пакет? в нем же должна будет находиться и реализация бина?

как прикрутить ант к ИДЕЕ?

Я понимаю, что вопросы звучат наверное глупо... но ....
Еще раз спасибо за огромную помощь.... главное ведь начать? :-)

если распространять через web start, то jbossall-client.jar достаточно 1 раз подписать, закинуть на сервер и забыть.
тот таск как раз и создаст клиентскую либу с интерфейсами. реализация на клиенте не нужна.
в идее в правой части есть вкладка ant
...
Рейтинг: 0 / 0
25 сообщений из 27, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопрос новичка по EJB-клиенту
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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