Intentando descubrir por qué una de esas dos solicitudes SOAP no funciona (java.lang.IllegalArgumentException)

Tengo un servicio web JAX-WS en ejecución que ya tiene algunos puntos finales de trabajo. Ahora tengo el siguiente problema:

Tengo dos solicitudes SOAP diferentes aquí y no entiendo por qué la primera funciona, pero la segunda no.

La única diferencia obvia en las solicitudes es que la primera especifica un espacio de nombres en el<Envelope> etiqueta mientras que el segundo lo especifica al llamar al método<getMoldDataHistory>.

Solicitud SOAP 1: no funciona (el espacio de nombres se especifica en la llamada al método)

<s:Envelope
    xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"
>
    <s:Body
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    >
        <getMoldDataHistory
            xmlns="http://history.production.soap.webservices.product.company.at/">
            <machineId>92623-15853588</machineId>
            <start>0</start>
            <end>0</end>
        </getMoldDataHistory>
    </s:Body>
</s:Envelope>

Solicitud SOAP 2: en funcionamiento (el espacio de nombres se especifica en<Envelope> etiqueta)

<soapenv:Envelope 
    xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
    xmlns:his="http://history.production.soap.webservices.product.company.at/">

   <soapenv:Header/>

   <soapenv:Body>
      <his:getMoldDataHistory>
         <machineId>92623-15853588</machineId>
         <start>0</start>
         <end>0</end>
      </his:getMoldDataHistory>
   </soapenv:Body>
</soapenv:Envelope>

El mensaje de error SOAP que recibo al hacer la primera solicitud (No funciona).

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
   <S:Body>
      <S:Fault xmlns:ns4="http://www.w3.org/2003/05/soap-envelope">
         <faultcode>S:Server</faultcode>
         <faultstring>java.lang.IllegalArgumentException</faultstring>
      </S:Fault>
   </S:Body>
</S:Envelope>

El seguimiento de pila de la excepción lanzada desde el Servidor al recibir la primera solicitud SOAP.

java.lang.IllegalArgumentException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at sun.reflect.misc.Trampoline.invoke(Unknown Source)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at sun.reflect.misc.MethodUtil.invoke(Unknown Source)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at com.sun.xml.internal.ws.api.server.MethodUtil.invoke(Unknown Source)
    at com.sun.xml.internal.ws.api.server.InstanceResolver$1.invoke(Unknown Source)
    at com.sun.xml.internal.ws.server.InvokerTube$2.invoke(Unknown Source)
    at com.sun.xml.internal.ws.server.sei.EndpointMethodHandler.invoke(Unknown Source)
    at com.sun.xml.internal.ws.server.sei.SEIInvokerTube.processRequest(Unknown Source)
    at com.sun.xml.internal.ws.api.pipe.Fiber.__doRun(Unknown Source)
    at com.sun.xml.internal.ws.api.pipe.Fiber._doRun(Unknown Source)
    at com.sun.xml.internal.ws.api.pipe.Fiber.doRun(Unknown Source)
    at com.sun.xml.internal.ws.api.pipe.Fiber.runSync(Unknown Source)
    at com.sun.xml.internal.ws.server.WSEndpointImpl$2.process(Unknown Source)
    at com.sun.xml.internal.ws.transport.http.HttpAdapter$HttpToolkit.handle(Unknown Source)
    at com.sun.xml.internal.ws.transport.http.HttpAdapter.handle(Unknown Source)
    at com.sun.xml.internal.ws.transport.http.server.WSHttpHandler.handleExchange(Unknown Source)
    at com.sun.xml.internal.ws.transport.http.server.WSHttpHandler.handle(Unknown Source)
    at com.sun.net.httpserver.Filter$Chain.doFilter(Unknown Source)
    at sun.net.httpserver.AuthFilter.doFilter(Unknown Source)
    at com.sun.net.httpserver.Filter$Chain.doFilter(Unknown Source)
    at sun.net.httpserver.ServerImpl$Exchange$LinkHandler.handle(Unknown Source)
    at com.sun.net.httpserver.Filter$Chain.doFilter(Unknown Source)
    at sun.net.httpserver.ServerImpl$Exchange.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

Básicamente, estoy tratando de entender por qué la primera solicitud no funciona a pesar de ser una solicitud SOAP válida. ¿Hay algo que deba configurar en mi servidor para permitir tales solicitudes?

EDITAR:

Después de hacer algunas pruebas más, descubrí que la posición de la declaración del espacio de nombres NO importa SI el método al que llamo tiene 0 parámetros. Tan pronto como se requiere el parámetro, deja de funcionar.

EDITAR 2:

Ahora me topéeste hilo aquí . Tengo el mismo problema. Mi cliente C # que realiza las solicitudes no utiliza el espacio de nombres en el método TAG. Después de agregarlo funciona.

Aún así, ¿cómo puedo decirle a JAX-WS que se ocupe de esto?

No funciona:

<getMoldDataHistory xmlns="http://history.production.soap.webservices.product.company.at/">

Trabajos:

<his:getMoldDataHistory xmlns:his="http://history.production.soap.webservices.product.company.at/">

Respuestas a la pregunta(1)

Su respuesta a la pregunta