powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / EJB - продолжение разбора полетов
25 сообщений из 41, страница 1 из 2
EJB - продолжение разбора полетов
    #38510749
NDAleksey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени, форумчане!
Продолжаю мучить изучать EJB, но никак вот не могу понять. Есть двух модульный maven-проект (три pom.xml). В EJB-модуле прописаны remote/stateless/statefull бины, в client-части public static main с вызовом методов из remote interface-а. Все собирается в pom-файл и деплоится на JBoss7.
Вопрос: пишу GUI приложение в котором хотел бы использовать те методы. Как это сделать?

P.S. сам проект
...
Рейтинг: 0 / 0
EJB - продолжение разбора полетов
    #38510838
WGA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WGA
Гость
NDAleksey,

Наверное, так .
...
Рейтинг: 0 / 0
EJB - продолжение разбора полетов
    #38510894
NDAleksey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WGANDAleksey,

Наверное, так .

я не хочу то приложение запускать, я хочу его методы использовать в своем приложении
...
Рейтинг: 0 / 0
EJB - продолжение разбора полетов
    #38510900
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то не догнал. Проблема-то в чем? Вопрос как в Maven делать зависимости между модулями?
...
Рейтинг: 0 / 0
EJB - продолжение разбора полетов
    #38510998
NDAleksey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczЧто-то не догнал. Проблема-то в чем? Вопрос как в Maven делать зависимости между модулями?
Нееее... Это мы с Вами проходили. С этим все в порядке!

Есть Maven-проект ( client-mavenModule + server-side-mavenModule ). Я его собираю с плагином в jar-ник и кидаю на апп_сервер. Он успешно деплоится.

server-side состоит из RemoteCalculator.java(@Remote) и CalculatorBean.java(@Stateless). В RemoteCalculator есть метод: int add(int, int).

Я его хотел дернуть. Через JNDI.lookup у меня не получилось. В примере том создается модуль client, где делается invoke по lookup. Приведу тут, что там делается:
Код: java
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.
public class RemoteEJBClient
{
	public static void main( String[] args ) throws Exception {
		// Invoke a stateless bean
		invokeStatelessBean();
	}
	public static void invokeStatelessBean() throws NamingException	{
		// Let's lookup the remote stateless calculator
		final RemoteCalculator statelessRemoteCalculator = lookupRemoteStatelessCalculator();
		System.out.println( "Obtained a remote stateless calculator for invocation" );
		// invoke on the remote calculator
		int a = 204;
		int b = 340;
		System.out
				.println( "Adding " + a + " and " + b + " via the remote stateless calculator deployed on the server" );
		int sum = statelessRemoteCalculator.add( a, b );
		System.out.println( "Remote calculator returned sum = " + sum );
		if ( sum != a + b ) {
			throw new RuntimeException(
					"Remote stateless calculator returned an incorrect sum " + sum + " ,expected sum was " + ( a
							+ b ) );
		}
		// try one more invocation, this time for subtraction
		int num1 = 3434;
		int num2 = 2332;
		System.out.println( "Subtracting " + num2 + " from " + num1
				+ " via the remote stateless calculator deployed on the server" );
		int difference = statelessRemoteCalculator.subtract( num1, num2 );
		System.out.println( "Remote calculator returned difference = " + difference );
		if ( difference != num1 - num2 ) {
			throw new RuntimeException( "Remote stateless calculator returned an incorrect difference " + difference
					+ " ,expected difference was " + ( num1 - num2 ) );
		}
	}

	private static RemoteCalculator lookupRemoteStatelessCalculator() throws NamingException {
		final Hashtable jndiProperties = new Hashtable();
		jndiProperties.put( Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming" );
		final Context context = new InitialContext( jndiProperties );

		return ( RemoteCalculator ) context	.lookup( "ejb:/jboss-ejb-remote-server-side/CalculatorBean!" + RemoteCalculator.class.getName() );
	}
}



Вот у меня вопросы:
зачем определена main, если проект будет деплоиться на сервер?

как мне воспользоваться калькулятором?
Щас попробовал просто сделать так:
Код: java
1.
2.
3.
4.
public static void main( String... args ) {
    RemoteCalculator calculator = new CalculatorBean();
    System.out.println( "result = " + calculator.add( 5, 6 ) );
}


Отработало и вернуло результат. Но разве при этом создается сессионный бин?
...
Рейтинг: 0 / 0
EJB - продолжение разбора полетов
    #38511005
NDAleksey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NDAleksey...
Отработало и вернуло результат. Но разве при этом создается сессионный бин?

Я это сделал отдельным консольным приложением.
...
Рейтинг: 0 / 0
EJB - продолжение разбора полетов
    #38511013
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) Задеплойте EJB jar в Jboss
2) Зайдите в web console
3) Найдите там JNDI дерево и JNDI имя своих бинов в нем
...
Рейтинг: 0 / 0
EJB - продолжение разбора полетов
    #38511016
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, то есть проблема локализовалась в JNDI lookup, о котором в первом посте почему-то не слова.
...
Рейтинг: 0 / 0
EJB - продолжение разбора полетов
    #38511211
NDAleksey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz1) Задеплойте EJB jar в Jboss
2) Зайдите в web console
3) Найдите там JNDI дерево и JNDI имя своих бинов в нем

1) Задеплоил
2) Зашел
3) Не нашел бинов (прилагаю картинку)

Проблема локализуется не совсем в JNDI. Я делал много попыток "дернуть" бины через различные JNDI варианты, которые находил в инете. Но не получилось. Если Вы мне дадите 100% работающий код, то я буду безмерно счастлив!!!)))
...
Рейтинг: 0 / 0
EJB - продолжение разбора полетов
    #38511220
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дык, чет не видать чтобы
jboss-ejb-remote-server-side.jar
был задеплоен.
...
Рейтинг: 0 / 0
EJB - продолжение разбора полетов
    #38511241
NDAleksey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczДык, чет не видать чтобы
jboss-ejb-remote-server-side.jar
был задеплоен.

я же говорил, что:
Есть Maven-проект ( client-mavenModule + server-side-mavenModule ) - вот он и есть jboss-ejb-romote-client.
...
Рейтинг: 0 / 0
EJB - продолжение разбора полетов
    #38511244
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NDAlekseyя же говорил, что:
Есть Maven-проект ( client-mavenModule + server-side-mavenModule ) - вот он и есть jboss-ejb-romote-client.
Няня я у них поел.
Есть сервер. Есть клиент. Клиент деплоиться в JBoss. Сервер не деплоиться никуда. Занавес.
...
Рейтинг: 0 / 0
EJB - продолжение разбора полетов
    #38511253
NDAleksey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczNDAlekseyя же говорил, что:
Есть Maven-проект ( client-mavenModule + server-side-mavenModule ) - вот он и есть jboss-ejb-romote-client.
Няня я у них поел.
Есть сервер. Есть клиент. Клиент деплоиться в JBoss. Сервер не деплоиться никуда. Занавес.

Я тоже люблю пошутить, но мне реально не до шуток. Я, черт возьми, не понимаю ничего. Эту структуру мне указал начальник. В том примере, который я дал в первом посте все находится в одном проекте. И я, так полагаю, он должен деплоиться. У меня в клиенет контекстом вызываются бины из server-side. После Ваших слов, я вообще ничего не понимаю.... = (
...
Рейтинг: 0 / 0
EJB - продолжение разбора полетов
    #38511267
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Два maven модуля создают два артифакта. Где артефакт который создаёт server-side модуль?
...
Рейтинг: 0 / 0
EJB - продолжение разбора полетов
    #38511279
NDAleksey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczДва maven модуля создают два артифакта. Где артефакт который создаёт server-side модуль?

pom-основного модуля:
<groupId>org.jboss.quickstarts.eap</groupId>
<artifactId>jboss-ejb-remote-parent</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<name>JBoss EAP Quickstart: ejb-remote</name>

<modules>
<module>server-side</module>
<module>client</module>
</modules>

pom server-side модуля:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<groupId>org.jboss.quickstarts.eap</groupId>
	<artifactId>jboss-ejb-remote-server-side</artifactId>
	<packaging>jar</packaging>
	<name>JBoss EAP Quickstart: ejb-remote - server-side</name>

	<parent>
		<groupId>org.jboss.quickstarts.eap</groupId>
		<artifactId>jboss-ejb-remote-parent</artifactId>
		<version>1.0-SNAPSHOT</version>
	</parent>



pom client-модуля:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
<groupId>org.jboss.quickstarts.eap</groupId>
	<artifactId>jboss-ejb-remote-client</artifactId>
	<packaging>jar</packaging>
	<name>JBoss EAP Quickstart: ejb-remote - client</name>
	<description>JBoss EAP Quickstart: ejb-remote-client</description>

	<parent>
		<groupId>org.jboss.quickstarts.eap</groupId>
		<artifactId>jboss-ejb-remote-parent</artifactId>
		<version>1.0-SNAPSHOT</version>
	</parent>



все собирается специальным плагинов в основном pom-нике в jar-архив, который я деплою. вот - два в одном. бины в server-side. lookup- в client-е
...
Рейтинг: 0 / 0
EJB - продолжение разбора полетов
    #38511289
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня, правда слова заканчиваются.

Build and Deploy the Quickstart
Since this quickstart builds two separate components , you can not use the standard Build and Deploy commands used by most of the other quickstarts. You must follow these steps to build, deploy, and run this quickstart.

Make sure you have started the JBoss server. See the instructions in the previous section.
Open a command prompt and navigate to the ejb-remote quickstart directory

Build and install the server side component:

Navigate to the server-side subdirectory:

cd server-side

Build the EJB and client interfaces JARs and install them in your local Maven repository.

mvn clean install

Deploy the EJB JAR to your server . This maven goal will deploy server-side/target/jboss-ejb-remote-server-side.jar . You can check the JBoss server console to see information messages regarding the deployment.

mvn jboss-as:deploy

Build and run the client application

Navigate to the server-side subdirectory:

cd ../client

Compile the client code

mvn clean compile

Execute the client application within Maven

mvn exec:exec
...
Рейтинг: 0 / 0
EJB - продолжение разбора полетов
    #38511298
NDAleksey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczУ меня, правда слова заканчиваются.

..... спасибо за терпение.... )
...
Рейтинг: 0 / 0
EJB - продолжение разбора полетов
    #38511758
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NDAlekseyДоброго времени, форумчане!
Продолжаю мучить изучать EJB, но никак вот не могу понять. Есть двух модульный maven-проект (три pom.xml). В EJB-модуле прописаны remote/stateless/statefull бины, в client-части public static main с вызовом методов из remote interface-а. Все собирается в pom-файл и деплоится на JBoss7.
Вопрос: пишу GUI приложение в котором хотел бы использовать те методы. Как это сделать?

Надо делать четырёхмодульный.
1. все константы, entity, remote-интерфейсы.
2. серверная часть, использует 1ю.
3. EAR, включающий в себя 1 и 2.
4. клиент, использующий 1 и при сборке включающий его в свои либы.
...
Рейтинг: 0 / 0
EJB - продолжение разбора полетов
    #38511770
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Tomin, 2 и 3 можно объединить при желании в один модуль.
...
Рейтинг: 0 / 0
EJB - продолжение разбора полетов
    #38511973
NDAleksey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема более менее прояснилась. Дело в том, что я сделал пример похожий на тот, ссылку на который давал. Поэтому не мог взять в толк, почему на сервер получались EJB JAR архивы. Не разобрался в описании проекта (не хотелось) - а зря. Спасибо Blazkowicz)

Все дело в
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-ejb-plugin</artifactId>
	<version>${version.ejb.plugin}</version>
	<configuration>
		<ejbVersion>3.1</ejbVersion>
		<!-- this is false by default -->
		<generateClient>true</generateClient>
	</configuration>
</plugin>



этом плагине, который собирает доп. имя_модуля-client.jar архив. Вот его-то, наверное, и имел в виду Blazkowicz (если ошибаюсь - прошу исправить).

Теперь у меня другая ошибка. Сперва напишу что было сделано:

Создал maven-проект CalculatorService:

RemoteCalculator.java:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
package com.calculator;

import javax.ejb.Remote;

@Remote
public interface RemoteCalculator {
	int add( int op1, int op2 );
	int sub( int op1, int op2 );
}



CalculatorBean.java:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
package com.calculator;

import javax.ejb.Stateless;

@Stateless
public class CalculatorBean implements RemoteCalculator {
	@Override
	public int add( int op1, int op2 ) {
		return op1 + op2;
	}

	@Override
	public int sub( int op1, int op2 ) {
		return op1 - op2;
	}
}



pom.xml:
Код: xml
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.
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.calculator</groupId>
    <artifactId>ejb-remote-stateless</artifactId>
    <version>1.0-SNAPSHOT</version>
	<packaging>ejb</packaging>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

		<version.jboss.maven.plugin>7.4.Final</version.jboss.maven.plugin>
		<version.ejb.plugin>2.3</version.ejb.plugin>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.jboss.spec</groupId>
			<artifactId>jboss-javaee-all-7.0</artifactId>
			<version>1.0.0.Beta2</version>
			<scope>compile</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-ejb-plugin</artifactId>
				<version>${version.ejb.plugin}</version>
				<configuration>
					<ejbVersion>3.1</ejbVersion>
					<generateClient>true</generateClient>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>



Собрал проект. Задеплоил ОБА jar-ника на сервер. Написал Клиента:
Код: java
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.
public class EJBClient {
	private static void invokeStatelessBean() throws NamingException {
		RemoteCalculator statelessRemoteCalculator = lookupRemoteStatelessCalculator();
		int sum = statelessRemoteCalculator.add( 3, 4 );
		System.out.println( "sum = " + sum );
	}

	private static RemoteCalculator lookupRemoteStatelessCalculator() throws NamingException {
		Security.addProvider( new JBossSaslProvider() );
		final Hashtable<String, String> p = new Hashtable<String, String>();
		p.put( Context.PROVIDER_URL, "remote://localhost:4447" );
		p.put( Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming" );
		p.put( Context.SECURITY_PRINCIPAL, "admin" );
		p.put( Context.SECURITY_CREDENTIALS, "jboss" );
		final Context context = new InitialContext( p );
		return ( RemoteCalculator ) context
				.lookup( "java:/ejb-remote-stateless-1.0-SNAPSHOT/CalculatorBean!com.calculator.RemoteCalculator" );
	}

	public static void main( String... args ) {
		try {
			invokeStatelessBean();
		} catch ( NamingException e ) {
			e.printStackTrace();
		}
	}
}



Запускаю. Чувствуется, что идет коннект. После этого получаю следующее:

Exception in thread "main" javax.naming.NamingException: Failed to create remoting connection [Root exception is java.lang.RuntimeException: Operation failed with status WAITING]
at org.jboss.naming.remote.client.ClientUtil.namingException(ClientUtil.java:36)
at org.jboss.naming.remote.client.InitialContextFactory.getInitialContext(InitialContextFactory.java:121)
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:684)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:307)
at javax.naming.InitialContext.init(InitialContext.java:242)
at javax.naming.InitialContext.<init>(InitialContext.java:216)
at Main.lookupRemoteStatelessCalculator(Main.java:31)
at Main.main(Main.java:46)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
Caused by: java.lang.RuntimeException: Operation failed with status WAITING
at org.jboss.naming.remote.protocol.IoFutureHelper.get(IoFutureHelper.java:89)
at org.jboss.naming.remote.client.NamingStoreCache.getRemoteNamingStore(NamingStoreCache.java:56)
at org.jboss.naming.remote.client.InitialContextFactory.getOrCreateCachedNamingStore(InitialContextFactory.java:166)
at org.jboss.naming.remote.client.InitialContextFactory.getOrCreateNamingStore(InitialContextFactory.java:139)
at org.jboss.naming.remote.client.InitialContextFactory.getInitialContext(InitialContextFactory.java:104)
... 11 more

Что это такое и как с ним бороться?
...
Рейтинг: 0 / 0
EJB - продолжение разбора полетов
    #38512260
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NDAleksey,

Я подзабыл уже EJB вообще, но насколько помню, 7.1 очень заморочен в вопросах видимости.
В том проекте деление такое- jar от server-side кладётся на сервер, а клиент содержит обе jar'ки.
Класть client на сервер не надо.

Я так и не понял- тот проект, собранный строго как сказано, заработал?
Т.е. "Remote calculator returned difference = " и прочее написал в консоли?
...
Рейтинг: 0 / 0
EJB - продолжение разбора полетов
    #38512322
NDAleksey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey TominNDAleksey,

Я подзабыл уже EJB вообще, но насколько помню, 7.1 очень заморочен в вопросах видимости.
В том проекте деление такое- jar от server-side кладётся на сервер, а клиент содержит обе jar'ки.
Класть client на сервер не надо.

Я так и не понял- тот проект, собранный строго как сказано, заработал?
Т.е. "Remote calculator returned difference = " и прочее написал в консоли?

да, мне тоже кажется, что он подзаморочен, хотя может я не умею читать документацию)
да, то что не надо класть, я это понял. по чистой логике нечего ему там делать.
проект не заработал = ( у меня было несколько иное заполнение контекста (если присмотреться). а в моем предыдущем посте я указал новое заполнение, после того как нашел парочку статей ( одна из них ).
но я не понимаю, почему случается RuntimeException. щас хоть чувствуется, что идет подключение.
здесь автор статьи объясняет вроде что и почему, я следую инструкциям, но все равно не работает. уже не знаю, что делать....
...
Рейтинг: 0 / 0
EJB - продолжение разбора полетов
    #38512481
WGA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WGA
Гость
NDAleksey,

Тынц
...
Рейтинг: 0 / 0
EJB - продолжение разбора полетов
    #38512887
NDAleksey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WGANDAleksey,

Тынц

не совсем понял, где там описание моей ошибки...

кстати, попробовал стартовать при выключенном jboss - результат тот же... = (
...
Рейтинг: 0 / 0
EJB - продолжение разбора полетов
    #38512951
WGA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WGA
Гость
NDAlekseyWGANDAleksey,

Тынц

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


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