Как вернуть сложный объект из оси веб-сервиса - PullRequest
1 голос
/ 01 марта 2010

Я пишу простой веб-сервис для возврата объекта с 2 свойствами.

Я встраиваю службу в существующее веб-приложение.

Мой wsdd выглядит следующим образом.

<globalConfiguration>
    <parameter name="adminPassword" value="admin"/>
    <parameter name="sendXsiTypes" value="true"/>
    <parameter name="sendMultiRefs" value="true"/>
    <parameter name="sendXMLDeclaration" value="true"/>
    <parameter name="axis.sendMinimizedElements" value="true"/>

    <requestFlow>
        <handler type="java:org.apache.axis.handlers.JWSHandler">
            <parameter name="scope" value="session"/>
        </handler>
        <handler type="java:org.apache.axis.handlers.JWSHandler">
            <parameter name="scope" value="request"/>
            <parameter name="extension" value=".jwr"/>
        </handler>
    </requestFlow>
</globalConfiguration>

<handler name="LocalResponder" type="java:org.apache.axis.transport.local.LocalResponder"/>
<handler name="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper"/>
<handler name="Authenticate" type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/>

<transport name="http">
    <requestFlow>
        <handler type="URLMapper"/>
        <handler type="java:org.apache.axis.handlers.http.HTTPAuthHandler"/>
    </requestFlow>
</transport>


<transport name="local">
    <responseFlow>
        <handler type="LocalResponder"/>
    </responseFlow>
</transport>


<service name="helloService" provider="java:RPC" style="document" use="literal">
    <parameter name="className" value="ws.example.HelloService"/>
    <parameter name="allowedMethods" value="*"/>
    <parameter name="scope" value="application"/>
</service>

Я могу успешно развернуть его.

Если я пытаюсь вызвать метод, который возвращает строку, он успешно возвращает строку.

Но когда я вызываю метод, который возвращает объект, я получаю следующую ошибку.

AxisFault faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException faultSubcode: faultString: org.xml.sax.SAXParseException: Преждевременный конец файла. faultActor:
faultNode: faultDetail: {http://xml.apache.org/axis/}stackTrace:org.xml.sax.SAXParseException: Преждевременный конец файла. в org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException (Неизвестно Источник) в org.apache.xerces.util.ErrorHandlerWrapper.fatalError (Неизвестно Источник) в org.apache.xerces.impl.XMLErrorReporter.reportError (Неизвестно Источник) в org.apache.xerces.impl.XMLErrorReporter.reportError (Неизвестно Источник) в org.apache.xerces.impl.XMLVersionDetector.determineDocVersion (Неизвестно Источник) в org.apache.xerces.parsers.XML11Configuration.parse (Неизвестно Источник) в org.apache.xerces.parsers.XML11Configuration.parse (Неизвестно Источник) в org.apache.xerces.parsers.XMLParser.parse (Неизвестно Источник) в org.apache.xerces.parsers.AbstractSAXParser.parse (Неизвестно Источник) в org.apache.xerces.jaxp.SAXParserImpl $ JAXPSAXParser.parse (Неизвестно Источник) в javax.xml.parsers.SAXParser.parse (SAXParser.java:395) в org.apache.axis.encoding.DeserializationContext.parse (DeserializationContext.java:227) в org.apache.axis.SOAPPart.getAsSOAPEnvelope (SOAPPart.java:696) в org.apache.axis.Message.getSOAPEnvelope (Message.java:424) в org.apache.axis.transport.http.HTTPSender.readFromSocket (HTTPSender.java:796) в org.apache.axis.transport.http.HTTPSender.invoke (HTTPSender.java:144) в org.apache.axis.strategies.InvocationStrategy.visit (InvocationStrategy.java:32) в org.apache.axis.SimpleChain.doVisiting (SimpleChain.java:118) в org.apache.axis.SimpleChain.invoke (SimpleChain.java:83) в org.apache.axis.client.AxisClient.invoke (AxisClient.java:165) в org.apache.axis.client.Call.invokeEngine (Call.java:2765) в org.apache.axis.client.Call.invoke (Call.java:2748) в org.apache.axis.client.Call.invoke (Call.java:2424) в org.apache.axis.client.Call.invoke (Call.java:2347) в org.apache.axis.client.Call.invoke (Call.java:1804) в ws.example.ws.HelloServiceSoapBindingStub.getAwardById (HelloServiceSoapBindingStub.java:202) at Test.main (Test.java:21)

Может ли тело помочь?

1 Ответ

3 голосов
/ 19 марта 2010

Я отсортировал это по следующей информации, предоставленной на других форумах.

Нам нужно использовать <beanMapping/>, если нужно возвращать сложные типы.

Спасибо.

...