2014-10-30 5 views
0

У меня проблема с ejb remote method invocation.
Для тестирования я создал проект ejb с фактором без разбивки и простой метод, объявленный в удаленном интерфейсе. Я развернул этот проект в JBoss 7.1.EJB Удаленный вызов метода с клиентом

Теперь я хочу позвонить бизнес-методу hello в свой bean-компонент из другого класса, который не является частью проекта и не развернут на этом сервере jboss. Поэтому, если я понимаю это правильно, это обычный вызов удаленного метода от клиента.

Я написал свой HelloWorldClient, объявив свойства для InitialContext(). Но когда я запускаю этого клиента, я получил исключение NameNotFoundException. Для меня это похоже на исключение из-за ложного имени jndi, но я много старался получить правильный.

На консоли у меня есть имена jndi с моего сервера для проекта, но это не работает. Может ли кто-нибудь помочь мне решить эту проблему?

Client с контекстом:

Properties jndiProps = new Properties(); 
     jndiProps.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory"); 
     jndiProps.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming"); 
     jndiProps.put(Context.PROVIDER_URL,"remote://localhost:4447"); 
     jndiProps.put(Context.SECURITY_PRINCIPAL, "testuser"); 
     jndiProps.put(Context.SECURITY_CREDENTIALS, "testpasswort"); 
     Context ctx = new InitialContext(jndiProps); 
     HelloWorldRemote hello = (HelloWorldRemote) ctx.lookup("java:global[/ejbproject1]/ejbproject1/HelloWorldBean[/HelloWorldRemote]"); 

Мои Bean:

@Stateless(name="hello") 
public class HelloWorldBean implements HelloWorldRemote{ 

@Override 
public String hello(String value) { 
    System.out.println("Say hello to "+value); 
    return "Hello " + value; 
} 


в JNDI имена из JBoss

18:19:07,464 INFO [org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor] (MSC service thread 1-6) JNDI bindings for session bean named hello in deployment unit deployment "ejbproject1.jar" are as follows: 

java:global/ejbproject1/hello!interfaces.HelloWorldRemote 
java:app/ejbproject1/hello!interfaces.HelloWorldRemote 
java:module/hello!interfaces.HelloWorldRemote 
java:jboss/exported/ejbproject1/hello!interfaces.HelloWorldRemote 
java:global/ejbproject1/hello 
java:app/ejbproject1/hello 
java:module/hello 


и исключения:

javax.naming.NameNotFoundException: global[/ejbproject1]/ejbproject1/HelloWorldBean[/HelloWorldRemote] -- service jboss.naming.context.java.jboss.exported.global[.ejbproject1].ejbproject1.HelloWorldBean[.HelloWorldRemote] 

ответ

0

Изменение от

java:global/ejbproject1/hello!interfaces.HelloWorldRemote 

в

java:/ejbproject1/hello!interfaces.HelloWorldRemote 

Это будет работать.

+0

Большое спасибо, между тем я пробовал по-другому, я использую Maven для сборки. Я добавил проекты как зависимость и сделал поиск непосредственно в EJB-Injection – Benjamin

Смежные вопросы