powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / EJB - продолжение разбора полетов
16 сообщений из 41, страница 2 из 2
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
16 сообщений из 41, страница 2 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / EJB - продолжение разбора полетов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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