2012-07-25 19 views
6

tengo un EJB 3-compatibles EJB, por ejemploEJB generación 3 del trozo

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

y necesito para generar código auxiliar para este EJB. pero no quiero usar la herramienta websphere o la herramienta maven. ¿Hay alguna forma de generar stub usando jdk?

Al crear cliente remoto

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

trabajarán en WebLogic o JBoss, pero en WebSphere, incluso Es EJB 3 tiene que escribir como esto

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

En este caso, si el stub no se presenta en el cliente arrojará excepción, hay una manera de generar stub usando la herramienta de barra herramienta ejb stub websphere. Pero no quiero usar ninguna herramienta específica de plataforma.

+0

¿Es necesario generar trozos motivados por la interoperabilidad EJB 2.x o por qué tiene que generar trozos? –

+0

Consulte la pregunta de actualización. –

Respuesta

4

No, debe usar WAS_HOME/bin/createEJBStubs. El comando rmic incluido en Java SDK, que normalmente se usaría para generar stubs, no se puede usar en interfaces remotas EJB3 "puras" que no extienden java.rmi.Remote.

Tenga en cuenta que si utiliza el contenedor del cliente de aplicaciones (WAS_HOME/bin/launchClient) o su "cliente" es otro servidor, entonces no necesita generar resguardos: el contenedor generará uno para usted. Solo necesita usar createEJBStubs si está utilizando un thinclient no administrado.

0

Tengo crear un maven-plugin wrapper para el script createEJBStub.

¿Por qué?

Esto nos permite construir proyectos maven de prueba que se ejecutan como parte de nuestra configuración de CI contra nuestra aplicación después de la implementación.

Más específicamente, junto con experto, esto permite que nuestro proyecto de prueba a:

  1. Utilizar gestión de la dependencia Maven para tirar el frasco API que publicamos en nuestro repositorio de nexo interno
  2. Crear clases stub como parte de la ciclo de vida de maven "generate-sources"
  3. Ejecute el caso de prueba junit contra el servidor de aplicaciones con EJB para realizar pruebas de integración.