域名网站搭建软件交易网
web/
2025/10/6 4:55:08/
文章来源:
域名网站搭建,软件交易网,织梦dede建站教程视频,网站整体排名大幅下降Jersey2为Jackson和JAXB提供内置支持。 但是默认情况下不支持Jibx。 要将Jibx与Jersey2结合使用#xff0c;我们将XML输入作为流#xff0c;并在接收到请求之后#xff0c;使用Jibx对其进行解析。 但是实际上#xff0c;有更好的方法可以使用MessageBodyReader和MessageBod… Jersey2为Jackson和JAXB提供内置支持。 但是默认情况下不支持Jibx。 要将Jibx与Jersey2结合使用我们将XML输入作为流并在接收到请求之后使用Jibx对其进行解析。 但是实际上有更好的方法可以使用MessageBodyReader和MessageBodyWriter API来实现相同目的。 这是可以实现的方式 为使用Jibx的XML定义新的提供程序 向Jersey ResourceConfig注册 Provider
public class JibxXmlProvider implements MessageBodyReaderObject, MessageBodyWriterObject {public boolean isReadable(Class? type, Type genericType,Annotation[] annotations, MediaType mediaType) { if(!MediaType.APPLICATION_XML_TYPE.equals(mediaType)){return false;}try {BindingDirectory.getFactory( type );} catch (JiBXException e) {return false;}return true;}public boolean isWriteable(Class? type, Type genericType,Annotation[] annotations, MediaType mediaType ) { if(!MediaType.APPLICATION_XML_TYPE.equals(mediaType)){return false;}try {BindingDirectory.getFactory( type );} catch (JiBXException e) {return false;}return true;}public Object readFrom(ClassObject type, Type genericType,Annotation[] annotations, MediaType mediaType,MultivaluedMapString, String httpHeaders, InputStream entityStream)throws IOException, WebApplicationException {try {IBindingFactory factory BindingDirectory.getFactory( type );IUnmarshallingContext context factory.createUnmarshallingContext();return context.unmarshalDocument( entityStream, null ); } catch (Exception e) {e.printStackTrace();}return null;}public void writeTo(Object obj, Class? type, Type genericType,Annotation[] annotations, MediaType mediaType,MultivaluedMapString, Object headers, OutputStream outputStream)throws IOException, WebApplicationException {try {IBindingFactory factory BindingDirectory.getFactory( type );IMarshallingContext context factory.createMarshallingContext();context.marshalDocument( obj, UTF-8, null, outputStream );}catch ( Exception e ) {e.printStackTrace();} }public long getSize(Object obj, Class? type, Type genericType,Annotation[] annotations, MediaType mediaType ) {return -1;}} 定义了此类后请按照以下步骤在Jersey上注册 public class JerseyResourceInitializer extends ResourceConfig {public JerseyResourceInitializer() {packages(true, com.adaequare.processing.service);// This line registers JibxXmlProvider as a new provider.register(JibxXmlProvider.class, MessageBodyReader.class, MessageBodyWriter.class);}} 完成此配置后每当有新请求出现时就会调用JibxXmlProvider的isReadable方法。 如果计算结果为true则将调用readFrom进行对象转换。 希望这可以帮助 翻译自: https://www.javacodegeeks.com/2014/04/jibx-jersey2-integration.html
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/87748.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!