2015-05-24 1 views
0

Я создал простое приложение EJB 3.0, развернутое в финале JBOSS 7.1.1.JNDI loopup для удаленного клиента, который обращается к EJB, развернутому в JBOSS AS (окончание 7.1.1)

Вот код:

EJB 1:

Интерфейс

package com.example.server.local.bean; 

import javax.ejb.Local; 

@Local 
public interface UtilLocalBeanLocal { 

    public String addString(); 
} 

Класс, реализующий этот интерфейс:

package com.example.server.local.bean; 

import javax.ejb.Local; 
import javax.ejb.Stateless; 

@Stateless 
@Local(value=UtilLocalBeanLocal.class) 
public class UtilLocalBean implements UtilLocalBeanLocal { 

    public UtilLocalBean() { 

    } 

    @Override 
    public String addString() { 

     return "Added from Local bean"; 
    } 
} 

Итак, это EJB я создаю, чтобы быть " локально ", используемый другим EJB.

EJB 2:

Интерфейс

package com.example.bean.session; 

import javax.ejb.Remote; 

@Remote 
public interface FirstBeanRemote { 

    public String callMe(); 
} 

Класс, реализующий этот интерфейс.

package com.example.bean.session; 

import javax.ejb.EJB; 
import javax.ejb.Remote; 
import javax.ejb.Stateless; 

import com.example.server.local.bean.UtilLocalBeanLocal; 

@Stateless 
@Remote(value=FirstBeanRemote.class) 
public class FirstBean implements FirstBeanRemote { 

    @EJB 
    private UtilLocalBeanLocal utilLocalBeanLocal; 

    public FirstBean() { 

    } 

    @Override 
    public String callMe() { 

     return "Hi there!" + utilLocalBeanLocal.addString(); 
    } 
} 

Когда я начинаю JBoss, что JNDI привязки я получаю, как это:

00:34:15,928 INFO [org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor] (MSC service thread 1-5) JNDI bindings for session bean named FirstBean in deployment unit subdeployment "EJB30TestProj.jar" of deployment "EJB30TestProjEAR.ear" are as follows: 

java:global/EJB30TestProjEAR/EJB30TestProj/FirstBean!com.example.bean.session.FirstBeanRemote 
java:app/EJB30TestProj/FirstBean!com.example.bean.session.FirstBeanRemote 
java:module/FirstBean!com.example.bean.session.FirstBeanRemote 
java:jboss/exported/EJB30TestProjEAR/EJB30TestProj/FirstBean!com.example.bean.session.FirstBeanRemote 
java:global/EJB30TestProjEAR/EJB30TestProj/FirstBean 
java:app/EJB30TestProj/FirstBean 
java:module/FirstBean 

Однако в удаленном клиенте, когда я пытаюсь использовать любого из них выше связывания значений JNDI, не работает, и что на самом деле работает (после того, как много Google) является:

ejb:EJB30TestProjEAR/EJB30TestProj//FirstBean!com.example.bean.session.FirstBeanRemote 

трудно понять, как работают эти JNDI привязок. JBOSS выводит другой JNDI, и в действительности то, что работает, отличается.

Может ли кто-нибудь продегустировать это? (как определить, какие привязки JNDI будут работать в разных сценариях и любых других указателях)

ответ

1

Значения привязки, которые вы упомянули, подготовлены для локального поиска, скажем, на сервер, на котором вы публикуете ejb. global, module, app - это ограничение областей и в котором вы можете использовать каждый. Например, вы могли бы найти ejb из другого ejb одного и того же ejb-модуля, используя модуль , но вы не смогли найти его из другого ejb-модуля, даже будучи модулями одного и того же приложения (уха или войны), вы должны использовать по крайней мере приложение область для этого, и вы можете использовать приложение или global в обоих сценариях.

я настоятельно рекомендую вам взять время, чтобы прочитать Jboss AS7 JNDI Referencia но знать об удаленном поиске перейдите к Remote JNDI раздела