powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Как вызвать удалённый метод в EJB из GUI приложения?
19 сообщений из 69, страница 3 из 3
Как вызвать удалённый метод в EJB из GUI приложения?
    #37670444
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vas0Кто в Java в EJB разобрался, тот в цирке не смеется.
похоже ты прав.
...
Рейтинг: 0 / 0
Как вызвать удалённый метод в EJB из GUI приложения?
    #37670452
Niky4000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У человека проблема вообще с ява. Он ничего в ней не понимает, а лезет сразу в создание ежб бинов.
Ну, ёлки... началось. Нет у меня никаких проблем.
Надо записать! :))
Просто позавчера толстый клиент был Java-классом, а вчера стал Enterprise-приложением.
...
Рейтинг: 0 / 0
Как вызвать удалённый метод в EJB из GUI приложения?
    #37670467
Фотография grasoff.net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Niky4000Почему-то моё Enterprise Application хочет только с localhost работать, а я хочу, чтоб он соединялся с 172.16.1.250
Код: java
1.
2.
props.setProperty(Context.PROVIDER_URL, "jnp://172.16.1.250:1099");
new InitialContext(props).lookup(...);


не?
...
Рейтинг: 0 / 0
Как вызвать удалённый метод в EJB из GUI приложения?
    #37670477
Большой Синий Кит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Niky4000Просто позавчера толстый клиент был Java-классом, а вчера стал Enterprise-приложением.

И это тоже записать! :)
...
Рейтинг: 0 / 0
Как вызвать удалённый метод в EJB из GUI приложения?
    #37670500
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Niky4000Ну, ёлки... началось. Нет у меня никаких проблем.

Вас очень сложно понять.
Толстый клиент, это приложение, в котором JVM работает на стороне клиента и, зачастую, используется некоторый GUI фреймверк Swing.
Толстый клиент не является JEE модулем, потому что он работает независимо от JEE контейнера.
JEE модуль это war или ejb-jar, который развернут на JEE сервере.
Постарайтесь придерживатся этой терминологии.

То что контейнер подставляет в поля значения реальных бинов, называется IoC, DI, CDI. CDI работает только в JEE модуле.
В толстом контейнере используется подход, известный как Service Locator. Создаётся InitialContext и через него получается доступ к удаленным службам сервера. Сам контекст одинаково работает как на сервере, так и на клиенте, с той лишь разницей, что у EJB бывают локальные интерфейсы, которые удаленно использовать нельзя.

Теперь по поводу вашей проблемы с IP. Если создавать InitialContext черед дефолтный конструктор, с использованием библиотек сервера приложений, то в этом случае данные библиотеки пытаются вычитать конфигурацию из настроек сервера приложений. (Как это конкретно реализовано в GlassFish - не знаю)

При создании InitialContext можно переопределять дефолтные значения, как выше указал grasoff.net.
...
Рейтинг: 0 / 0
Как вызвать удалённый метод в EJB из GUI приложения?
    #37670515
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grasoff.netNiky4000Почему-то моё Enterprise Application хочет только с localhost работать, а я хочу, чтоб он соединялся с 172.16.1.250
Код: java
1.
2.
props.setProperty(Context.PROVIDER_URL, "jnp://172.16.1.250:1099");
new InitialContext(props).lookup(...);


не?

Странно, но для GlassFish во многих примерах пишут, что нужно использовать "org.omg.CORBA.ORBInitialHost" для указания адреса. В том числе об этом написано в примере, ссылку на который уже привели выше.
...
Рейтинг: 0 / 0
Как вызвать удалённый метод в EJB из GUI приложения?
    #37670564
vas0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Niky4000Я создал другой проект - Enterprise Application, а не обычный Java Class.
Библиотеки тут не причём в данном случае. С localhost всё работает.
Почему-то моё Enterprise Application хочет только с localhost работать, а я хочу, чтоб он соединялся с 172.16.1.250.
А явно это нигде не задаётся.
Я думал, что при скачке stub'ов он сам привяжется к серверу, но нет. Надо думать как теперь клиента с сервером соединить. Попробуй "appclient -jar D:\Tasks\Java\Stubs\Enterprise1\EnterpriseApplication1Client.jar -targetserver 172.16.1.250"
...
Рейтинг: 0 / 0
Как вызвать удалённый метод в EJB из GUI приложения?
    #37670583
Фотография grasoff.net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowiczнужно использовать "org.omg.CORBA.ORBInitialHost" для указания адресаахнуда
я просто к тому, что надо каким-то образом указать урл )
...
Рейтинг: 0 / 0
Как вызвать удалённый метод в EJB из GUI приложения?
    #37670621
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grasoff.netя просто к тому, что надо каким-то образом указать урл )
Да. Я что-то тупанул на этот счет в начале. Ведь у удаленноего клиента не может быть ссылки на настройки сервера, поэтому URL в том или ином виде нужно указывать в любом случае.
...
Рейтинг: 0 / 0
Как вызвать удалённый метод в EJB из GUI приложения?
    #37672566
Niky4000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vas0
СПАСИБО! ЕЩЁ РАЗОК ОГРОМНОЕ!!!
Всё получилось!!!
Вот смертельная тройка команд:
Код: sql
1.
2.
3.
asadmin deploy E:\Java\stubs\ear\EnterpriseApplication1.ear --host 172.16.1.192
asadmin get-client-stubs --appname EnterpriseApplication1 E:\Java\stubs --host 172.16.1.192
appclient -targetserver 172.16.1.192 -jar E:\Java\stubs\EnterpriseApplication1Client.jar


Первая deploy'ит EAR'ник!
Вторая получает STUB'ы!
А третья! Третья - самая убийственная команда - связывает клиента с удалённым GlassFish!


А ещё вопросик:
А может ли сервер инициировать что-то у клиентов по событиям сервера?
Например, по таймеру?
Или в случае, если условный "администратор" послал некое сообщение на сервер, которое сервер должен "раздать" всем клиентам, то есть сервер "инициирует" некие события у клиентов - сервер как бы возбуждает что-то у клиентов?
...
Рейтинг: 0 / 0
Как вызвать удалённый метод в EJB из GUI приложения?
    #37672705
GregTk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Niky4000,

Тихий ужас, в jboss такого не было
...
Рейтинг: 0 / 0
Как вызвать удалённый метод в EJB из GUI приложения?
    #37672706
vas0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Niky4000А может ли сервер инициировать что-то у клиентов по событиям сервера?
Например, по таймеру?
Или в случае, если условный "администратор" послал некое сообщение на сервер, которое сервер должен "раздать" всем клиентам, то есть сервер "инициирует" некие события у клиентов - сервер как бы возбуждает что-то у клиентов?Первый вариант - JMS. Создаешь тему (Topic), клиенты подписчики (Subscribers). Сервер генерирует сообщения, клиенты его получают и обрабатывают. Здесь тебе только клиентского потребителя сообщений (Consumer) нужно написать, а дальше только правильно все сконфигурировать.

Второй варинт JMХ. В JMХ, вроде бы, есть модель оповещения, возможно она может подойти, но я не уверен.

Последний вариант, это придумать собственный протокол на уровне: Sockets, RMI и всю реализацию писать самому.
...
Рейтинг: 0 / 0
Как вызвать удалённый метод в EJB из GUI приложения?
    #37672717
Фотография grasoff.net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GregTkjboss такого не былода в глассфише тоже без этого можно объодиться
...
Рейтинг: 0 / 0
Как вызвать удалённый метод в EJB из GUI приложения?
    #37673146
GregTk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grasoff.net,

как то не заметно, вон как ТС мучается :)
...
Рейтинг: 0 / 0
Как вызвать удалённый метод в EJB из GUI приложения?
    #37675973
Фотография grasoff.net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GregTkgrasoff.net,

как то не заметно, вон как ТС мучается :)всё от того, что люди мало читают
...
Рейтинг: 0 / 0
Как вызвать удалённый метод в EJB из GUI приложения?
    #37676310
Vladmir K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
grasoff.netда в глассфише тоже без этого можно объодиться
может немного поздно, но... вот что мне думается.
Проблема в формировании InitialContext на стороне клиента. Например, для Weblogic-а все просто. Нужно клиенту подсунуть weblogic.jar, который содержит все необходимое (является самодостаточным), но он и весит около 50 метров.
В глассфише перемудрили с ленивыми загрузками. В мануалах сказано, что клиенту для работы с аквариумом нужен лишь gf-client.jar (18 метров). НО! gf-client.jar начинает подгружать себе другие зависимости по ходу выполения. Подгружает он их как-то "не по пацански", что ли: ищет джарники в относительных путях как они лежат на GlassFish сервере.

Поэтому, лично я нашел для себя простой (да избыточный, но моя ситуация позволяет) способ: я скопировал джарники с сервера на клиент (~40 метров) из glassfish\modules\. Список прилагается - как получил, уже не помню ;)

На клиенте получаем контекст:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
InitialContext ic = new InitialContext();
        HelloRemote bean = null;
        try {
            bean = (HelloRemote)ic.lookup("Test-HelloRemote"); // из @Stateless(MappedName = "Test-HelloRemote")
            return bean.getSomeStuff();
        } catch (NamingException e) {
            Tools.showError(e);
        }


В клиенте есть HelloRemote интерфейс.
В Application.ear нет клиента вообще.
Запускаем клиент:
javaw -splash:./conf/Splash.jpg -classpath ./modules/gf-client.jar;./MyClient.jar -Dorg.omg.CORBA.ORBInitialHost=<hostName> com.client.swing.Main

Если нужно JAAS, то в classpath отдельно прописывается security.jar (gf-client.jar на него не ссылается)
...
Рейтинг: 0 / 0
Как вызвать удалённый метод в EJB из GUI приложения?
    #37694702
Niky4000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А ещё вопросик у меня 1 есть в эту тему:

Утилита, которая запускает EnterpriseClient'а - это appclient.
Она идёт в составе GlassFish'а.
А отдельно её где можно взять?
Или её из GlassFish'а нужно "вынуть"?
Ну, не ставить же GlassFish всем клиентам из-за appclient'а...
...
Рейтинг: 0 / 0
Как вызвать удалённый метод в EJB из GUI приложения?
    #37827989
Niky4000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я вспомнил про эту тему.
Хочу сказать, что у меня наконец-то получилось сделать это - запустить удалённого клиента, который бы вызывал удалённые процедуры удалённых EJB-модулей.
Рассказываю как это делается, может кому пригодится.
GlassFish 3.1.2 NetBeans 7.1.2 Java 1.7
Необходимо включить в проект следующие библиотеки:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
C:\Program Files\glassfish-3.1.2\glassfish\lib\gf-client.jar
C:\Program Files\glassfish-3.1.2\glassfish\lib\install\applications\__cp_jdbc_ra\ => "__cp_jdbc_ra.jar"
C:\Program Files\glassfish-3.1.2\glassfish\lib\install\applications\__ds_jdbc_ra\ => "__ds_jdbc_ra.jar"
C:\Program Files\glassfish-3.1.2\glassfish\lib\install\applications\__dm_jdbc_ra\ => "__dm_jdbc_ra.jar"
C:\Program Files\glassfish-3.1.2\glassfish\lib\install\applications\jmsra\ => "imqjmsra.jar"
C:\Program Files\glassfish-3.1.2\glassfish\lib\install\applications\__xa_jdbc_ra\ => "__xa_jdbc_ra.jar"
C:\Program Files\glassfish-3.1.2\glassfish\lib\install\applications\jaxr-ra\ => "jaxr-ra.jar"
C:\Program Files\glassfish-3.1.2\javadb\lib\ => "derby.jar" "derbyclient.jar" "derbynet.jar" "derbytools.jar" "derbyrun.jar"
C:\Program Files\glassfish-3.1.2\mq\lib\ => "imq.jar" "imqadmin.jar" "imqutil.jar" "fscontext.jar"
C:\Program Files\glassfish-3.1.2\glassfish\modules\endorsed\ => "jaxb-api-osgi.jar" "javax.annotation.jar" "webservices-api-osgi.jar"
C:\Program Files\glassfish-3.1.2\glassfish\modules\ => "tools.jar" "auto-depends.jar" "config.jar" "config-types.jar" "hk2.jar" "hk2-core.jar" "osgi-adapter.jar" "grizzly-comet.jar" "grizzly-config.jar" "grizzly-framework.jar" "grizzly-http.jar" "grizzly-http-ajp.jar" "grizzly-http-servlet.jar" "grizzly-lzma.jar" "grizzly-portunif.jar" "grizzly-rcm.jar" "grizzly-utils.jar" "grizzly-websockets.jar" "javax.mail.jar" "pkg-client.jar" "jaxb-osgi.jar" "jaxws-eclipselink-plugin.jar" "activation.jar" "javax.el-api.jar" "javax.servlet-api.jar" "javax.servlet.jsp-api.jar" "javax.servlet.jsp.jstl-api.jar" "jaxr-api-osgi.jar" "jaxrpc-api-osgi.jar" "endorsed\jaxb-api-osgi.jar" "stax-api.jar" "junit.jar" "stax2-api.jar" "woodstox-core-asl.jar" "javax.persistence.jar" "org.eclipse.persistence.antlr.jar" "org.eclipse.persistence.asm.jar" "org.eclipse.persistence.core.jar" "org.eclipse.persistence.jpa.jar" "org.eclipse.persistence.jpa.modelgen.jar" "org.eclipse.persistence.moxy.jar" "org.eclipse.persistence.oracle.jar" "bean-validator.jar" "javax.faces.jar" "glassfish-corba-asm.jar" "glassfish-corba-codegen.jar" "glassfish-corba-csiv2-idl.jar" "glassfish-corba-internal-api.jar" "glassfish-corba-newtimer.jar" "glassfish-corba-omgapi.jar" "glassfish-corba-orb.jar" "glassfish-corba-orbgeneric.jar" "management-api.jar" "gmbal.jar" "ha-api.jar" "auto-depends.jar" "class-model.jar" "config.jar" "config-types.jar" "hk2.jar" "hk2-core.jar" "asm-all-repackaged.jar" "bean-validator.jar" "admin-core.jar" "admin-util.jar" "config-api.jar" "javax.management.j2ee.jar" "monitoring-core.jar" "acc-config.jar" "gf-client-module.jar" "gms-bootstrap.jar" "amx-core.jar" "amx-j2ee.jar" "annotation-framework.jar" "common-util.jar" "container-common.jar" "glassfish-api.jar" "glassfish-ee-api.jar" "glassfish-naming.jar" "internal-api.jar" "scattered-archive-api.jar" "simple-glassfish-api.jar" "stats77.jar" "connectors-inbound-runtime.jar" "connectors-internal-api.jar" "connectors-runtime.jar" "javax.resource.jar" "work-management.jar" "glassfish.jar" "kernel.jar" "logging.jar" "deployment-common.jar" "deployment-javaee-core.jar" "dol.jar" "javax.enterprise.deploy.jar" "ejb-container.jar" "ejb-internal-api.jar" "gf-ejb-connector.jar" "javax.ejb.jar" "j-interop-repackaged.jar" "ldapbp-repackaged.jar" "libpam4j-repackaged.jar" "flashlight-framework.jar" "endorsed\javax.annotation.jar" "javax.jms.jar" "jms-core.jar" "orb-connector.jar" "orb-iiop.jar" "eclipselink-wrapper.pom" "jpa-connector.jar" "persistence-common.jar" "cmp-internal-api.jar" "appclient.security.jar" "ejb.security.jar" "jaspic.provider.framework.jar" "javax.security.auth.message.jar" "javax.security.jacc.jar" "security.jar" "ssl-impl.jar" "websecurity.jar" "webservices.security.jar" "javax.transaction.jar" "jta.jar" "jts.jar" "transaction-internal-api.jar" "war-util.jar" "web-cli.jar" "web-core.jar" "web-glue.jar" "web-gui-plugin-common.jar" "web-naming.jar" "web-embed-api.jar" "jsr109-impl.jar" "webservices-connector.jar" "endorsed\webservices-api-osgi.jar" "webservices-extra-jdk-packages.jar" "webservices-osgi.jar" "javax.el.jar" "javax.servlet.jsp.jar" "tiger-types.jar" "mimepull.jar" "shoal-gms-api.jar" "aixporting-repackaged.jar"



А клиент в простейшем случае выглядит примерно так:
Код: sql
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.
package testclient;

import SessionBeans.EMDebugSessionBeanRemote;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.naming.InitialContext;
import javax.naming.NamingException;


public class TestClient {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        try {
            Properties properties = new Properties();

            properties.setProperty("java.naming.factory.initial",
                    "com.sun.enterprise.naming.SerialInitContextFactory");

            properties.setProperty(
                    "org.omg.CORBA.ORBInitialHost",
                    "172.16.1.192");

            properties.setProperty(
                    "org.omg.CORBA.ORBInitialPort",
                    "3700");

            InitialContext initialContext = new InitialContext(properties);
            
            
            EMDebugSessionBeanRemote EMDebugSessionBean=(EMDebugSessionBeanRemote) initialContext.lookup("EMDebugSessionBean");
            
            String hello=EMDebugSessionBean.retHello();
            
            System.out.println(hello);
            
        } catch (NamingException ex) {
            Logger.getLogger(TestClient.class.getName()).log(Level.SEVERE, null, ex);
        }
        
        
    }
}
...
Рейтинг: 0 / 0
Как вызвать удалённый метод в EJB из GUI приложения?
    #37827996
Niky4000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Удалённый интерфейс должен обязательно лежать в отдельном проекте.
...
Рейтинг: 0 / 0
19 сообщений из 69, страница 3 из 3
Форумы / Java [игнор отключен] [закрыт для гостей] / Как вызвать удалённый метод в EJB из GUI приложения?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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