2012-07-25 13 views
6

ho un ejb ejb-3 compatibile, diconoEJB generazione 3 Stub

@Remote 
interface Hai{ 
    String sayHai(); 
} 
Stateless(name = "xxx", mappedname="yyy") 
public class HaiImpl implements Hai{ 
    public String sayHai(){ 
     return "Hai"; 
    } 
} 

e ho bisogno di generare stub per questo EJB. ma non voglio usare lo strumento websphere o lo strumento maven. C'è un modo per generare stub usando jdk?

Quando si crea client remoto

Hai hai = (Hai)ctx.lookup("yyy#com.zz.Hai"); 
System.out.println(hai.sayHai()); 

lavoreranno in weblogic o JBoss, ma in WebSphere, anche se è EJB 3 è necessario scrivere come questo

Object o = ctx.lookup("yyy"); 
Hai hai = (Hai)javax.rmi.PortableRemoteObject.narrow(o,Hai.class); 
System.out.println(hai.sayHai()); 

In questo caso, se lo stub non è presente al client, ma genera un'eccezione, c'è un modo per generare stub usando lo strumento generatore websphere ejb stub. Ma non voglio usare nessuno strumento specifico per piattaforma.

+0

È la necessità di generare stub motivati ​​dall'interoperabilità di EJB 2.x o perché è necessario generare stub? –

+0

Si prega di consultare la domanda di aggiornamento. –

risposta

4

No, è necessario utilizzare WAS_HOME/bin/createEJBStubs. Il comando rmic incluso nel Java SDK, che normalmente verrebbe utilizzato per generare stub, non può essere utilizzato su interfacce remote EJB 3 "pure" che non estendono java.rmi.Remote.

Si noti che se si utilizza il contenitore del client dell'applicazione (WAS_HOME/bin/launchClient) o il "client" è un altro server, non è necessario generare stub: il contenitore ne genererà uno. È necessario utilizzare createEJBStubs solo se si utilizza un clientente non gestito.

0

Ho creato uno maven-plugin wrapper per lo script createEJBStub.

Perché?

Questo ci consente di creare progetti di test maven che vengono eseguiti come parte della nostra configurazione CI contro la nostra applicazione dopo la distribuzione.

Più in particolare insieme a Maven, questo permette il nostro progetto di test per:

  1. Utilizzare la gestione delle dipendenze Maven per tirare il vaso API che pubblichiamo sul nostro repository nesso interno
  2. creare classi stub come parte del ciclo di vita di "generate-sources"
  3. Eseguire il test case junit contro il server applicazioni con EJB per eseguire test di integrazione.