如何从轴Web服务返回复杂对象

时间:2010-03-01 05:12:24

标签: java web-services axis fault

我正在编写一个简单的Web服务来返回一个包含2个属性的对象。

我正在将服务嵌入到现有的Web应用程序中。

我的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>

我能够成功部署它。

如果我尝试调用返回String的方法,它会成功返回String。

但是当我调用返回对象的方法时,我收到以下错误。

  

AxisFault faultCode:   {http://schemas.xmlsoap.org/soap/envelope/} Server.userException   faultSubcode:faultString:   org.xml.sax.SAXParseException:   文件过早结束。 faultActor:
  faultNode:faultDetail:     {http://xml.apache.org/axis/}堆栈跟踪:org.xml.sax.SAXParseException:   文件过早结束。在   org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(未知   来源)at   org.apache.xerces.util.ErrorHandlerWrapper.fatalError(未知   来源)at   org.apache.xerces.impl.XMLErrorReporter.reportError(未知   来源)at   org.apache.xerces.impl.XMLErrorReporter.reportError(未知   来源)at   org.apache.xerces.impl.XMLVersionDetector.determineDocVersion(未知   来源)at   org.apache.xerces.parsers.XML11Configuration.parse(未知   来源)at   org.apache.xerces.parsers.XML11Configuration.parse(未知   来源)at   org.apache.xerces.parsers.XMLParser.parse(未知   来源)at   org.apache.xerces.parsers.AbstractSAXParser.parse(未知   来源)at   org.apache.xerces.jaxp.SAXParserImpl $ JAXPSAXParser.parse(未知   来源)at   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)     在Test.main(Test.java:21)

任何人都可以帮忙吗?

1 个答案:

答案 0 :(得分:3)

我按照其他论坛提供的信息对此进行了排序。

如果需要返回复杂类型,我们需要使用<beanMapping/>

谢谢。