powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / EJB - продолжение разбора полетов
41 сообщений из 41, показаны все 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
EJB - продолжение разбора полетов
    #38513008
NDAleksey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WGAЭто не описание ошибки, а пошаговая инструкция по написанию remote-client. Я просто документацию JBoss почитываю, попалось на глаза. Вроде Ваш случай.

да. спасибо. мой... но он не работает у меня. если брать код в Вашем примере, то:

вылетает с "Exception in thread "main" java.lang.IllegalStateException: No EJB receiver available for handling [appName:,modulename:ejb-remote-stateless-1.0-SNAPSHOT,distinctname:] combination for invocation context org.jboss.ejb.client.EJBClientInvocationContext@146b111"

если я делаю:
Код: java
1.
return ( RemoteCalculator ) context.lookup(ejb:/ejb-remote-stateless-1.0-SNAPSHOT//CalculatorBean!com.calculator.RemoteCalculator)



если я делаю :
Код: java
1.
return ( RemoteCalculator ) context.lookup(java:/ejb-remote-stateless-1.0-SNAPSHOT//CalculatorBean!com.calculator.RemoteCalculator)


то вылетает с "Exception in thread "main" javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial"

тогда ставлю:
Код: java
1.
jndiProperties.put( Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory" );


вылетает с "Exception in thread "main" javax.naming.NamingException: No provider URL configured for connection"


если все таки брать мой код и добавить
Код: java
1.
jndiProperties.put( Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory" );


в инициализацию контекста, то вылетает вот:

ERROR: JBREM000200: Remote connection failed: javax.security.sasl.SaslException: Authentication failed: all available authentication mechanisms failed
javax.naming.NamingException: Failed to create remoting connection [Root exception is java.lang.RuntimeException: javax.security.sasl.SaslException: Authentication failed: all available authentication mechanisms failed]
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 EJBClient.lookupRemoteStatelessCalculator(EJBClient.java:35)
at EJBClient.invokeStatelessBean(EJBClient.java:21)
at EJBClient.main(EJBClient.java:45)
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: javax.security.sasl.SaslException: Authentication failed: all available authentication mechanisms failed
at org.jboss.naming.remote.protocol.IoFutureHelper.get(IoFutureHelper.java:87)
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)
... 12 more
Caused by: javax.security.sasl.SaslException: Authentication failed: all available authentication mechanisms failed
at org.jboss.remoting3.remote.ClientConnectionOpenListener$Capabilities.handleEvent(ClientConnectionOpenListener.java:365)
at org.jboss.remoting3.remote.ClientConnectionOpenListener$Capabilities.handleEvent(ClientConnectionOpenListener.java:214)
at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:72)
.....

Блин, эти танцы с бубном меня уже начинают доставать.... Есть 100% работающий код вообще с этим jboss7?
...
Рейтинг: 0 / 0
EJB - продолжение разбора полетов
    #38514055
NDAleksey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
народ, я его победил!!! ура!!!

сделал клиента так:

Код: 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.
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 {
		final Hashtable<String, String> p = new Hashtable<String, String>();
		p.put( Context.PROVIDER_URL, "remote://127.0.0.1:4447" );
		p.put( Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming" );

		//unnecessary initialization
		p.put( Context.SECURITY_PRINCIPAL, "client" );
		p.put( Context.SECURITY_CREDENTIALS, "client_pass" );
		p.put( Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory" );
		final Context context = new InitialContext( p );

		return ( RemoteCalculator ) context
				.lookup( "ejb:/ejb-remote-stateless-1.0-SNAPSHOT/CalculatorBean!" + RemoteCalculator.class.getName() );
	}

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



спасибо всем за внимание, в отдельности Blazkowicz - за терпение.

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

Код: plaintext
ERROR: JBREM000200: Remote connection failed: javax.security.sasl.SaslException: Authentication failed: all available authentication mechanisms failed

если устанавливается:
Код: java
1.
jndiProperties.put( Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory" );



то по умолчанию берется видимо Managment User (я так предполагаю), поэтому нужно явно задать (создать перед этим если не существует) Application User:
Код: java
1.
2.
jndiProperties.put( Context.SECURITY_PRINCIPAL, "app_user_login" );
jndiProperties.put( Context.SECURITY_CREDENTIALS, "app_user_pass" );



может кому пригодится) а может я один этого не знал)

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

Предлагаю на рисунке схему проекта.
Идея такая - есть сервлет:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
@WebServlet( name = "CreteFileServlet", urlPatterns = "createCSV" )
public class CreateFileServlet extends javax.servlet.http.HttpServlet {
	@EJB
	FileCreatorBean bean;

	private boolean createFile( String URI ) throws IOException	{
		return bean.createFile( URI );
	}

	protected void doGet( javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response )
			throws javax.servlet.ServletException, IOException {
		response.getWriter().write( "<h1>" + ( createFile( "D:/test.txt" ) ? "True" : "False" ) + "</h1>" ) ;
	}
}



Есть FileCreatorBean:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
@Stateless( name = "FileCreatorEJB" )
public class FileCreatorBean {
	@PersistenceContext( unitName = "manager1")
	EntityManager entityManager;

	private File file;

	public boolean createFile( String URI ) throws IOException {
		file = File.getInstance( URI );
		entityManager.persist( file );

		return true;
	}
}



И есть persistence.xml:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0"
			 xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
			 xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
	<persistence-unit name="manager1" transaction-type="JTA">
		...
	</persistence-unit>
</persistence>



Теперь ошибка в логе по такой причине:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: JBAS011047: Component class com.bs.amg.test.session.FileCreatorBean for component FileCreatorEJB has errors: 
JBAS011440: Can't find a persistence unit named manager1 in subdeployment "web-1.0.war" of deployment "ear-1.0.ear"
	at org.jboss.as.ee.component.deployers.ModuleJndiBindingProcessor$1.handle(ModuleJndiBindingProcessor.java:169)
	at org.jboss.as.ee.component.ClassDescriptionTraversal.run(ClassDescriptionTraversal.java:54)
	at org.jboss.as.ee.component.deployers.ModuleJndiBindingProcessor.processClassConfigurations(ModuleJndiBindingProcessor.java:162)
	at org.jboss.as.ee.component.deployers.ModuleJndiBindingProcessor.deploy(ModuleJndiBindingProcessor.java:155)
	at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:113) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
	... 5 more



И вопрос - куда засунуть persistence.xml? Или дело не в его расположении?
...
Рейтинг: 0 / 0
EJB - продолжение разбора полетов
    #38533128
NDAleksey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот структура:
...
Рейтинг: 0 / 0
EJB - продолжение разбора полетов
    #38533190
0FD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NDAleksey,

persistence.xml нет(и твоего application.xml тоже нет, он создается автоматически), так как структура проекта неправильная и maven не добавляет папку META-INF и ее содержимое в файлы jar и ear в модулях ejb и ear. META-INF должен лежать в src/main/resources.
...
Рейтинг: 0 / 0
EJB - продолжение разбора полетов
    #38533200
NDAleksey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
0FD,

Вам ear-ник дать? Там прям в корне META-INF с тем содержимым application.xml, который я прописал, а вот persistence.xml там действительно нет = (
...
Рейтинг: 0 / 0
EJB - продолжение разбора полетов
    #38533229
0FD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NDAleksey,

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

Нет, а вот application.xml и pom.xml покажи

наверное туплю, но какой из pom-ников?

application.xml:

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<application version="5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
			 xsi:schemaLocation=" http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_5.xsd">
	<module>
		<ejb>ejb-1.0.jar</ejb>
	</module>
	<module>
		<web>
			<web-uri>web-1.0.war</web-uri>
			<context-root>/</context-root>
		</web>
	</module>
</application>
...
Рейтинг: 0 / 0
EJB - продолжение разбора полетов
    #38533252
0FD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NDAleksey,

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

из ear

Код: 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.
<parent>
		<artifactId>root</artifactId>
		<groupId>com.bs.amg.test</groupId>
		<version>1.0</version>
	</parent>
	<modelVersion>4.0.0</modelVersion>

	<artifactId>ear</artifactId>
	<packaging>ear</packaging>

	<dependencies>
		<dependency>
			<groupId>com.bs.amg.test</groupId>
			<artifactId>ejb</artifactId>
			<version>${project.version}</version>
			<type>jar</type>
		</dependency>
		<dependency>
			<groupId>com.bs.amg.test</groupId>
			<artifactId>web</artifactId>
			<version>${project.version}</version>
			<type>war</type>
		</dependency>
	</dependencies>
...
Рейтинг: 0 / 0
EJB - продолжение разбора полетов
    #38533324
NDAleksey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
0FDNDAleksey,

persistence.xml нет(и твоего application.xml тоже нет, он создается автоматически), так как структура проекта неправильная и maven не добавляет папку META-INF и ее содержимое в файлы jar и ear в модулях ejb и ear. META-INF должен лежать в src/main/resources.

я добавил такой путь с файлом "src/main/resources/META-INF/persistence.xml" в ear-модуль - не помогло!

прочитав здесь , я добавил в ear pom.xml такой плагин:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-resources-plugin</artifactId>
	<version>2.6</version>
	<configuration>
		<resources>
			<resource>resources</resource>
		</resources>
	</configuration>
</plugin>


предварительно добавив просто папку "resources" в ear-модуль, а в нее persistence.xml - опять не помогло.
...
Рейтинг: 0 / 0
EJB - продолжение разбора полетов
    #38533342
0FD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NDAleksey,
в ejb модуле перемести в META-INF из корня в src/main/resources/

Проверил, ear модуль использует из корня META-INF/application.xml, хотя должен лежать в /src/main/application/META-INF/application.xml
...
Рейтинг: 0 / 0
EJB - продолжение разбора полетов
    #38533391
NDAleksey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
0FDNDAleksey,
в ejb модуле перемести в META-INF из корня в src/main/resources/

Проверил, ear модуль использует из корня META-INF/application.xml, хотя должен лежать в /src/main/application/META-INF/application.xml

Блин, я ничего понять не могу. Для эксперимента перемещаю application.xml из ear/META-INF в ear/resources - в результате собирает в META-INF... Бред. Сделал с ejb как Вы сказали - работает. Но, допустим (чисто для эксперимента), я хочу поместить persistence.xml в ear/META-INF. Я подключил плагин, ссылку на который дал, а он (maven) как бы это игнорирует... Почему?

Спасибо за помощь, кстати! Щас проверю, чтобы из web сервлета был видит persistence-unit )
...
Рейтинг: 0 / 0
EJB - продолжение разбора полетов
    #38533416
NDAleksey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И еще вопрос возник - почему jboss при deploy ругался на
Код: java
1.
"urlPatterns = "createCSV"

в
Код: java
1.
@WebServlet

.
Убрал, и все задеплоилось.
...
Рейтинг: 0 / 0
EJB - продолжение разбора полетов
    #38533425
NDAleksey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Последний вопрос отпадает)
...
Рейтинг: 0 / 0
41 сообщений из 41, показаны все 2 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / EJB - продолжение разбора полетов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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