2

私は IntelliJ IDEA で単純な Maven ベースの JavaEE アプリケーションを開発していますが、明らかに開発と運用の両方に Wildfly 8 を使用したいと考えています。いくつかの RESTful Web サービスを介していくつかのエンティティを公開する必要があるだけです。これらのエンティティには双方向の関係があり、JSON にシリアル化されるときにループが発生します。

新しいバージョンの Jackson は、特別な注釈を使用してこの種の状況を処理できます。それを機能させるには、Wildfly の組み込みの JSON シリアライザー / ジャクソン プロバイダーなどを除外し、アプリケーションにバンドルされている新しいバージョンを使用する必要があります。Web で見つけた指示に従って、この jboss-deployment-structure.xml ファイルを作成しました。

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
    <deployment>
        <exclusions>
            <module name="org.codehaus.jackson.jackson-jaxrs" />
            <module name="org.codehaus.jackson.jackson-core-asl" />
            <module name="org.codehaus.jackson.jackson-mapper-asl" />
            <module name="org.codehaus.jackson.jackson-xc" />
        </exclusions>
    </deployment>
</jboss-deployment-structure>

問題は、それが機能しないことです。pom.xml を次のように設定した場合でも:

<dependencies>
    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-api</artifactId>
        <version>7.0</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>2.3.1</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-annotations</artifactId>
        <version>2.3.0</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jackson2-provider</artifactId>
        <version>3.0.6.Final</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

これは、アプリケーションに何もバンドルされていないことを明確に示していますが、org.codehaus.jackson パッケージに根ざしたこの StackOverflowError (無限ループが原因) が引き続き発生します。これは、ビルトイン バージョンの Jackson がまだ作業中であり、除外されていないことを意味します。どうすればこれを修正できますか?

前もって感謝します。

アップデート

問題はもっと大きいと思うので、タイトルを変更しました。私のやり方がひどく間違っているか、Wildfly に重大な問題があります。

すべての jackson 2 ライブラリ (com.fasterxml.jackson*) を含む pom.xml を「コンパイル」スコープで作成しました。ライブラリは、WEB-INF/lib フォルダーに含まれています。Jackson JAX-RS FAQに従って @Provider を作成しました。JAX -RS 実装 (RestEasy) によって実際に読み取られることを確認できます。 ClassNotFoundException。ただし、org.codehaus.X (Jackson 1) で無限再帰エラーが引き続き発生します。

方法はどうでもいいのですが、Wildfly でこの無限再帰を修正するソリューションが必要なだけです。

4

1 に答える 1