点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
嗨,
我正在尝试集成一个外部服务,该服务公开了RESTful API,以便能够发送和接收XML数据。 为此,我正在考虑使用OCC封送和取消封送数据,但到目前为止,我仍然无法使其工作。
在OCC文档中说明了能够处理没有XML批注的Java类来执行与XML的数据转换,但是我需要使用的类是由外部服务通过XSD定义的,并且我使用了Jaxb 生成带有XML批注的Java类。
因此,当我使用从其中一个XSD生成的类处理某个请求时,例如:
@RequestMapping(value ="/",method = RequestMethod.POST)
@ResponseStatus(HttpStatus.OK)
公共无效requestHandler(@RequestBody final SomeClass someClass){
我最终遇到了这个例外:
错误[RestHandlerExceptionResolver] org.springframework.http.converter.HttpMessageConversionException:无法实例化类[de.hybris.platform.someextension.SomeClass]的JAXBContext: 嵌套的异常是javax.xml.bind.JAXBException-带有链接的异常:
[java.lang.NullPointerException]
在de.hybris.platform.webservicescommons.jaxb.Jaxb2HttpMessageConverter.getJaxbContext(Jaxb2HttpMessageConverter.java:238)[..]
我想知道是否有任何方法可以处理从XSD生成的,未使用OCC在bean XML中定义的复杂类。
谢谢
乔瓦尼
嗨,
OCC中使用的Jaxb2HttpMessageConverter设计用于POJO类。 它创建的JAXB上下文构成了类本身,并且忽略了它的所有注释。 您获得的NPE可能是由OCC生成的JAXB上下文不适合您生成和注释的类引起的。
使Jaxb2HttpMessageConverter适应您的需求可能是不可能的,但是有一种解决方法。 您需要在OCC使用的messageConvertersList中添加支持标准JAXB的自己的messageConverter。
在/ycommercewebservices/web/webroot/WEB-INF/config/v2/jaxb-converters-spring.xml中将messageConverters列表声明为messageConvertersV2。 您可以在该列表的顶部添加一个适当的bean,或为此使用addon和listMergeDirective(推荐方法)。
我会尝试使用org.springframework.http.converter.xml.MarshallingHttpMessageConverter和org.springframework.oxm.jaxb.Jaxb2Marshaller。 我从未使用过它们,但是文档看起来很有希望。 只要确保您的messageConverter只支持您生成的类,那么其余的仍将由hybris Jaxb2HttpMessageConverter处理。
一周热门 更多>