2011-08-15 12 views
2

RESTEASYを使用している残りのアプリケーションでCDI機能が必要です。だから私はmanual's instructionのJBoss AS7で動作する私のアプリでresteasy-cdiモジュールを設定しました。resteasy-cdi - "Duplicate context initialization parameter resteasy.injector.factory"エラーが発生する

しかし、私は、サーバーを起動したとき、私は次のエラーを取得する:

13:48:08631 ERROR [org.apache.catalina.core.StandardContext](MSCサービススレッド1-4)コンテキスト[/ MainService]スタートアップが原因以前のエラーのために失敗しました:java.lang.IllegalArgumentExceptionが:重複コンテキストの初期化パラメータ・resteasy.injector.factory

私のweb.xmlファイルは以下の通りです:私はサーバを試してみた

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
    version="2.5"> 
    <listener> 
     <listener-class>org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class> 
    </listener> 
    <servlet> 
     <servlet-name>Resteasy</servlet-name> 
     <servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class> 
    </servlet> 
    <context-param> 
     <param-name>resteasy.injector.factory</param-name> 
     <param-value>org.jboss.resteasy.cdi.CdiInjectorFactory</param-value> 
    </context-param> 
    <context-param> 
     <param-name>resteasy.scan</param-name> 
     <param-value>true</param-value> 
    </context-param> 
    <servlet-mapping> 
     <servlet-name>Resteasy</servlet-name> 
     <url-pattern>/*</url-pattern> 
    </servlet-mapping> 
</web-app> 

パラメーターの組み合わせを組み合わせて、this threadのように構成しようとしましたが、成功しませんでした。

web.xmlでjavax.ws.rs.core.Applicationを指定し、resteasy.scanを無効にしても問題は解決されませんでした。私も一緒にthis articleのような依存関係の宣言を持つとし、アーティファクトのRESTEasy-jarxsせずにテストを試してみた

<dependency> 
    <groupId>org.jboss.resteasy</groupId> 
    <artifactId>resteasy-cdi</artifactId> 
    <version>2.2.1.GA</version> 
</dependency> 

私のpom.xmlには、以下の内容があります。

私は本当に迷っています。あなたはなにか考えはありますか? JPAのEntityManagerをインジェクションで使用するには、CDIまたはEJBが必要です。私はそれがなくても使えることを知っていますが、将来的にはJTAの統合とCDIの機能を探求したいと思っています。

ありがとうございました。

答えて

2

私はRestEasy jarのバージョンと包含/除外を試してみましたが、これを解決する進歩はありませんでした。だから私は、RestEasy JBossの問題追跡ツール(https://issues.jboss.org/browse/RESTEASY-586)のバグを報告し、最終的に返事を得ることを願っています。私はJBoss AS 7と最新のRestEasyとCDIとSeamも使用しています。

7.

7

問題はそのAS7バンドルであるように私は、JBossにそれを移動したときに私のアプリケーションは、Glassfishの3.1.1で正常に働いていたが、(この「重複コンテキスト初期化パラメータresteasy.injector.factory」エラーで)壊れましたresteasy-cdiと一緒にバンドルしています。 AS7デプロイメント・スキャナは、両方のjarファイルからWebフラグメントをピックアップして処理します。resteasy.injector.factory「duplicate」エラーが発生します。 2つのオプションがあります。用意されているバージョンのresteasy(推奨)を使用するか、提供されているモジュールを削除してください。

最初のオプションでは、提供されているようにあなたの依存関係を設定し、マニフェストでの依存性を追加します。

<properties> 
    <resteasy.version>2.2.3.GA</resteasy.version> 
    <maven.war.plugin.version>2.1.1</maven.war.plugin.version> 
</properties> 

<dependency> 
    <groupId>org.jboss.resteasy</groupId> 
    <artifactId>resteasy-jaxrs</artifactId> 
    <version>${resteasy.version}</version> 
    <scope>provided</scope> 
</dependency> 
<dependency> 
    <groupId>org.jboss.resteasy</groupId> 
    <artifactId>resteasy-cdi</artifactId> 
    <version>${resteasy.version}</version> 
    <scope>provided</scope> 
</dependency> 

そして、あなたのマニフェストにRESTEasyの-CDIへの依存性を追加し、例えば:

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-war-plugin</artifactId> 
      <version>${maven.war.plugin.version}</version> 
      <configuration> 
       <failOnMissingWebXml>false</failOnMissingWebXml> 
       <archive> 
        <manifestEntries> 
         <Dependencies> 
          org.jboss.resteasy.resteasy-jaxrs, 
          org.jboss.resteasy.resteasy-cdi 
         </Dependencies> 
        </manifestEntries> 
       </archive> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 
https://github.com/jbossas/jboss-asからビルド)AS7の最新バージョンで実行するには、より多くの本のように見えるためにあなたの設定を変更してみてください

$ JBOSS_HOME/modules/org/jboss/resteasy/...を見て、お使いのAS7のバージョンで提供されているresteasyのバージョンを確認してください。

また、これらのモジュールをjbossから削除して、独自のコピーをバンドルすることもできます。

詳細については、壊れた戦争と固定戦争の例をRESTEASY-586に添付してください。

0

残りのeasy-cdiモジュールはバージョン6.0.0 M4以降J Boss ASにバンドルされています。 CdiInjectorFactoryファクトリを明示的に追加する必要はありません。

<context-param> 
<param-name>resteasy.injector.factory</param-name> 
<param-value>org.jboss.resteasy.cdi.CdiInjectorFactory</param-value> 
</context-param> 

しかし、tomcatやその他のサーバーを使用している場合は、web.xmlに上記のコード行を追加する必要があります。

関連する問題