2012-06-03 38 views
2

我正在运行Java REST Web服务Google AppEngine。它在我的本地Google Plugin for Eclipse开发服务器上运行良好。但是,它被部署到AppEngine上云后,我收到以下错误重复每4毫秒记录:

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

然而,解决方案抵达没有为我工作。解决方案是“添加jackson * .jar库,问题消失了。”我确实添加了所有Jackson jar作为$ ECLIPSE_PROJECT_HOME/war/WEB-INF/lib/jackson-all-1.9.7.jar,但仍然出现错误。我了解问题的本质(杰克逊并未被Jersey检测为供应商),但我觉得这个错误只会在部署后才会发生,而不是在开发阶段。

也许我会尝试新的2.0.0系列杰克逊...

我需要什么指杰克逊添加到我的$ ECLIPSE_PROJECT_HOME /战争/ WEB-INF/web.xml文件?现在,我有:

<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> 

我一直有和没有POJOMappingFeature和JacksonJsonProvider PARAMS尝试过打开和关闭,无果......

先感谢您的任何意见。

回答

4

已解决。我正在使用未与Jersey捆绑的Jackson库。我删除了杰克逊库和刚刚安装含有杰克逊的球衣档案:

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

...这是与关闭的网站:

​​

泽西归档(目前诉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=压缩 –