gpt4 book ai didi

java - 将 Spring-ws webservicetemplate 请求以 XML 格式保存到 DB

转载 作者:行者123 更新时间:2023-11-30 03:39:22 24 4
gpt4 key购买 nike

我正在尝试将 Spring-ws Webservice 模板请求保存到数据库,以便我可以在相应站点启动时重新提交相同的 Webservice 请求。

我的配置如下

<bean id="serviceMarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name="contextPaths">
<list>
<value>com.XXX.XXX.ws.XXX.submitorder</value>
</list>
</property>
</bean>

我有一个 XXXIntegrationClientImpl.java

private static final ObjectFactory  XXX_INTEGRATION_LOOKUP_FACTORY  = new ObjectFactory();
com.XXX.XXX.ws.XXX.submitorder.PlaceExternalSystemOrder request = XXX_INTEGRATION_LOOKUP_FACTORY.createPlaceExternalSystemOrder();
// populate the request with all required values

PlaceExternalSystemOrder的部分源码

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {"orderInfo"})
@XmlRootElement(name = "PlaceExternalSystemOrder")
public class PlaceExternalSystemOrder {...}

我无法修改上面的内容,因为它不属于我们。

下面的代码不起作用

JAXBContext context = JAXBContext.newInstance(com.XXX.XXX.ws.XXX.ticketinfo.PlaceExternalSystemOrderResult.class);
Marshaller m = context.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
StringWriter stringWriter = new StringWriter();
m.marshal(request, stringWriter);

只是想知道上面获取请求 XML 的等效内容是什么,以便我可以重新提交请求

最佳答案

事实证明这是一个简单的解决方案,遗憾的是之前找不到它。

关键是使用 Inject 配置的 Jaxb2Marshaller!

@Autowired
private Jaxb2Marshaller serviceMarshaller;

javax.xml.transform.stream.StreamResult result = new StreamResult(new StringWriter());
serviceMarshaller.marshal(request, result);
String xml = result.getWriter().toString();

关于java - 将 Spring-ws webservicetemplate 请求以 XML 格式保存到 DB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27132008/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com