1

我有一个基于 Axis2 的旧版 Java Web 服务。该网络服务类包括:

  • 服务接口(从 WSDL 生成);
  • 服务的实施(内部编写);
  • 一堆表示请求和响应的自动生成的类实体类。

我还需要提取和缓存对 XML 的响应之一(最终作为格式良好的文档进入文件系统)。我一直在使用getOMElement()响应类上的方法进行序列化,但无济于事。反序列化看起来更容易,因为生成的类都有一个Factory静态成员,它将接收 XML 并生成对象。

如何以生成的 Axis2Factory可以随后反序列化的方式将强类型对象图的子集序列化为 XML?

ps:我被Axis2卡住了。是的,这很容易(比如)xfire ...

4

1 回答 1

1

为了完整起见,这是我最终想出的解决方案...

对象-> XML(这不好):

// in this case, response is the Axis2 generated class at the root
// of the webservice response
String xml = response.getOMElement(null, null).toString();

XML -> 对象(只是稍微不那么令人不快):

// xml is the string we created earlier
XMLStreamReader reader = XMLInputFactory
                                .newInstance()
                                .createXMLStreamReader(new StringReader(xml));

// WebserviceResponse is the class generated by Axis2        
return WebserviceResponse.Factory.parse(reader); 

这些方法都不是很好,但至少它们是功能性的(并且被严肃的单元测试所包围......)。

于 2009-10-30T12:01:58.533 回答