Исключение клиента Axis2: java.lang.IllegalArgumentException: указан Null OutputStream

Я использую 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». Ниже приведена полная трассировка журнала:

Я сам разобрался, в чем дело.


person KrishPrabakar    schedule 27.09.2010    source источник


Ответы (3)


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

org.apache.axis2.transport.CommonsHTTPTransportSender

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

org.apache.axis2.transport.TransportSender

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

super.invoke

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

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

person KrishPrabakar    schedule 01.10.2010

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

<!-- 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>
person Ross H Mills III    schedule 21.12.2012

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: D5D2E12E5AB334EF3812E5AB334EF381285587549833] Призывающая фаза «ЭксплуатацияФаза» 17: 09: 09.799 Отладка [Phase.invoke (): 303] - [MessageContext: logid = urn: uuid: d5d2e12e5Ab334ef381285587549833] Проверка потенциальных условий для фазы "ЭксплуатацияФаза" 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] Проверка фазы "Policy PreDetermination" :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:D5D2E12E5AB334EF3812853375 для проверки предварительной обработки4 "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:0 9: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:D5D2E12E5AB334EF381285387549 для фазы проверки "post-conditions" Безопасность» 17:09:09.846 ОТЛАДКА [SOAPMessageFormatter.getContentType():122] — тип содержимого из OMOutputFormat =text/xml 17:09:09. 846 DEBUG [SOAPMessageFormatter.getContentType():137] — тип содержимого возвращен = text/xml; charset=UTF-8 17:09:09.861 ОТЛАДКА [AbstractHTTPSender.getHostConfiguration():272] - ProxyConfiguration 17:09:09.892 ОТЛАДКА [Wire.wire():84] - >> "ПОДКЛЮЧИТЬ 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] - >> "Хост: wsgateway2.XXX.com[\r][\n]" 17:09:09.892 DEBUG [Wire.wire():70] - >> "Прокси-соединение: сохранить -Alive[\r][\n]" 17:09:09.892 ОТЛАДКА [Wire.wire():70] - >> "[\r][\n]" 17:09:09.892 ОТЛАДКА [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] - >> "Тип содержимого: текст/xml; charset=UTF-8[\r][\n]" 17:09:10.174 ОТЛАДКА [Wire.wire():70] - >> "SOAPAction: ""[\r][\n]" 17:09:10.174 DEBUG [Wire.wire():70] - >> "User-Agent: Axis2 [\r][\n]" 17:09:10.174 ОТЛАДКА [Wire.wire():70] - >> "Хост: wsgateway2.XXX.com[\r][\n]" 17:09:10.174 ОТЛАДКА [Wire.wire():70] - >> "Кодирование передачи: фрагментация[\r][\n]" 17:09:10.174 DEBUG [Wire.wire():70] - >> "[\r] [\n]" 17:09:10.174 ОТЛАДКА [SOAPMessageFormatter.writeTo():49] - запуск writeTo() 17:09:10.174 ОТЛАДКА [SOAPMessageFormatter.writeTo():50] - save=false 17:09:10.174 ОТЛАДКА [SOAPMessageFormatter.writeTo():51] - isOptimized=false 17:09:10.174 DEBUG [SOAPMessageFormatter.writeTo():52] - isDoingSWA=false 17:09:10.189 DEBUG [StAXUtils.createXMLStreamWriter():251] - XMLStreamWriter is 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 ОТЛАДКА [SOAPMessageFormatter.wri teTo():75] - конец writeTo() 17:09:10.564 ERROR [TestClient.getPrice():80] - Ошибка! : java.lang.IllegalArgumentException: указан Null 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) в сети. XXX.web.wsclient.VSIUserServiceDetailsWebService_v5R0Stub$19.serialize(VSIUserServiceDetailsWebService_v5R0Stub.java:2735) в org.apache.axiom.om.impl.llom.OMSourcedElementImpl.internalSerializeAndConsume(OMSourcedElementImpl.java:599) в org.apache.impl.ompl.om.om. .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 , :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.CommonsHTTPran sportSender.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) в сети.XXX.web.wsclient.VSIUserServiceDetailsWebService_v5R0Stub.getUserProfileByVOLName(VSIUserServiceDetailsWebService_v5R0Stub.java:1362) в сети.XXX.web.wsclient.TestClient.getPrice(TestClient.java:74) в сети .XXX.web.wsclient.TestClient.main(TestClient.java:41)

person fimez    schedule 10.02.2014