4

TomEE に (OWB を使用して) デプロイしようとすると、問題が発生します。次の例外が発生します。

javax.enterprise.inject.UnsatisfiedResolutionException: Api type [org.apache.wicket.cdi.AutoConversation] is not found with the qualifiers
Qualifiers: [@javax.enterprise.inject.Default()]
for injection into Field Injection Point, field name : autoConversation, Bean Owner : [null]  
at org.apache.webbeans.util.InjectionExceptionUtil.throwUnsatisfiedResolutionException(InjectionExceptionUtil.java:60)  
at org.apache.webbeans.container.InjectionResolver.getInjectionPointBean(InjectionResolver.java:250)
at org.apache.webbeans.inject.AbstractInjectable.inject(AbstractInjectable.java:76)
at org.apache.webbeans.inject.InjectableField.doInjection(InjectableField.java:65)
at org.apache.webbeans.portable.InjectionTargetImpl.injectFields(InjectionTargetImpl.java:372)
at org.apache.webbeans.portable.InjectionTargetImpl.inject(InjectionTargetImpl.java:358)
at org.apache.webbeans.portable.InjectionTargetImpl.inject(InjectionTargetImpl.java:342)
at org.apache.wicket.cdi.NonContextual.postConstruct(NonContextual.java:129)
at org.apache.wicket.cdi.NonContextualManager.postConstruct(NonContextualManager.java:65)
at org.apache.wicket.cdi.ConversationPropagator.(ConversationPropagator.java:122)
at org.apache.wicket.cdi.CdiConfiguration.configure(CdiConfiguration.java:188)
…

ネットで情報を探しましたが、何もないようです。クラスパスに seam-conversation-spi および seam-conversation-owb jar があるので、依存関係の問題ではありません (それらのいくつかはありましたが、それらを乗り越えました)。

他のアプリケーション サーバーに wicket-cdi を使用して EAR をデプロイするのは非常に簡単でわかりやすいことを他の人から理解しています。しかし、私は TomEE (「TomCat に基づく」コンセプト全体) が本当に好きで、切り替える必要はありません。

私はここで途方に暮れています、誰かが何が起こっているのか手がかりを持っていますか?

編集1:

これは、私のアプリケーション クラスの init メソッドの内容です。

public void init() {
  super.init();

  BeanManager manager = (BeanManager)new InitialContext().lookup(“java:comp/BeanManager”);

  new CdiConfiguration(manager).configure(this);
}

クラスには本当に何もありません。

編集2:

デプロイする EAR ファイルを作成するために使用する application.xml ファイルのコードを次に示します。

<application xmlns="http://java.sun.com/xml/ns/javaee"
             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/application_6.xsd"
             version="6">
    <initialize-in-order>true</initialize-in-order>
    <module>
        <ejb>integration.jar</ejb>
    </module>
    <module>
        <ejb>application.jar</ejb>
    </module>
    <module>
        <web>
            <web-uri>presentation.war</web-uri>
            <context-root>app</context-root>
        </web>
    </module>
</application>

編集3:

wicket-cdi と openwebbeans のコードで読んだことから、次のシナリオのいずれかである必要があると思います。

  • OWB が AutoConversation クラス (つまり wicket-cdi JAR) を見つけられない - Ant の標準タスクを使用して lib ディレクトリの WAR 内にクラスをバンドルしているため、奇妙に思えます
  • OWB は wicket-cdi JAR が bean JAR であることを認識しません - 特に cdi 仕様による要求として META-INF の下の JAR に beans.xml と MANIFEST.MF があるため、これはほとんど不可能に思えます。

まだ途方に暮れていますが、助けていただければ幸いです。

編集4:

役立つ場合に備えて、WARファイルにあるJARのリストを次に示します。

  • seam-conversation-spi-3.0.0.Final.jar
  • 速度-1.7-dep.jar
  • 速度-1.7.jar
  • wicket-auth-roles-6.15.0.jar
  • ウィケットビーン検証-6.15.0.jar
  • ウィケット-ブートストラップ-0.17.jar
  • ウィケット-cdi-6.15.0.jar
  • ウィケットコア-6.15.0.jar
  • ウィケット-datetime-6.15.0.jar
  • ウィケット-devutils-6.15.0.jar
  • ウィケット拡張機能-6.15.0.jar
  • 改札-guice-6.15.0.jar
  • ウィケット-ioc-6.15.0.jar
  • ウィケット-jmx-6.15.0.jar
  • ウィケットリクエスト-6.15.0.jar
  • 改札-春-6.15.0.jar
  • ウィケット-util-6.15.0.jar
  • 改札速度-6.15.0.jar
4

1 に答える 1

1

Wicket は、AutoConversion Bean が ConversationPropagator に注入されることを期待しています。

org.apache.wicket.cdi.ConversationPropagator のソースのフラグメントを参照してください。

@Inject
Conversation conversation_;

@Inject
AutoConversation autoConversation;

ソリューション:

  1. org.apache.wicket.cdi.AutoConversation タイプの Bean を Bean 定義に追加します。

  2. ConversationPropagator を無効にする

変更したコード、ConversationPropagator を無効にする方法を参照してください

new CdiConfiguration(manager).setPropagation(ConversationPropagation.NONE).configure(this);
于 2014-06-10T15:10:13.903 に答える