leere Parameter bei SOAP Anfrage

cfenner

Mitglied
Moin,

ich habe eine Java-Anwendung geschrieben, die ein SOAP Interface mit diversen Methoden bereit stellt.

Ich kann diese Anwendung problemlos auf meinem Rechner starten und mit soapUI diverse Anfragen ohne Probleme starten. Das funktioniert auch von anderen Rechnern in meinem Netzwerk.
Wenn ich diese Anwendung nun auf einem Server außerhalb meines LANs starte und dorthin Anfragen stelle kommen die Anfragen zwar richtig an, in den Soap-Methoden sind aber alle Parameter außer dem ersten Leer. Im tcpdump auf dem Rechner kommen die Parameterwerte aber an.

Könnte mir jemand nen Hinweis geben wo sich da nen Fehler verstecken könnte oder wo ich ansetzen könnte?


Edit:
Auf einem anderen Rechner im selben Netz funktioniert es.

Anfrage in soapUI
Code:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
        xmlns:soap="http://soap.adapters.utilities.blablub.de/">
   <soapenv:Header/>
   <soapenv:Body>
      <soap:startPortingRequest>
         <customerId>123456</customerId>
         <areaCode>40</areaCode>
         <nr>12345</nr>
         <oldProvider>Telekom</oldProvider>
         <portingDate>2010-10-10</portingDate>
         <prevFirstName>hallo</prevFirstName>
         <prevLastName>welt</prevLastName>
         <prevTitle>Herr</prevTitle>
         <prevNameAddHist>a</prevNameAddHist>
         <prevNameAddOpt>b</prevNameAddOpt>
         <prevNameAddPre>c</prevNameAddPre>
         <prevStreet>abc</prevStreet>
         <prevStreetNr>11</prevStreetNr>
         <prevPostalNr>22334</prevPostalNr>
         <prevCity>Hamburg</prevCity>
         <prevStreetAdd>a</prevStreetAdd>
         <prevCityAdd>b</prevCityAdd>
         <prevPostbox>c</prevPostbox>
      </soap:startPortingRequest>
   </soapenv:Body>
</soapenv:Envelope>

Anfrage am Server(TCPdump)
Code:
<soapenv:Envelope.xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
	xmlns:soap="http://soap.adapters.utilities.blablub.de/">
  <soapenv:Header/>
  <soapenv:Body>
    <soap:startPortingRequest>
      <customerId>123456</customerId>
      <areaCode>40</areaCode>
      <nr>12345</nr>
      <oldProvider>Telekom</oldProvider>
      <portingDate>2010-10-10</portingDate>
      <prevFirstName>hallo</prevFirstName>
      <prevLastName>welt</prevLastName>
      <prevTitle>Herr</prevTitle>
      <prevNameAddHist>a</prevNameAddHist>
      <prevNameAddOpt>b</prevNameAddOpt>
      <prevNameAddPre>c</prevNameAddPre>
      <prevStreet>abc</prevStreet>
      <prevStreetNr>11</prevStreetNr>
      <prevPostalNr>22334</prevPostalNr>
      <prevCity>Hamburg</prevCity>
      <prevStreetAdd>a</prevStreetAdd>
      <prevCityAdd>b</prevCityAdd>
      <prevPostbox>c</prevPostbox>
    </soap:startPortingRequest>
  </soapenv:Body>
</soapenv:Envelope>

Antwort in soapUI
Code:
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
   <S:Body>
      <ns2:Fault xmlns:ns2="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns3="http://www.w3.org/2003/05/soap-envelope">
         <faultcode>ns2:Server</faultcode>
         <faultstring>java.lang.NullPointerException</faultstring>
         <detail>
            <ns2:exception class="java.lang.NullPointerException" note="To disable this feature, set com.sun.xml.internal.ws.fault.SOAPFaultBuilder.disableCaptureStackTrace system property to false" xmlns:ns2="http://jax-ws.dev.java.net/">
               <ns2:stackTrace>
                  <ns2:frame class="java.util.Hashtable" file="Hashtable.java" line="394" method="put"/>
                  <ns2:frame class="java.util.Properties" file="Properties.java" line="143" method="setProperty"/>
                  <ns2:frame class="de.blablub.utilities.adapters.soap.SoapDienst" line="unknown" method="startPortingRequest"/>
                  <ns2:frame class="sun.reflect.NativeMethodAccessorImpl" file="NativeMethodAccessorImpl.java" line="native" method="invoke0"/>
                  <ns2:frame class="sun.reflect.NativeMethodAccessorImpl" file="NativeMethodAccessorImpl.java" line="39" method="invoke"/>
                  <ns2:frame class="sun.reflect.DelegatingMethodAccessorImpl" file="DelegatingMethodAccessorImpl.java" line="25" method="invoke"/>
                  <ns2:frame class="java.lang.reflect.Method" file="Method.java" line="597" method="invoke"/>
                  <ns2:frame class="com.sun.xml.internal.ws.api.server.InstanceResolver$1" file="InstanceResolver.java" line="210" method="invoke"/>
                  <ns2:frame class="com.sun.xml.internal.ws.server.InvokerTube$2" file="InvokerTube.java" line="132" method="invoke"/>
                  <ns2:frame class="com.sun.xml.internal.ws.server.sei.EndpointMethodHandler" file="EndpointMethodHandler.java" line="241" method="invoke"/>
                  <ns2:frame class="com.sun.xml.internal.ws.server.sei.SEIInvokerTube" file="SEIInvokerTube.java" line="74" method="processRequest"/>
                  <ns2:frame class="com.sun.xml.internal.ws.api.pipe.Fiber" file="Fiber.java" line="581" method="__doRun"/>
                  <ns2:frame class="com.sun.xml.internal.ws.api.pipe.Fiber" file="Fiber.java" line="540" method="_doRun"/>
                  <ns2:frame class="com.sun.xml.internal.ws.api.pipe.Fiber" file="Fiber.java" line="525" method="doRun"/>
                  <ns2:frame class="com.sun.xml.internal.ws.api.pipe.Fiber" file="Fiber.java" line="422" method="runSync"/>
                  <ns2:frame class="com.sun.xml.internal.ws.server.WSEndpointImpl$2" file="WSEndpointImpl.java" line="226" method="process"/>
                  <ns2:frame class="com.sun.xml.internal.ws.transport.http.HttpAdapter$HttpToolkit" file="HttpAdapter.java" line="375" method="handle"/>
                  <ns2:frame class="com.sun.xml.internal.ws.transport.http.HttpAdapter" file="HttpAdapter.java" line="175" method="handle"/>
                  <ns2:frame class="com.sun.xml.internal.ws.transport.http.server.WSHttpHandler" file="WSHttpHandler.java" line="100" method="handleExchange"/>
                  <ns2:frame class="com.sun.xml.internal.ws.transport.http.server.WSHttpHandler" file="WSHttpHandler.java" line="77" method="handle"/>
                  <ns2:frame class="com.sun.net.httpserver.Filter$Chain" file="Filter.java" line="65" method="doFilter"/>
                  <ns2:frame class="sun.net.httpserver.AuthFilter" file="AuthFilter.java" line="65" method="doFilter"/>
                  <ns2:frame class="com.sun.net.httpserver.Filter$Chain" file="Filter.java" line="68" method="doFilter"/>
                  <ns2:frame class="sun.net.httpserver.ServerImpl$Exchange$LinkHandler" file="ServerImpl.java" line="552" method="handle"/>
                  <ns2:frame class="com.sun.net.httpserver.Filter$Chain" file="Filter.java" line="65" method="doFilter"/>
                  <ns2:frame class="sun.net.httpserver.ServerImpl$Exchange" file="ServerImpl.java" line="524" method="run"/>
                  <ns2:frame class="java.util.concurrent.ThreadPoolExecutor$Worker" file="ThreadPoolExecutor.java" line="886" method="runTask"/>
                  <ns2:frame class="java.util.concurrent.ThreadPoolExecutor$Worker" file="ThreadPoolExecutor.java" line="908" method="run"/>
                  <ns2:frame class="java.lang.Thread" file="Thread.java" line="619" method="run"/>
               </ns2:stackTrace>
            </ns2:exception>
         </detail>
      </ns2:Fault>
   </S:Body>
</S:Envelope>

Code der Webservice Klasse
Code:
@WebService
@SOAPBinding(style=SOAPBinding.Style.RPC, use=SOAPBinding.Use.LITERAL, parameterStyle=SOAPBinding.ParameterStyle.WRAPPED)
public class SoapDienst{
[...]
  @WebMethod(action="startPortingRequest")
  public void startPortingRequest(
      @WebParam(name = "customerId") String customerId, 
      @WebParam(name = "areaCode") String areaCode, 
      @WebParam(name = "nr") String nr,
      @WebParam(name = "oldProvider") String oldProvider, 
      @WebParam(name = "portingDate") Date portingDate, 
      @WebParam(name = "prevFirstName") String prevFirstName, 
      @WebParam(name = "prevLastName") String prevLastName, 
      @WebParam(name = "prevTitle") String prevTitle, 
      @WebParam(name = "prevNameAddHist") String prevNameAddHist, 
      @WebParam(name = "prevNameAddOpt") String prevNameAddOpt, 
      @WebParam(name = "prevNameAddPre") String prevNameAddPre, 
      @WebParam(name = "prevStreet") String prevStreet, 
      @WebParam(name = "prevStreetNr") String prevStreetNr, 
      @WebParam(name = "prevPostalNr") String prevPostalNr, 
      @WebParam(name = "prevCity") String prevCity, 
      @WebParam(name = "prevStreetAdd") String prevStreetAdd, 
      @WebParam(name = "prevCityAdd") String prevCityAdd, 
      @WebParam(name = "prevPostbox") String prevPostbox){
    [ausgabe der Parameter]
  }
}

Code:
	public static void main(String[] args){
                Endpoint
                    endpoint = Endpoint.create(new SoapDienst());
               
                endpoint.publish("blablub.de:9999/soap/action");
	}

Gruß Chris
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück