6

Jboss 7.1.1 にデプロイしたい残りの Web アプリケーションが 2 つあります。サーバ。

両方のアプリの REST リクエストは、Json を生成および消費します。オブジェクトのシリアル化と逆シリアル化には jackson プロバイダーを使用します。

ここで、Web アプリケーションごとにカスタム ObjectMapper 構成が必要です。この問題を解決するために、ContextResolver を実装する @Provider クラスを追加しました。プロジェクトごとに 1 つ。フェ。私のクラスの1つは次のようになります。

@provider
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public class JacksonConfig implements ContextResolver<ObjectMapper> {
   private final ObjectMapper objectMapper;
   public JacksonConfig()
   {
       objectMapper = new ObjectMapper();
       objectMapper.configure(SerializationConfig.Feature.WRAP_ROOT_VALUE, true);
   }
   @Override
   public ObjectMapper getContext(Class<?> objectType) {
       return objectMapper;
   }
}

このプロジェクトの 1 つだけを jboss にデプロイするとうまくいきます。両方をデプロイしようとすると、最初に初期化されたプロジェクトのみが定義済みの objectMapper を使用します。もう 1 つは、ContextResolver クラスから getContext メソッドを呼び出すことはありません。何が間違っている可能性がありますか?

編集!:

多くの試行錯誤の後、json の解析方法を jackson から staxon に変更することにしました。少なくともこの方法がうまくいくことを願っています。しかし、そうではありません...シリアライゼーションは、デプロイされた両方のアプリケーションで完全に機能します。しかし、やはり jboss は逆シリアル化プロセスで staxon の代わりに jackson を使用することにしました。繰り返しますが、展開後に最初に呼び出すアプリケーションは常に正常に機能します。しかし、例外を呼び出すジャクソン(理由はわかりません...)を使用する2番目のもの。いつも...

Jbossに問題はありますか?おそらく私は何か間違ったことをしているだけですが、どこにあるのかわかりません。誰が私がどこを見ればよいか考えていますか?

4

1 に答える 1

5

Looks like I found solution for this problem. It was known issue of resteasy, that can be removed by build-in option:

To solve this problem I just had to add param to web.xml of my projects:

<context-param>
    <param-name>resteasy.use.deployment.sensitive.factory</param-name>
    <param-value>false</param-value>
</context-param>

I found this solution in Resteasy jira. It's really strange for me that there is no info in any jboss or resteasy related documentation...

于 2013-02-27T08:33:56.920 に答える