2010-07-15 17 views
6

tengo un EJB devolver una lista de mis propios ValidationMessage objetos:WebLogic APPC: incluir argumentos genéricos en el frasco cliente EJB

@Remote 
public interface Intf { 
    List<ValidationMessage> validateFile(); 
} 

estoy generando JAR cliente EJB con APPC utilidad de WebLogic. El problema es que no incluye la clase ValidationMessage en el JAR del cliente. Tal vez no vea la dependencia de esta clase porque solo mira el código compilado, cuando la información genérica ya está borrada.
Si agrego otro método ficticio, que devuelve esta clase directamente a la interfaz, todo está bien.

@Remote 
public interface Intf { 
    List<ValidationMessage> validateFile(); 
    ValidationMessage dummy(); 
} 

Mi pregunta es: ¿hay alguna manera de arreglar esto sin agregar un método ficticio? ¿Hay alguna manera de controlar lo que se incluye en appc en el cliente JAR?

Respuesta

0

Esto no es una respuesta real y no tengo conocimiento de WebLogic o la utilidad de la aplicación.

Parece un problema de borrado de genéricos. El tipo de devolución real del método validateFile() es el tipo sin procesar List; mientras que hay información adicional en el archivo de clase para reconstruir los parámetros de tipo, algunas herramientas no los controlan.

Estoy prediciendo que este problema desaparecerá si también hace referencia a la clase faltante en un parámetro de método.

+0

eso es exactamente lo que he escrito en la pregunta: ¿se trata de un problema de los genéricos borrado y lo hace desaparecer si se agrega un método ficticio refiriéndose esa clase. – unbeli

0

Obtuve un problema similar con la aplicación donde quería anular algunos de los POJOS que generaba para el cliente JAX-WS.

Utilicé esta opción (-output) para generar el resultado en un directorio explotado en lugar de un contenedor de cliente. Realice una copia ant de los archivos .class requeridos en el directorio del cliente y cree un archivo propio.

Se puede ver esta opción si lo hace 'weblogic.appc java' ejecutar setEnv.cmd

-output Especifica un archivo de salida alterna o directorio. Si no se establece, la salida será colocada en el archivo o directorio fuente.

verificación si esto funciona

Cuestiones relacionadas