2010-09-27 3 views
1

Я использую Axis2 написать клиент для веб-сервиса, размещенного на удаленном сервере:Axis2 исключение Клиент: java.lang.IllegalArgumentException: Null OutputStream указано

public static void getUserProfile(
     final VSIUserServiceDetailsWebService_v5R0Stub stub) { 
    try { 
     final GetUserProfileByVOLNameDocument reqDoc = 
       GetUserProfileByVOLNameDocument.Factory.newInstance(); 
     final GetUserProfileByVOLNameDocument.GetUserProfileByVOLName req = 
       reqDoc.addNewGetUserProfileByVOLName(); 
     req.setString("resc3ofw"); 

     LOG.debug("Invoking Web service..."); 
     final GetUserProfileByVOLNameResponseDocument res = 
       stub.getUserProfileByVOLName(reqDoc); 

     LOG.debug("Output: " 
       + res.getGetUserProfileByVOLNameResponse().getResult() 
       .getUserProfiles().getId()); 
    } catch (final Exception e) { 
     LOG.error("Error! : ", e); 
    } 
} 

и я получаю исключение «java.lang .IllegalArgumentException: Null OutputStream указано»Ниже приводится полный след журнала:

17: 09: 09,752 DEBUG [TestClient.getPrice(): 72] - Вызов веб-службы ... 17: 09: 09,799 DEBUG [ OutInAxisOperationClient.executeImpl(): 162] - Запись: OutInAxisOperationClient :: execute, true 17: 09: 09.799 DEBU G [Phase.invoke(): 269] - [MessageContext: logID = urn: uuid: D5D2E12E5AB334EF381285587549833] Проверка предварительного условия для фазы «OperationOutPhase» 17: 09: 09.799 DEBUG [Phase.invoke(): 282] - [MessageContext : logID = urn: uuid: D5D2E12E5AB334EF381285587549833] Вызывающая фаза «OperationOutPhase» 17: 09: 09.799 DEBUG [Phase.invoke(): 303] - [MessageContext: logID = urn: uuid: D5D2E12E5AB334EF381285587549833] Проверка пост-условий для фазы «OperationOutPhase " 17: 09: 09.799 DEBUG [Phase.invoke(): 269] - [MessageContext: logID = urn: uuid: D5D2E12E5AB334EF381285587549833] Проверка предварительного условия для фазы« RMPhase » 17: 09: 09.799 DEBUG [Phase.invoke (Phase.invoke (Phase.invoke)): 282] - [MessageContext: logID = urn: uuid: D5D2E12E5AB334EF381285587549833] Фаза вызова «RMPhase» 17: 09: 09.799 DEBUG [Phase.invoke(): 303] - [MessageContext: logID = urn: uuid: D5D2E12E5AB334EF381285587549833] Chec King post-conditions для фазы «RMPhase» 17: 09: 09.799 DEBUG [Phase.invoke(): 269] - [MessageContext: logID = urn: uuid: D5D2E12E5AB334EF381285587549833] Проверка предварительного условия для фазы «PolicyDetermination» 17:09 : 09.799 DEBUG [Phase.invoke(): 282] - [MessageContext: logID = urn: uuid: D5D2E12E5AB334EF381285587549833] Вызывающая фаза «PolicyDetermination» 17: 09: 09.799 DEBUG [Phase.invoke(): 303] - [MessageContext: logID = urn: uuid: D5D2E12E5AB334EF381285587549833] Проверка пост-условий для фазы «PolicyDetermination» 17: 09: 09.799 DEBUG [Phase.invoke(): 269] - [MessageContext: logID = urn: uuid: D5D2E12E5AB334EF381285587549833] Проверка предварительного условия фазы «MessageOut» 17: 09: 09.799 DEBUG [Phase.invoke(): 282] - [MessageContext: logID = urn: uuid: D5D2E12E5AB334EF381285587549833] Вызывающая фаза «MessageOut» 17:09:09. 799 DEBUG [Phase.invoke(): 303] - [MessageContext: logID = urn: uuid: D5D2E12E5AB334EF381285587549833] Проверка пост-условий для фазы «MessageOut» 17: 09: 09.799 DEBUG [Phase.invoke(): 269] - [ MessageContext: logID = urn: uuid: D5D2E12E5AB334EF381285587549833] Проверка предварительного условия для фазы «Безопасность» 17: 09: 09.799 DEBUG [Phase.invoke(): 282] - [MessageContext: logID = urn: uuid: D5D2E12E5AB334EF381285587549833] Вызов фазы " Безопасность " 17: 09: 09.799 DEBUG [Phase.invoke(): 303] - [MessageContext: logID = urn: uuid: D5D2E12E5AB334EF381285587549833] Проверка пост-условий для фазы« Безопасность » 17: 09: 09.846 DEBUG [SOAPMessageFormatter.getContentType(): 122] - contentType из OMOutputFormat = text/xml 17: 09: 09.846 DEBUG [SOAPMessageFormatter.getContentType(): 137] - contentType received = text/xml; charset = UTF-8 17: 09: 09.861 DEBUG [AbstractHTTPSender.getHostConfiguration(): 272] - ProxyConfiguration 17: 09: 09.892 DEBUG [Wire.wire(): 84] - >> «CONNECT wsgateway2.XXX.com: 443 HTTP/1.1 " 17: 09: 09.892 DEBUG [Wire.wire(): 70] - >>« User-Agent: Jakarta Commons-HttpClient/3.1 [\ r] [\ n] " 17: 09: 09.892 DEBUG [Wire.wire(): 70] - >> «Host: wsgateway2.XXX.com [\ r] [\ n]" 17: 09: 09.892 DEBUG [Wire.wire(): 70] - >> " Proxy-Connection: Keep-Alive [\ r] [\ n] " 17: 09: 09.892 DEBUG [Wire.wire(): 70] - >>" [\ r] [\ n] " 17:09: 09.892 DEBUG [Wire.wire(): 70] - < < «Установлено соединение HTTP/1.1 200. [\ r] [\ n]" 17: 09: 09.892 DEBUG [Wire.wire(): 70] - < < «Соединение HTTP/1.1 200 установлено неопубликованными.[\ r] [\ n] " 17: 09: 09.892 DEBUG [Wire.wire(): 70] - < <" X-Junk: xxxxxxxxxxxxxx [\ r] [\ n] " 17: 09: 09.892 DEBUG [Wire.wire(): 70] - < < "[\ r] [\ n]" 17: 09: 10.174 DEBUG [Wire.wire(): 70] - >> "POST/VSIUserServiceDetailsWebService_v5r0 HTTP/1.1 [\ r] [\ n] " 17: 09: 10.174 DEBUG [Wire.wire(): 70] - >>« Content-Type: text/xml; charset = UTF-8 [\ r] [\ n] " 17: 09: 10.174 DEBUG [Wire.wire(): 70] - >>" SOAPAction: "" [\ r] [\ n] " 17: 09: 10.174 DEBUG [Wire.wire(): 70] - >> «User-Agent: Axis2 [\ r] [\ n]" 17: 09: 10.174 DEBUG [Wire.wire(): 70] - >> «Host: wsgateway2.XXX.com [\ r] [\ n]" 17: 09: 10.174 DEBUG [Wire.wire(): 70] - >> «Передача-кодирование: chunked [\ r] [\ n] " 17: 09: 10.174 DEBUG [Wire.wire(): 70] - >>" [\ r] [\ n] " 17: 09: 10.174 DEBUG [SOAPMessageFormatter.writeTo(): 49] - запустите writeTo () 17: 09: 10,174 ОТЛАДКА [SOAPMessageFormatter.writeTo(): 50] - сохранить = ложный 17: 09: 10,174 DEBUG [SOAPMessageFormatter.writeTo(): 51] - isOptimized = ложный 17: 09: 10,174 DEBUG [SOAPMessageFormatter .writeTo(): 52] - isDoingSWA = false 17: 09: 10.189 DEBUG [St AXUtils.createXMLStreamWriter(): 251] - XMLStreamWriter - com.sun.xml.internal.stream.writers.XMLStreamWriterImpl 17: 09: 10.189 DEBUG [OMSourcedElementImpl.internalSerializeAndConsume(): 594] - serialize {http://netservices.XXX .net/vasipvsi/vsi_servicedetails_webservice} getUserProfileByVOLName к XMLStreamWriter 17: 09: 10,189 ОТЛАДКА [SOAPMessageFormatter.writeTo(): 75] - конец WriteTo() 17: 09: 10,564 ОШИБКА [TestClient.getPrice(): 80] - Ошибка ! : java.lang.IllegalArgumentException: Нуль OutputStream указано на org.apache.xmlbeans.impl.store.Cursor._save (Cursor.java:577) на org.apache.xmlbeans.impl.store.Cursor. сохранить (Cursor.java:2544) в org.apache.xmlbeans.impl.values.XmlObjectBase.save (XmlObjectBase.java:212) в net.XXX.web.wsclient.VSIUserServiceDetailsWebService_v5R0Stub $ 19.serialize (VSIUserServiceDetailsWebService_v5R0Stub.java:2735) на org.apache.axiom.om.impl.llom.OMSourcedElementImpl.internalSerializeAndConsume (OMSourcedElementImpl.java:599) на org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize (OMElementImpl.java:785) at org.apache.axiom.om.impl.llom.omelementImpl .internalSerializeAndConsume (OMElementImpl.java:814) на org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.serializeInternally (SOAPEnvelopeImpl.java:237) в org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.internalSerialize (SOAPEnvelopeImpl.java:225) at org.apache.axiom.om.impl.llom.omelementImpl.internalSerializeAndConsume (OMElementImpl.java:814) at org.apache.axiom.om.impl.llom.OMNodeImpl.serializeAndConsume (OMNodeImpl .java: 421) в org.apache.axis2.transport.http.SOAPMessageFormatter.writeTo (SOAPMessageFormatter.java:68) на org.apache.axis2.transport.http.AxisRequestEntity.writeRequest (AxisRequestEntity.java:84) at org.apache.commons.httpclient.methods.EntityEnclosingMethod.writeRequestBody (EntityEnclosingMethod.java:499) at o rg.apache.commons.httpclient.HttpMethodBase.writeRequest (HttpMethodBase.java:2114) at org.apache.commons.httpclient.HttpMethodBase.execute (HttpMethodBase.java:1096) at org.apache.commons.httpclient.HttpMethodDirector. executeWithRetry (HttpMethodDirector.java:398) на org.apache.commons.httpclient.HttpMethodDirector.executeMethod (HttpMethodDirector.java:171) на org.apache.commons.httpclient.HttpClient.executeMethod (HttpClient.java:397) на org.apache.commons.httpclient.HttpClient.executeMethod (HttpClient.java:346) at org.apache.axis2.transport.http.AbstractHTTPSender.executeMethod (AbstractHTTPSender.java:520) at org.apache.axis2.transport. http.HTTPSender.sendViaPost (HTTPSender.java:191) at org.apache.axis2.transport.http.HTTPSender.send (HTTPSender.java:77) at org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons (CommonsHTTPTransportSender.java: 327) at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke (CommonsHTTPTransportSender.java:206) at org.apache.axis2.engine.AxisEngine.send (AxisEngine.java:396) at org.apache. axis2.description.OutInAxisOperationClient.send (OutInAxisOperation.java:374) at org.apache.axis2.description.OutInAxisOperationClient.executeImpl (OutInAxisOperation.java:211) at org.apache.axis2.client.OperationClient.execute (OperationClient. java: 163) at net.XXX.web.wsclient.VSIUserServiceDetailsWebService_v5R0Stub.getUserP rofileByVOLName (VSIUserServiceDetailsWebService_v5R0Stub.java:1362) на net.XXX.web.wsclient.TestClient.getPrice (TestClient.java:74) на net.XXX.web.wsclient.TestClient.main (TestClient.java:41)

ответ

0

Я сам понял, в чем проблема.

Сначала я должен простираться

org.apache.axis2.transport.CommonsHTTPTransportSender

класса вместо реализации

org.apache.axis2.transport.TransportSender

и п обеспечивают

super.invoke

в overrridden метода Invoke, чтобы позволить супер класса для обработки потока (NULL OutputStream ошибки брошенной becuase из опущения этой линии).

0

Я столкнулся с той же ошибкой, и потребовалось несколько дней, чтобы решить проблему. Чтобы исправить эту проблему, мне пришлось использовать правильное сочетание зависимостей в моем pom.xml. Вот что я использовал, что на самом деле сработало. К сожалению, мне пришлось использовать немного более старую версию некоторых API:

<!-- SOAP client --> 
<dependency> 
    <groupId>org.apache.axis2</groupId> 
    <artifactId>axis2</artifactId> 
    <version>1.5.1</version> 
</dependency> 
<dependency> 
    <groupId>org.apache.axis2</groupId> 
    <artifactId>axis2-transport-local</artifactId> 
    <version>1.5.1</version> 
</dependency>  
<dependency> 
    <groupId>org.apache.axis2</groupId> 
    <artifactId>axis2-transport-http</artifactId> 
    <version>1.5.1</version> 
</dependency>  
<dependency> 
    <groupId>org.apache.ws.commons.axiom</groupId> 
    <artifactId>axiom-api</artifactId> 
    <version>1.2.8</version> 
</dependency> 
<dependency> 
    <groupId>org.apache.ws.commons.axiom</groupId> 
    <artifactId>axiom-impl</artifactId> 
    <version>1.2.8</version> 
</dependency> 
<dependency> 
    <groupId>axis</groupId> 
    <artifactId>axis-wsdl4j</artifactId> 
    <version>1.5.1</version> 
</dependency> 
<dependency> 
    <groupId>org.apache.xmlbeans</groupId> 
    <artifactId>xmlbeans</artifactId> 
    <version>2.3.0</version> 
</dependency> 
<dependency> 
    <groupId> org.apache.ws.commons.neethi</groupId > 
    <artifactId> neethi</artifactId > 
    <version> 2.0.1</version > 
</dependency> 
0

я получил такое же исключение при развертывании AMP в Alfresco. Код работал нормально, но не при развертывании в Alfresco. Оказывается, Alfresco уже включила собственную версию JARs Axiom. Используемая версия Alfresco составляет 1.2.5, и ее изменение до 1.2.7 решает проблему.

Смежные вопросы