2017-01-19 21 views
0

使用@WebService@WebMethod定义的JAX-WS服务利用JAXB将XML转换为Java对象。对于大多数用例来说,这太棒了!然而,我需要与一些使用Axis 1编写的遗留代码进行接口,这些代码专门在org.w3c.dom.Element对象上运行 - 换句话说,只要我获得它们,我就会有效地将参数直接转换回XML,这似乎非常低效。是否可以在不使用@WebServiceProvider的情况下访问JAX-WS中的原始请求XML?

因此,我一直在寻找一种方法来接收和返回来自JAX-WS服务的原始XML,不管是字符串还是对象。

我已经能够得到我所需要使用@WebServiceProvider贯彻Provider<Source>接口的功能,但这种感觉有点太低级了那种我正在做的事情 - 我不能使用@WebMethod来轻松设置路由;相反,我必须从WebServiceContext得到PATH_INFO,并摆弄字符串以获取我需要的信息。

所以我的问题是,有没有办法在JAX-WS服务中使用原始XML(有效切除JAXB)而不降低到@WebServiceProvider的水平?

回答

0

我只是碰到我自己的答案迷迷糊糊的,所以这里是为别人谁拥有这个问题:

正如documentation提到,JAXB可以名帅xsd:anyTypeObject。生成的对象的具体类型是apache.xerces.internal.dom.ElementNSImpl,这是org.w3c.dom.Element的实现 - 也就是我所需要的!

因此,我的问题的解决方案只是使用Object作为我的方法中的参数和返回类型。不是一个大规模清洁的感觉解决方案,但它的工作。

相关问题