Secciones

Artículos para tus primeros pasos

Si estás empezando a introducirte en el mundo de Groovy y Grails, no te pierdas nuestros artículos básicos: 

Entrevistas con los expertos
 

Los protagonistas te cuentan de qué van los proyectos más importantes del mundo Groovy:


Un proyecto de:
ImaginaWorks
Campus Escuela de Groovy

Grails

Problema con wsClient

Pablo Betancor - martes 16/03/2010

Hola tengo el siguiente problema con la clase wsClient de groovyx.net.ws:

Tengo un servicio que instancia el proxy de la siguiente forma:

def proxy = new WSClient('miContrato.wsdl', grailsApplication.classLoader)

Si instancio el proxy cada vez que quiero realizar una operación sobre el webservice no tengo problemas y todo funciona correctamente.

El problema aparece cuando hago que el proxy sea una propiedad que se inicialice sólo una vez junto al singleton (ya que estar instanciandolo cada vez que quiera realizar una operación es un gasto muy elevado de tiempo), en este caso cuando voy a llamar a las operaciones del webservice me da un error de marshalling indicando que no encuentra las clases que se generan dinámicamente desde el webservice y las cuales utilizo como requests y responses.

Me imagino que será un problema del classloader ya que no encuentra las clases. También he probado a cambiar  'grailsApplication.classLoader' por 'this.getClass().getClassLoader()' o por 'ApplicationHolder.application.classLoader' y tampoco funciona.

 

Gracias y saludos

Re: Problema con wsClient

Pablo Betancor - miércoles 17/03/2010
La verdad que el problema me parece muy extraño porque el siguiente código si funciona (ya que se inicializa el proxy cada vez)

[code]      
        def proxy = new WSClient(wsdlLocation, grailsApplication.getClassLoader())
        proxy.initialize()
        def myRequest = proxy.create('myNamespace.myRequest');
        myRequest.setParams(myParams)
        def myResponse = proxy.MyOperation(myRequest)
[/code]

pero si inicializo el proxy en un servicio sólo una vez, la última línea falla

[code]      
         def proxy = myService.getProxy()                   // funciona
        def myRequest = proxy.create('myNamespace.myRequest');    // funciona
        myRequest.setParams(myParams)     // funciona
        def myResponse = proxy.MyOperation(myRequest)   // da un error
[/code]

el error:
org.apache.cxf.interceptor.Fault: Marshalling Error: class myNamespace.myRequest nor any of its super class is known to this context.

Re: Problema con wsClient

Pablo Betancor - jueves 18/03/2010

la solución:

http://jira.codehaus.org/browse/GMOD-85?focusedCommentId=210192&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#action_210192

Responder al hilo | Volver al foro "Grails" | Volver a los foros