Metro堆栈java Web服务编写自己的序列化器/反序列化器

时间:2011-03-22 11:26:55

标签: java web-services java-metro-framework

从Web服务返回数据时,我遇到了一些问题。
我正在使用Metro堆栈。

问题:
问题是我的数据包含一些控制字符。我不想加密我的数据,因为这也将涉及客户端代码更改。
更好的方法是删除控制字符,但字符扫描和删除/ replaceAll会对性能产生一些影响。

可能的解决方案:
我想要做的是在Metro发送到客户端并检查控制字符之前拦截SOAP消息。然后在返回之前替换XML的所有控制字符。

这里有没有人知道如何在返回前拦截响应?或
我怎么能编写自己的序列化器/反序列化器来替换控制字符?

感谢。

2 个答案:

答案 0 :(得分:0)

我想您可以使用Provider界面来执行此操作。将调用您的提供程序实现而不是实际的Web服务。然后,您将解析XML并将调用转发给您的服务实现。

我发现使用起来有点麻烦,但如果有效..

答案 1 :(得分:0)

我发现XMLAdapter在我的案例中非常有用。 添加信息,以防任何好友发现它有用。
参考:http://weblogs.java.net/blog/kohsuke/archive/2005/09/using_jaxb_20s.html

XMLAdapter包含抽象方法marshal和unmarshal。所以我在marshal / unmarshal方法中使用了适当的编码器。