- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个应用程序,它是一个使用 java JWS 完成的 WS 调度程序,它可以获取 ws 请愿,选择必须调用的 ws,调用它,获取响应,解析并将其返回给客户端。
为此,我有一个 XML,其中一部分包含与我的服务相关的信息,另一部分包含必须调用的服务的特定信息,因此可能有 2 个不同的调用:
<petition>
<generic><servicename>ws1</servicename></generic>
<especific>.... whatever....</especific>
</petition>
<petition>
<generic><servicename>ws2</servicename></generic>
<especific>.... whatever needed for ws3....</especific>
</petition>
以及他们的返回;
<return>
<generic><servicename>ws1</servicename></generic>
<specific><city>bilbao</city></specific>
</return>
<return>
<generic><servicename>ws2</servicename></generic>
<specific>
<person>
<name>Olof</name>
</person>
</specific>
</return>
为此,我在模型的“特定”字段中使用了标签 @XmlAnyElement(lax=false) (在请愿书和响应中),因此,在我的服务中,我将所有调用作为“请愿书” ' 里面有一些东西(特定部分)不会被 JWS 解析;我将在使用编码器调用的每个服务的特定部分中解析它,并让他知道必须使用哪个特定模型:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {})
@XmlRootElement(name = "petition")
public class Petition{
....
@XmlAnyElement(lax=false)
private Object specific;
....
}
(Same for the response object.)
当我从调用的服务中获取对象并将其作为“特定”字段中的 ElementNSImpl 对象直接返回时,这种方法效果很好,但通常我必须解析它(通常我返回的特定对象并不相同)返回给我的对象的类型),但我无法做到这一点。
在这种情况下,我必须创建一个新对象(从我想要返回的类型),用我获得的信息填充它并将其返回给我的客户端。好吧,我这样做了,我在其中构建了一个“响应”设置,即服务的特定数据对象,并尝试返回它,但随后 WS 没有向客户端返回任何内容(长度为 0 的 200 HTTP 响应)...
此外,如果我手动将响应的“特定”部分设置为“null”,则对象会得到很好的编码,并且我的客户会收到:
<response>
<generic><servicename>ws2</servicename></generic>
</response>
所以我认为它正在等待“ElementNSImpl”,但我不知道如何从带有 JAXB 注释的对象构建它。
最佳答案
好吧,我现在还没有处于最好的状态:
ElementNSImpl 显然是 Element 的实现,因此唯一要做的就是将对象编码到元素并在“lax=false”中返回它。
这个方法可以做到:
public Element marshallToElement(Object specific, Class clazz) throws JAXBException{
DOMResult res = null;
JAXBContext ctx = JAXBContext.newInstance(clazz);
Marshaller marshaller = ctx.createMarshaller();
res = new DOMResult();
marshaller.marshal(specific, res);
return ((Document)res.getNode()).getDocumentElement();
}
这样我就可以在对不同服务的每次不同调用中调用它,并且在那里,我将知道必须使用哪个特定类。
关于Java WS : how to build a ElementNSImpl from a model object?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39719211/
我是一名优秀的程序员,十分优秀!