我正在运行 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
这与以下问题相同:
但是,到达那里的解决方案对我不起作用。解决方案是“添加 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 参数,但无济于事......
提前感谢您的任何建议。