Web Service con CXF para Weblogic

De Dos Ideas.
Saltar a: navegación, buscar

Desarrollar un servicio CXF en Weblogic es posible, si bien son necesarias algunas consideraciones.

Pasos

Incluir el proyecto Web dentro de un EAR

Esto es debido a que debe priorizarse el uso de ciertas clases paquetizadas con CXF. Esto se hace incluyendo el siguiente código en el archivo weblogic-application.xml

   <prefer-application-packages>
       <package-name>javax.jws.*</package-name>
   </prefer-application-packages>

Eliminar referencias al filesystem

Por default, el proceso de generación de código escribe ciertas referencias al fylesystem. Dado que Weblogic no descomprime los ejecutables, no puede obtener las referencias del sistema de archivos. Es por ello que deberemos remover dichas referencias de las clases *Service.java y *Impl.java Ej:

   @WebServiceClient(name = "CalculadoraService", 
                     wsdlLocation = "CalculadoraService.wsdl",
                     targetNamespace = "http://www.dosideas.com/cursos/calculadora") 
   public class CalculadoraService extends Service {
       
       public final static URL WSDL_LOCATION;
       public final static QName SERVICE = new QName("http://www.dosideas.com/cursos/calculadora", "CalculadoraService");
       public final static QName CalculadoraSoapPort = new QName("http://www.dosideas.com/cursos/calculadora", "CalculadoraSoapPort");
       static {
           URL url = null;
           try {
               url = new URL("CalculadoraService.wsdl");
           } catch (MalformedURLException e) {
               System.err.println("Can not initialize the default wsdl from file:./src/java/CalculadoraService.wsdl");
               // e.printStackTrace();
           }
           WSDL_LOCATION = url;
       }

Copiar WSDL a la carpeta WEB-INF

Como la carpeta WEB-INF si se descomprime, WL toma además las referencias relativas de los archivos respecto de esa carpeta, por lo que si se especifica el nombre del archivo a secas, lo CXF lo irá a buscar a ese carpeta.

Recursos

Proyecto Ejemplo Java 1.5 y CXF 2.2.6 para Weblogic