2

我正在运行 Java REST Web 服务 Google AppEngine。它在我的本地 Google Plugin for Eclipse 开发服务器上运行良好。但是,在将其部署到 AppEngine Cloud 后,我收到以下错误,每 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

这与以下问题相同:

Google App Engine 上的泽西岛错误

但是,到达那里的解决方案对我不起作用。解决方案是“添加 jackson*.jar 库,问题就消失了。” 我确实将所有杰克逊罐子添加为 $ECLIPSE_PROJECT_HOME/war/WEB-INF/lib/jackson-all-1.9.7.jar ,但我仍然收到错误消息。我了解问题的性质(Jackson 没有被 Jersey 检测为提供者),但我发现有趣的是,此错误仅在部署后发生,而不是在开发中发生。

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

我是否需要在我的 $ECLIPSE_PROJECT_HOME/war/WEB-INF/web.xml 文件中添加任何提及 Jackson 的内容?现在,我有:

<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 参数,但无济于事......

提前感谢您的任何建议。

4

1 回答 1

4

解决了。我使用的是未与 Jersey 捆绑的 Jackson 库。我删除了 Jackson 库,并从以下位置安装了包含 Jackson 的 Jersey 档案:

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

Jersey 存档(当前版本为 1.12)效果很好。一旦我在它的文件夹中添加了所有的罐子/lib,错误就消失了,正如另一张海报所看到的那样。我不明白的是应该使用泽西档案,而不是泽西和杰克逊网站的罐子混合,因为泽西档案包含杰克逊罐。

于 2012-06-03T13:23:48.710 回答