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

これは、次と同じ問題です。

Google App Engine のジャージー エラー

しかし、そこにたどり着いた解決策は私にとってはうまくいきません。解決策は、「jackson*.jar ライブラリを追加することで問題が解決した」ことでした。すべての Jackson jar を $ECLIPSE_PROJECT_HOME/war/WEB-INF/lib/jackson-all-1.9.7.jar として追加しましたが、それでもエラーが発生します。私は問題の性質を理解しています (Jersey によって Jackson がプロバイダーとして検出されていません) が、興味深いことに、このエラーは開発中ではなくデプロイ後にのみ発生します。

たぶん、Jackson の新しい 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

ジャージーアーカイブ(現在v。1.12)はうまく機能しました。そのフォルダにすべてのjarファイルを追加する/libと、他の投稿者が見たように、エラーはなくなりました。私が理解していなかったのは、ジャージーのアーカイブにはジャクソンのjarが含まれているため、ジャージーとジャクソンのWebサイトのjarを組み合わせて使用​​するのではなく、ジャージーのアーカイブのみを使用する必要があるということでした。

于 2012-06-03T13:23:48.710 に答える