Axis2 erstellen Sie persistente Verbindung
Will ich konsumieren einen webservice aus .NET. Für die Erzeugung von mein source-code, die ich verwendet Axis2 basierend auf der WSDL des web service. Ich startete Achse ohne Optionen.
Kann ich die erste Methode des webservice. Dies ist die Authentifizierung Methode "Connect" des web-service. Danach rufe ich wieder eine neue Methode, aber der webservice zeigen, dass ich bin nicht mehr verbunden. Die Unterstützung der web-service sagte mir, dass es ist, weil ich nach Aufruf der Methode connect, die Verbindung wird geschlossen, die von java. Und das die webservice-davon ausgehen, dass ich bin getrennt und schliesse die Sitzung.
Um dieses problem zu lösen, meine successif Aufruf der beiden Verfahren sollte die Verbindung verwalten im Leben. Allerdings bin ich mir nicht sicher, dass Axis2 schlage vor, diese Funktionen, ist es wahr?
Wie kann ich halten die Verbindung zwischen den verschiedenen Aufrufe?
Hier ist mein java-code :
WinbooksWebServiceStub stub = new WinbooksWebServiceStub("http://myUrl/Service.asmx");
Connect c = new Connect();
c.setKey("KEY");
c.setUser("USER");
c.setPass("PSW");
ConnectResponse resp = stub.connect(c);
ConnectParser connecterParser = new ConnectParser();//works and return the Token
HelloWorld h = new HelloWorld();
HelloWorldResponse Hresp = stub.helloWorld(h); //the result tell me that I'm not connected
Wenn ich der Antwort, die ich gelten-Methode auf meine stub-Objekt, bekam ich diese Fehlermeldung Exception in thread "main"
org.apache.axis2.AxisFault: Attempted read on closed stream.
at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430)
at org.apache.axis2.builder.SOAPBuilder.processDocument(SOAPBuilder.java:64)
at org.apache.axis2.transport.TransportUtils.createDocumentElement(TransportUtils.java:179)
at org.apache.axis2.transport.TransportUtils.createSOAPMessage(TransportUtils.java:145)
at org.apache.axis2.transport.TransportUtils.createSOAPMessage(TransportUtils.java:108)
at org.apache.axis2.transport.TransportUtils.createSOAPMessage(TransportUtils.java:67)
at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:354)
at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:421)
at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
at com.logidrive.ws.WinbooksWebServiceStub.connect(WinbooksWebServiceStub.java:4251)
at Main.main(Main.java:44) Caused by: java.io.IOException: Attempted read on closed stream.
at org.apache.commons.httpclient.AutoCloseInputStream.isReadAllowed(AutoCloseInputStream.java:183)
at org.apache.commons.httpclient.AutoCloseInputStream.read(AutoCloseInputStream.java:107)
at java.io.FilterInputStream.read(FilterInputStream.java:116)
at org.apache.axiom.om.util.DetachableInputStream.read(DetachableInputStream.java:147)
at java.io.FilterInputStream.read(FilterInputStream.java:116)
at java.io.PushbackInputStream.read(PushbackInputStream.java:169)
at org.apache.axis2.builder.BuilderUtil.getCharSetEncoding(BuilderUtil.java:294)
at org.apache.axis2.builder.SOAPBuilder.processDocument(SOAPBuilder.java:51)
InformationsquelleAutor user1636532 | 2012-08-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie zwei Fragen Los. Ich bin mir nicht sicher, warum Ihr nicht verbunden, aber Sie können eine http-Verbindung pool für hochvolumige Anforderungen.
Hier ist ein blog, der darüber berichtet, wie zu tun, dass Axis2 Blog
Auch, Hier ist ein code für das setup von Hier
BEARBEITEN den code Aktualisieren
Ich wusste gar nicht gehen lassen, wie es mich stört wurde. Um die Verbindung erneut verwenden, rufen Sie dieses vor dem Aufruf anschließen, wie es auf dem socket zu öffnen. Ich hatte ein Problem mit dem pool, setup, ich werde es auf Arbeit... stub._getServiceClient().getOptions().setProperty(org.apache.axis2.transport.http.HTTPConstants.REUSE_HTTP_CLIENT, new Boolean(true));
Bearbeitet den code. Jetzt sollte es funktionieren. Nur denken Sie daran, die Kontext-Eigenschaften vor dem Aufruf jeder Routine. Auch, dass über einen liner in den Kommentaren geben Sie zwei verbindungen standardmäßig.
InformationsquelleAutor Mike