2012-03-17 3 views
0

저지와 함께, 현재 gson 라이브러리를 사용하여 나의 pojo를 json으로 앞뒤로 변환합니다. 그러나 저는 Jackson이 훨씬 더 빠르다는 것을 발견했습니다. 그래서 우리는 이것을 전환하고 있습니다.jersey jackson 같은 유형의 여러 제공자

나는 이미 Gson 사용자 지정 공급자 및 판독기가 있으며, 이제 Jackson 용 (수정 된) 버전을 만들 것입니다.

하지만 개발할 때 교환 할 수 있다면 좋겠지 만 가능합니까? 내가 json 공급자를 @produces 및 @consumes로 표시했기 때문에 Jersey가 두 공급자가있는 경우 사용할 저널을 생각할 수 없다고 생각합니다.이 경우 각각 동일한 유형 (위의 경우 APPLICATION_JSON)에 위의 주석을 사용합니다.

여러 Json 공급자를 지정한 다음 일부 구성 파일 (web.xml ??)에서이를 바꿀 수 있습니까?

Json Wrapper 객체를 만든 경우 인터페이스에 코드를 작성하고 스프링을 사용하여 구현을 쉽게 바꿀 수 있습니다 (jackson imp 대 gson imp).하지만 Jax RS 방식을 사용하지 않을 것입니다. 또한 공급자가 내게 암시 적으로 변환하도록 허용하지 않고 모든 GET에 대해 String을 반환해야합니다.

의견이 있으십니까?

감사

+0

어떤 Gson 버전을 사용하고 있었습니까? Gson 2.1은 일부 문서의 경우 Jackson보다 빠릅니다. –

+0

Gson 1.7.1을 사용하고 있습니다. 나는 2.1이 성능면에서 개선되었음을 몰랐다. 나는 한 번 봐야한다. – user983022

답변

4

당신이 ResourceConfig (또는 JAX-RS 응용 프로그램)의 자신의 서브 클래스를 작성하는 경우, 그것은) (방법이라는 getClasses있다 - 당신은 자원 및 공급자 클래스의 설정 반환해야 곳이다 그 응용 프로그램 사용 . 이제 미리 패키징 된 ResourceConfig 중 일부를 사용하고있는 것 같습니다. Jersey에는 클래스 경로 검색을 수행하는 ResourceConfig가 있습니다 (즉,이 구성을 기본 구성으로 설정했거나 구성하지 않은 경우). 전체 클래스 경로에서 리소스 클래스를 검색합니다). 패키지 스캐닝이 가능한 패키지가 있습니다. Jersey 서블릿 등의 init 매개 변수에 나열한 패키지 만 검사합니다.

실제로 패키지를 검사하는 것이 가장 적합 할 수 있습니다. 각 JSON 공급자를 다른 패키지에 넣은 다음 web.xml에서 어떤 패키지가 리소스와 공급자를 검색하도록 구성했는지 확인하십시오.

<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 
    <servlet> 
     <servlet-name>Jersey Web Application</servlet-name> 
     <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> 
     <init-param> 
      <param-name>com.sun.jersey.config.property.packages</param-name> 
      <param-value>com.mycompany.resources,com.mycompany.providers.gson</param-value> 
     </init-param> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>Jersey Web Application</servlet-name> 
     <url-pattern>/webresources/*</url-pattern> 
    </servlet-mapping> 
</web-app> 
+0

Martin에 감사드립니다. 귀하의 의견은 유용한 통찰력을 제공합니다. – user983022

2

가 다수 등록 업체와 같은 문제가 있었다 : 여기 com.mycompany.resource 및 com.mycompany.providers.gson 패키지 자원과 공급 업체를 찾기 위해 저지를 구성 web.xml 파일의 예입니다 그러나 아무도 사용하지 않았다. 예를 들어 사용자에게 제공 할 공급자를 결정하는 데 도움이되는 초기화 매개 변수를 추가하십시오.

<init-param> 
    <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name> 
    <param-value>true</param-value> 
</init-param> 
관련 문제