2010-03-01 64 views
1

我正在編寫一個簡單的Web服務以返回具有2個屬性的對象。如何從軸Web服務返回複雜對象

我將該服務嵌入到現有的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/} stackTrace:org.xml.sax.SAXParseException: 文件過早結束。在 org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(未知 源)處 org.apache.xerces.impl.XMLErrorReporter.reportError org.apache.xerces.util.ErrorHandlerWrapper.fatalError(未知 源)(未知 源)在 org.apache.xerces.impl.XMLErrorReporter.reportError(未知 來源)在 org.apache.xerces.impl.XMLVersionDetector.determineDocVersion(未知 來源)在 org.apache.xerces.parsers。 XML11Configuration.parse(Unknown Source)at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)at org.apache.xerces.parsers.XMLParser.parse(未知 來源)在 org.apache.xerces.parsers.AbstractSAXParser.parse(未知 來源)在 org.apache.xerces.jaxp.SAXParserImpl $ JAXPSAXParser.parse在 org.apache在 org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)(未知 源)在 javax.xml.parsers.SAXParser.parse(SAXParser.java:395) .axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696) 在 org.apache.axis.Message.getSOAPEnvelope(Message.java:424) 在 org.apache.axis.transport.http.HTTPSender.readFromSocket(HTTPSen der.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) at 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) 在 有機.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)

任何機構可以幫助?

回答

3

我按照其他論壇提供的以下信息對此進行了排序。

如果需要返回複雜類型,我們需要使用<beanMapping/>

謝謝。

+0

你應該接受你自己的答案 – 2011-08-03 02:28:24