2012-06-03 2 views
2

Java REST 웹 서비스 Google AppEngine을 실행하고 있습니다. 내 로컬 Google 플러그인 Eclipse 개발 서버에서 잘 실행됩니다.

com.sun.jersey.core.spi.component.ProviderFactory __getComponentProvider: The provider class, class com.sun.jersey.json.impl.provider.entity.JSONArrayProvider$General, could not be instantiated. Processing will continue but the class will not be utilized 

이 같은 문제 : 그러나,

Jersey error on Google App Engine

그것이 AppEngine에 클라우드에 배포 한 후 그러나, 나는 반복적으로 매 4 밀리 초 단위로 기록되는 다음과 같은 오류가 거기에 도착한 해결책이 나를 위해 일하지 않습니다. 해결책은 "잭슨 * .jar 라이브러리를 추가하면 문제가 사라졌습니다." 모든 잭슨 병을 $ ECLIPSE_PROJECT_HOME/war/WEB-INF/lib/jackson-all-1.9.7.jar로 추가했지만 여전히 오류가 발생합니다. 문제의 성격을 이해합니다 (Jackson이 Jersey의 제공자로 감지되지 않음). 그러나이 오류는 배포 후에 만 ​​발생한다는 점이 흥미 롭습니다.

아마도 내가 잭슨의 새로운 2.0.0 시리즈를 시도 할 것이다

...

내가 내 $의 ECLIPSE_PROJECT_HOME/전쟁/WEB-INF/web.xml 파일에 잭슨을 참조 아무것도를 추가해야합니까? 지금, 나는이 : 내가 함께하고 POJOMappingFeature 및 JacksonJsonProvider PARAMS없이 시도했습니다

<web-app 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" version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"> 
    <servlet> 
     <servlet-name>jerseywebapp</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>org.pathways.openciss.rest.impl</param-value> 
     </init-param> 
     <init-param> 
      <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name> 
      <param-value>true</param-value> 
     </init-param> 
     <init-param> 
      <param-name>com.sun.jersey.config.property.classnames</param-name> 
      <param-value>org.codehaus.jackson.jaxrs.JacksonJsonProvider</param-value> 
     </init-param> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>Jersey Web Application</servlet-name> 
     <url-pattern>/resources/*</url-pattern> 
    </servlet-mapping> 
    <servlet-mapping> 
     <servlet-name>jerseywebapp</servlet-name> 
     <url-pattern>/*</url-pattern> 
    </servlet-mapping> 
    <welcome-file-list> 
     <welcome-file>OpenCISS.html</welcome-file> 
    </welcome-file-list> 
</web-app> 

어떤 조언을 사전에 ... 아무 소용, ON과 OFF

감사를 돌렸다.

답변

4

해결되었습니다. 저지와 번들되지 않은 잭슨 도서관을 사용하고있었습니다. 나는 잭슨 라이브러리를 제거하고 단지에서 잭슨을 포함하는 뉴저지 아카이브 설치 :

http://maven.java.net/service/local/artifact/maven/redirect?r=releases&g=com.sun.jersey&a=jersey-archive&v=1.12&e=zip

... 웹 사이트를 링크 :

http://jersey.java.net/nonav/documentation/latest/chapter_deps.html

저지 아카이브 (현재 절. 1.12)는 훌륭하게 작동했습니다. /lib 폴더에 모든 병을 추가하면 다른 포스터가 본 것처럼 오류가 사라졌습니다. 내가 이해하지 않은 것은 저지 아카이브 잭슨 단지를 포함하고 있기 때문에 저지 아카이브, 뉴저지 잭슨 웹 사이트에서 병이 아니 믹스를 사용해야했다.

+0

업데이트 된 버전 (2.x의 최신 버전) : http://maven.java.net/service/local/artifact/maven/redirect?r=releases&g=com.sun.jersey&a=jersey-archive&v=1.19&e= 지퍼 –

관련 문제