Web Services .Errores frecuentes en EJB 3

Quienes venimos de trabajar en Glassfish v2.x y pasamos a la versión 3 tuvimos una extraña experiencia. Los WebServices no funcionaban.
El sistema trabajaba bien, los EJB respondían pero los servicios web directamente no se generaban. Busqué en todos los sitios, foros, documentaciones, etc. pero nunca una respuesta certera. Por un lado hablaban de SSL, de tipos de datos complejos no admitidos (cosa que no es cierto) y otras soluciones extrañas.
Dejé el asunto hasta que necesitaba utilizarlos como una compuerta a el sistema consumidor (PHP) y proveer servicios abiertos a desarrolladores de terceros. Ahora encontré la solución, que era simple y tonta a la vez. Simplemente debemos anotar @WebMethod(exclude = true) sobre los métodos que no queremos proveer. Y en el caso de un EJB sin estado con interfaz remota exponía métodos no Serializables (como el que retorna el entityManager).
Ahora, en JEE 6 debemos anotar que se expone y que no. Por defecto todos los métodos públicos son expuestos, antes los excluíamos obviando la etiqueta personalizada @WebMethod
Ya sabemos que un error de Test con resultados NULL o similares puede ser la no especificación de los métodos (expuestos o no expuestos). A tenerlo en cuenta.

Anuncios