problem mit großem SOAP Response

malt1981

Mitglied
Hallo zusammen,
ich habe ein Problem mit einem SOAP Aufruf. Der untenstehende Code funktioniert zwar grundsätzlich, leider aber nicht bei einer größeren Datenmenge die zurück kommt. Der Soap Service auf der Gegenseite liefert einen sehr einfachen Body zurück, mit einem xml in einem cdata Feld. Ist das xml im cdata überschaubar (2-3mb) funktioniert es, ist das cdata Feld jedoch sehr groß (ca. 17 mb) kommt das Programm nicht zum Ende. Prozessorauslastung bei 35% Arbeitsspeicher füllt sich sehr langsam ... nach mehreren Minuten läuft das Ganze immer noch. Sprich: im untenstehenden Code kommt noch "Response bekommen", das System.out.println kommt nicht mehr. Die Console schweigt - keine Fehlermeldung... Programm läuft in Eclipse. Kann mir hier jemand einen Tipp geben?

Java:
// SOAPConnectionFactory
        SOAPConnectionFactory soapConnectionFactory = null;
        try {
            soapConnectionFactory = SOAPConnectionFactory.newInstance();
        } catch (UnsupportedOperationException e1) {
            services.Log.log("e", e1.toString());
            e1.printStackTrace();
        } catch (SOAPException e1) {
            services.Log.log("e", e1.toString());
            e1.printStackTrace();
        }
        
        // SOAPConnection
        SOAPConnection soapConnection = null;
        try {
            soapConnection = soapConnectionFactory.createConnection();
        } catch (SOAPException e1) {
            services.Log.log("e", e1.toString());
            e1.printStackTrace();
        }         

        
        try {
            
            // Massage Facotory
            MessageFactory messageFactory = MessageFactory.newInstance();
            
            // SOAP Message
            SOAPMessage soapMessage = messageFactory.createMessage();

            // SOAP Part           
            SOAPPart soapPart = soapMessage.getSOAPPart();

            String myNamespace = "xx";
            String myNamespaceURI = "xx";

            // SOAP Envelope
            SOAPEnvelope envelope = soapPart.getEnvelope();
            envelope.addNamespaceDeclaration(myNamespace, myNamespaceURI);

            // SOAP Body
            SOAPBody soapBody = envelope.getBody();
            SOAPElement soapBodyElem = soapBody.addChildElement("xxx", myNamespace);
            
            SOAPElement soapBodyElem1 = soapBodyElem.addChildElement("xxx");
            soapBodyElem1.addTextNode(xxx);
            
            SOAPElement soapBodyElem2 = soapBodyElem.addChildElement("xxx");
            soapBodyElem2.addTextNode(xxx);           
            
                  
            // Soap Header
            MimeHeaders headers = soapMessage.getMimeHeaders();
            headers.addHeader("SOAPAction", "xxx");

            // Soap Message speichern
            soapMessage.saveChanges();
            
            String webServiceUrl = main.SmallJobs.webServiceUrl + "xxx";
            SOAPMessage soapResponse = soapConnection.call(soapMessage, webServiceUrl);
            
            log("Response bekommen... ");
          
            System.out.println("Kontent" + soapResponse.getSOAPBody().getTextContent());
 

malt1981

Mitglied
Nachtrag: Klappt, wenn ich den Response in einen String schreibe über einen ByteArrayOutputStream.
Ist aber sicher nicht die feine Art. Also wenn jemand einen bessren Tipp hat, immer noch gerne.
 

mrBrown

Super-Moderator
Mitarbeiter
ich habe ein Problem mit einem SOAP Aufruf.
Also in Kurz: du hast einen SOAP Aufruf? :)

nach mehreren Minuten läuft das Ganze immer noch. Sprich: im untenstehenden Code kommt noch "Response bekommen", das System.out.println kommt nicht mehr. Die Console schweigt - keine Fehlermeldung... Programm läuft in Eclipse. Kann mir hier jemand einen Tipp geben?
Gibt ja nur zwei Möglichkeiten: entweder es läuft ewi lange, oder es gibt eine Exception, die irgendwo veschluckt wird.

Ein try ist ja schon drum, das catch ist allerdigs nicht zu sehen, dort steht was sinnvolles drin?
Testweise kannst du dort einfach mal alles fangen (also auch Errors), und die Loggen lassen, zur Not auch einfach im finally-Block.

Wenn es einfach nur lange läuft kannst du den Debugger anwerfen und mal gucken oder einfach einen Threaddump machen, und dort mal genau gucken, wo es hängt.


BTW: das Exceptionhandling, was man dort sieht, ist quasi nicht existent und in der Form nicht wirklich sinnvoll – wenn irgendein Fehler fliegt, fliegt danach eine NPE.
 

malt1981

Mitglied
ok, vielen Dank. Exceptionhandling habe ich angepasst. Leider immer noch keine Fehlermeldung, nur eben unglaublich lange Rechenzeit. Ich versuche jetzt mal wie vorgeschlagen dem Threaddump etwas zu entlocken.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Problem beim Aufruf meines Webservices SOA 0
F Client Problem gegen Webservice SOA 3
D Problem CXF und Tomcat 6 SOA 2
N JAX-WS Client Timeout Problem SOA 4
C Problem mit digitalen Signaturen auf Web Service Seite SOA 3
T Axis2 Problem: leeres Array? SOA 1
S Axis2 MustUnderstand problem mit Boolean SOA 9
C Problem mit Java Webservice - SOAPBinding.Style - Wrapper class fehlt SOA 1
F nach wsimport neues problem -> nicht gefundener import SOA 3
G Problem bei Zugriff auf .Net Web Service SOA 3
L WebService TestClient Problem SOA 2
J Behörden Soap service konsumieren SOA 4
pkm Struktur einer SOAP-Anwendung SOA 28
N SOAP-Nachrichten verschlüsseln | jax-ws SOA 0
S Soap Request absenden - Anfängerfrage SOA 0
I SOAP Webservice Methoden und Parameter auslesen SOA 3
D [SOAP] wsdl & maven & java 1.8 SOA 6
P SOAP Webservice mit HTTP Basic Authentifizierung SOA 1
E SOAP-Endpunkt per Eclipse-Wizard erstellt, wie nun mit Auth schützen? SOA 2
M Kann man das Protokoll eines REST (Jersey) bzw. SOAP Web Services manipulieren? SOA 5
G SOAP Response "faken" SOA 8
D SOAP Webservice (SAP) SOA 3
K Flex-Ablöse - Was mit den SOAP-Services tun? SOA 5
G Soap, http SOA 3
A Soap with Attachments - Unmarshalling Error SOA 4
K Axis2 SOAP Logging via Client SOA 2
E mit Apache SOAP verschachtelte XML-Tags generieren SOA 2
F XML per SOAP übermitteln SOA 2
H SOAP und Synonym-Wortschatz Leipzig SOA 4
V SOAP over JMS - wie funktionierts? SOA 3
C Undefinierte Zeichenketten in SOAP Nachricht SOA 4
E Lesen der kompletten SOAP als WebService Provider/Server SOA 4
R SOAP Nachrichtenaustausch zwischen Axis2-WSs SOA 5
R Webservice aufrufen mit SOAP Style.DOCUMENT ? SOA 5
I SOAP WSDL und UDDI SOA 12
G --> SOAP zwischen Intranet und Internet SOA 3
K Mappen von Objektmethoden bei SOAP SOA 7

Ähnliche Java Themen

Neue Themen


Oben