Исключение клиента Axis2: java.lang.IllegalArgumentException: указано пустое значение OutputStream - PullRequest
1 голос
/ 27 сентября 2010

Я использую Axis2 для написания клиента для веб-службы, размещенной на удаленном сервере:

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 DEBUG [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 (): 282] - [MessageContext: logID = urn: uuid: D5D2E12E5AB334EF381285587549833] Фаза вызова «RMPhase» 17: 09: 09.799 DEBUG [Phase.invoke (): 303] - [MessageContext: logID = urn: uuid: D5D2E12E5AB334EF381285587549833] Проверка постусловий для фазы «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 = text / xml; кодировка = UTF-8 17: 09: 09.861 DEBUG [AbstractHTTPSender.getHostConfiguration (): 272] - ProxyConfiguration 17: 09: 09.892 ОТЛАДКА [Wire.wire (): 84] - >> «ПОДКЛЮЧИТЬ wsgateway2.XXX.com:443 HTTP / 1.1» 17: 09: 09.892 ОТЛАДКА [Wire.wire (): 70] - >> «Пользователь-агент: Jakarta Commons-HttpClient / 3.1 [\ r] [\ n]» 17: 09: 09.892 ОТЛАДКА [Wire.wire (): 70] - >> "Хост: wsgateway2.XXX.com [\ r] [\ n]" 17: 09: 09.892 ОТЛАДКА [Wire.wire (): 70] - >> «Proxy-Connection: Keep-Alive [\ r] [\ n]» 17: 09: 09.892 ОТЛАДКА [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 ОТЛАДКА [Wire.wire (): 70] - << "X-Junk: xxxxxxxxxxxxxx [\ r] [\ n]" 17: 09: 09.892 ОТЛАДКА [Wire.wire (): 70] - << "[\ r] [\ n]" 17: 09: 10.174 ОТЛАДКА [Wire.wire (): 70] - >> «POST / VSIUserServiceDetailsWebService_v5r0 HTTP / 1.1 [\ r] [\ n]» 17: 09: 10.174 ОТЛАДКА [Wire.wire (): 70] - >> «Тип содержимого: text / xml; charset = UTF-8 [\ r] [\ n]» 17: 09: 10.174 ОТЛАДКА [Wire.wire (): 70] - >> "SOAPAction:" "[\ r] [\ n]"17: 09: 10.174 ОТЛАДКА [Wire.wire (): 70] - >> «Агент пользователя: Axis2 [\ r] [\ n]» 17: 09: 10.174 ОТЛАДКА [Wire.wire (): 70] - >> «Хост: wsgateway2.XXX.com [\ r] [\ n]» 17: 09: 10.174 ОТЛАДКА [Wire.wire (): 70] - >> «Кодирование передачи: chunked [\ r] [\ n]» 17: 09: 10.174 ОТЛАДКА [Wire.wire (): 70] - >> "[\ r] [\ n]" 17: 09: 10.174 DEBUG [SOAPMessageFormatter.writeTo (): 49] - начать writeTo () 17: 09: 10.174 ОТЛАДКА [SOAPMessageFormatter.writeTo (): 50] - preserve = false 17: 09: 10.174 ОТЛАДКА [SOAPMessageFormatter.writeTo (): 51] - isOptimized = false 17: 09: 10.174 ОТЛАДКА [SOAPMessageFormatter.writeTo (): 52] - isDoingSWA = false 17: 09: 10.189 DEBUG [StAXUtils.createXMLStreamWriter (): 251] - XMLStreamWriter является com.sun.xml.internal.stream.writers.XMLStreamWriterImpl 17: 09: 10.189 DEBUG [OMSourcedElementImpl.internalSerializeAndConsume (): 594] - сериализовать {http://netservices.XXX.net/vasipvsi/vsi_servicedetails_webservice}getUserProfileByVOLName в XMLStreamWriter 17: 09: 10.189 DEBUG [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.save (Cursor.java:2544) в org.apache.xmlbeans.impl.values.XmlObjectBase.save (XmlObjectBase.java:212) at 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) в 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) в org.apache.axiom.om.impl.llom.OMElementImpl.internalSerializeAndConsume (OMElementImpl.java:814) в 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) в org.apache.commons.httpclient.methods.EntityEnclosingMethod.writeRequestBody (EntityEnclosingMethod.java:499) в org.apache.commons.httpclient.HttpMethodBase.writeRequest (HttpMethodBase.java:2114) в org.apache.commons.httpclient.HttpMethodBase.execute (HttpMethodBase.java:1096) в 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) в org.apache.axis2.transport.http.AbstractHTTPSender.executeMethod (AbstractHTTPSender.java:520) в org.apache.axis2.transport.http.HTTPSender.sendViaPost (HTTPSender.java:191) в org.apache.axis2.transport.http.HTTPSender.send (HTTPSender.java:77) в org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons (CommonsHTTPTransportSender.java:327) в org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke (CommonsHTTPTransportSender.java:206) в org.apache.axis2.engine.AxisEngine.send (AxisEngine.java:396) в org.apache.axis2.description.OutInAxisOperationClient.send (OutInAxisOperation.java:374) в org.apache.axis2.description.OutInAxisOperationClient.executeImpl (OutInAxisOperation.java:211) в org.apache.axis2.client.OperationClient.execute (OperationClient.java:163) at net.XXX.web.wsclient.VSIUserServiceDetailsWebService_v5R0Stub.getUserProfileByVOLName (VSIUserServiceDetailsWebService_v5R0Stub.java:1362)в net.XXX.web.wsclient.TestClient.getPrice (TestClient.java:74) в net.XXX.web.wsclient.TestClient.main (TestClient.java:41)

Ответы [ 3 ]

0 голосов
/ 22 декабря 2012

Я столкнулся с той же ошибкой, и потребовалось несколько дней, чтобы ее устранить.Чтобы решить проблему, мне пришлось использовать правильное сочетание зависимостей в моем 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 голосов
/ 10 февраля 2014

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

0 голосов
/ 01 октября 2010

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

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

org.apache.axis2.transport.CommonsHTTPTransportSender

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

org.apache.axis2.transport.TransportSender

и затем предоставьте

super.invoke

в методе переопределенного вызова, чтобы позволить суперклассу обрабатывать поток (из-за пропуска этой строки выдается ошибка Null outputtream).

...