0

所以我有一段代码在 Java 中生成一个 SOAP 服务,通过 Jython 在 Tomcat/Axis2 服务器上包装一些 Python 代码......它可以工作!

我有一个返回的方法

   public static List<MyClass> doSomething()

但从肥皂回答我只得到一些空数据:

<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
   <soapenv:Body>
      <ns:doMyServiceResponse xmlns:ns="http://mypyinterface" xmlns:ax23="http://mypyinterface/xsd">
     <ns:return xsi:type="ax23:MyClass" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
     <ns:return xsi:type="ax23:MyClass" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
     <ns:return xsi:type="ax23:MyClass" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
     <ns:return xsi:type="ax23:MyClass" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
     <ns:return xsi:type="ax23:MyClass" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
     <ns:return xsi:type="ax23:MyClass" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
     <ns:return xsi:type="ax23:MyClass" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
      </ns:doMyServiceResponse >
   </soapenv:Body>
</soapenv:Envelope>

我在网络上找到了许多关于该主题的帖子,例如 axis2 - Map 中的复杂类型如何使用Java 中的Web 服务(例如Axis2)发送复杂对象的数组或集合?很多人说不能得到List作为回报,而只能得到Array

但是,我不明白,因为我注意到上面的结果实际上是一个具有正确元素数量的空列表,如果我决定生成一个List< String >作为结果,那么我会得到正确的值(是因为我在 List 中使用了一个简单的 < String > Java 类型?)甚至没有将任何内容更改为 Array 或 ArrayList(虽然我已经读过无法生成 List)

所以我可能错过了其他东西,有什么我可能忘记的技巧吗?就像将我的 MyClass 更改为 java.io.Serilizable 或提供一些特定的方法,Axis2 可以使用这些方法在我的 XML 输出 SOAP 流中拥有/产生正确的值?

是否可以通过 Axis2 进行回复以生成列表?

4

1 回答 1

1

不,这是不可能的。您可以在此处阅读此问题的先前答案。

在你的情况下,你会像这样返回:

public static MyClass[] doSomething()

让 List.toArray() 为您施展魔法吧!

于 2013-02-21T13:24:48.700 回答