我正在做一项任务,我必须使用apache轴(使用eclips Mars)使用Web服务来创建Java桌面应用程序。它必须使用我已经创建的现有动态Web项目。 Web项目是在Web界面中的(Oracle)数据库中添加/删除公司和员工详细信息。它按要求运作。但是当创建Web服务时,它不允许我创建Web客户端。它给出了这个错误:
IWAB0399E Error in generating Java from WSDL:
java.io.IOException: ERROR: Missing <soap:fault> element inFault "IOException"
in operation "IOException", in binding getCompanies
显然,它不允许我从我创建的方法中返回HashMap
。 (当我在没有返回Hashmaps的情况下改变整个项目时,我可以创建客户端)但是我需要获得HashMaps。
有没有办法从我创建的网络服务中获取HashMap
???
我在SO中审核了This question。但我不知道接受的答案是什么。
修改
行。现在我知道我不能在Web服务中使用HashMaps,因为它们不能编组和解组。然后我找到了我试过的This question。但问题仍然存在。 (我想我没有正确使用上面提到的答案。)作为这个领域的初学者,我实际上没有得到如何包装(或序列化)Hashmap并将其检索回来。有人可以举个例子吗?
答案 0 :(得分:1)
您可以尝试将HashMap包装在一个类中,并使用@XmlJavaTypeAdapter
创建一个自定义适配器,以允许JAXB正确地进行对象序列化。
public class Response {
@XmlJavaTypeAdapter(MapAdapter.class)
HashMap<Integer, Student> students;
public HashMap<Integer, Student> getStudents() {
return students;
}
public void setStudents(HashMap<Integer, Student> map) {
this.students = map;
}
}
然后只使用此类作为Web方法的返回值。
查看更多内容: