2016-09-28 4 views
0

Я только что начал читать EJB.Invoke EJB Remote Bean в веб-приложении

Возможно ли использовать удаленный bean-компонент в отдельном веб-приложении (войне)? если возможно, как этого достичь. Я попробовал, веб-приложение может вызывать удаленный bean-компонент, если оба в одном EAR, но я хочу вызвать его в отдельной EJB + WAR.

пс. Я использую GlassFish 4.0

ответ

1

Для GlassFish вы можете попробовать это: https://glassfish.java.net/javaee5/ejb/EJB_FAQ.html#StandaloneRemoteEJB

Ниже мой пример для WebLogic.

1) в вашем EAR вы должны иметь @Remote аннотированный интерфейс и его реализации

@Remote 
public interface Calculator { 

    public int add(int a, int b); 

} 

@Stateless(mappedName = "myCalculator") 
public class CalculatorImpl implements Calculator { 
    @Override 
    public int add(int a, int b) { 
     return a + b; 
    } 
} 

2) вы должны иметь клиент, который будет вызывать ваш удаленный калькулятор

private static Calculator getRemoteCalculator() { 
    Hashtable<String, String> props = new Hashtable<String, String>(); 

    props.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory"); 
    props.put(Context.PROVIDER_URL, "t3://localhost:7001");  


    try { 
     InitialContext ctx = new InitialContext(props); 
     return (Calculator) ctx.lookup("myCalculator#com.javaee.Calculator"); 
    } catch (NamingException e) { 
     throw new RuntimeException(e); 
    } 
} 

3) для клиента вы должны добавить свой удаленный модуль EJB калькулятора, чтобы построить проход

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