使用FastJson作为JAX-RS的序列化/反序列化框架
FastJson是阿里巴巴的温少开发的一个JSON的序列化和反序列化的框架。 我前面的文章: Java序列化框架性能比较中也提到, 我使用第三方的序列化测试框架jvm-serializers表明, FastJson是最快的JSON序列化框架之一, 优于Jackson。
JAX-RS是一个Java编程语言的应用程序接口,支持按照 表象化状态转变 (REST)架构风格创建Web服务Web服务. JAX-RS使用了Java SE 5引入的Java 标注来简化Web服务客户端和服务端的开发和部署。
JAX-RS的实现包括:
- Apache CXF,开源的Web服务框架。
- Jersey, 由Sun提供的JAX-RS的参考实现。
- RESTEasy,JBoss的实现。
- Restlet,由Jerome Louvel和Dave Pawson开发,是最早的REST框架,先于JAX-RS出现。
- Apache Wink,一个Apache软件基金会孵化器中的项目,其服务模块实现JAX-RS规范
如果项目中使用JAX-RS传递JSON格式的数据, 可以利用FastJson提高序列化的性能。 但是FastJson并没有提供JAX-RS的集成( Issue #65, Issue #138 )。
我实现了一个FastJson的JAX-RS集成框架: fastjson-jaxrs-json-provider,可以方便在在JAX-RS项目中使用。
前言
FastJsonProvider
is a standard entity provider that follows JAX-RS 2.0 spec.
According to different JAX-RS implementations such as CXF, Jersey, maybe you use FastJsonProvider
in appropriate styles.
FastJsonProvider
can serialize/deserialize specific types including:
- all types:
public FastJsonProvider()
(default constructor) - all type annotated with
FastJsonType
:public FastJsonProvider(boolean annotated)
- all type annotated in specific packages :
public FastJsonProvider(String[] scanpackages)
- all type annotated in specific packages with
FastJsonType
:public FastJsonProvider(String[] scanpackages, boolean annotated)
- all type in specific classes:
public FastJsonProvider(Class<?>[] clazzes)
You can init
this provider instance with a FastJsonConfig object which is used to configure FastJson features, SerializeConfig, ParserConfig and SerializeFilter. Any parameters can be null and will be default.
Maven
stable version: 0.1.0
snapshot version: 0.2.0-0.2.0-SNAPSHOT
Jersey configuration
Please check the test and maybe you need to create a FastJsonFeature to override MessageBodyReader and MessageBodyWriter.
CXF confguration
You can use JAXRSServerFactoryBean.setProviders to add a FastJsonProvider
instance.
来自:http://colobu.com/2014/09/30/using-fastjson-as-JAX-RS-data-binding/