2017-02-20 45 views
0

Wildfly 10.0.0.Finalでeclipselinkが適切にサポートされていないようです。確かに、wildflyに提供されるJPAのデフォルトのhibernateですが、eclipselinkモジュールを有効にするとeclipselinkを使用することは可能です。しかし、のjarファイルの要素のpersistence.xmlは、ランタイム中にいくつかの特別なwildfly vfsのパスを処理できますが、eclipselinkは処理方法を知らないようです。Wildfly 10.0.0.Final - persistence.xml eclipselinkを使用している場合、jarファイル要素が正しくサポートされていません

私がデバッグできたことから、現在の設定が100%正しいことが確認されています。 /ランタイム

  • のWebLogic +のEclipseLinkは/のjarファイルの要素の間のパスをファイルに解決されます:実行時
  • widlfy +ドゥリン/パス構成が

    • wildfly +休止/のjarファイルの要素はVFSに解決のために働きますEclipseLinkは/動作しません - <class>要素

    を使用して立ち往生、私は問題の根本は、EclipseLinkのがwildfly特別VFS(仮想ファイルシステム)のパスに対処する準備ができていないということであると確信しています。

    eclipselinkは、hibernateと全く同じvfsパスを処理していますが、Hibernateはパスをスキャンし、エンティティクラスの検索を開始します。 - もう一方は空の手で出てきます。

    次のサンプルアプリケーションをまとめました。 https://github.com/99sono/eclipselink-wildfly-jar-file-issue

    アプリケーションは、2つの同一のパスに分岐します。 WebLogicの

    • 一つ、
    • Wildflyのために他の。

    weblogicアプリは完全に展開できます。 - それは人がそうであるかどうかに応じて、jarファイル要素の定義がどのように "不快"なのかを実証するために主に使用できます。 - Eclipseから展開する(例えば、爆発的な戦争) - WARアプリケーション。 これはweblogic eclipseのプラグインのバグにつながる可能性が高いですが、うまくいけば...うまく動作するようにすることができます。 つまり、両方のモダリティでコードをデプロイできるようにするために、私は、JEE仕様に準拠しない値../lib/entities.jarというjarファイルとして使用するように強制されました。これはapp readmeで詳しく説明しています。

    いずれにしても、Weblogicは通常のファイル:/ urlsを使用することで大きな利点があります。これはeclipselinkが完全に処理できる点です。 weblogicのこの相対パスの親フォルダの動作には、アプリケーションの展開方法に関連した回避策があります。

    2番目のアプリケーションはwildfly用です。 これは物事が厳しくなるところです。 アプリケーションをデプロイしてHibernateブートロジックまたはeclipselinkブートロジックをデバッグすると、仮想ファイルシステム(vfs)のURLが使用されていることがわかります。 上記のように、jarファイルへのvfsのURLは、hibernateとeclipselinkで同じです。

    eclipseからデプロイすると、プロジェクトが爆発します。実際の.jarファイルとして展開されるのではなく、展開されたディレクトリに展開されます。

    実際のWARファイルを展開する場合は、管理コンソールを使用してください。その代わり、パスはwildfly binディレクトリを参照します。 この場合、これらのパスは、実際のファイルシステムでは開けない100%仮想ディレクトリです。これは、jbossツールを使用してeclipseからデプロイするシナリオとは対照的です。展開されたdirecotiresへのパスは、私たちのファイルシステムで開くことができます。両方のシナリオが休止状態にしながら、その方法 来るものは何でもVFSパスのjarファイルにも対応することができるようです - - のEclipseLinkはできません:wildflyに起こるようです何

    は、ということです。

    提供されているサンプルアプリケーションのreadmeには、デプロイメントをデバッグするための良いクラスがいくつかあります。

    jclファイルをeclipselinkで動作させるための回避策はありますか?

    ecipselinkのpersistence.xmlに何か問題がありましたか?eclipselinkはjbossのvfsを処理する準備ができていますか?

    現時点では、正しく動作するのは<class>qualified</classのアプローチですが、もちろんこのアプローチは境界線では役に立たず、メンテナンス用地獄の作成に役立ちます。

    私は心からそこIトンネルの終わりに任意の光wildfly 10

    にecipselink 2.6.4で正しく動作するのjarファイルの要素を取得上の任意のヘルプを歓迎するでしょうか?

    種類について

  • 答えて

    0

    問題が修正されました。

    実際、jarファイルのプロパティはw​​ildfly 10で適切にサポートされています。 私の経験した問題は、eclipselinkモジュールの設定が旧式のwildflyドキュメンテーションに基づいて作成されたことに関連していました。ほとんどの場合、仮想ファイルシステムはまだ作成されておらず、jipijapa-eclipselink-10.0.0.Final.jarは存在しませんでした。

    私はスキャンを実施し、次の休止cllassを見たら: のjar:ファイル:/ C:/dev/Widlfly10/wildfly-10.0.0.Final/modules/system/layers/base/org/hibernate/jipijapa- hibernate5 /メイン/ jipijapa-hibernate5-10.0.0.Final.jar!/org/jboss/as/jpa/hibernate5/HibernateArchiveScanner.class

    とJBossによって所有され、この休止クラスは、次の質問をjarファイルを維持なぜ食べるリンクのような瓶ではないですか? それは本当に存在します。

    だから、VFSは、スキャンファイルのサポートは、以下の式で与えられます。

    <dependency> 
          <groupId>org.wildfly</groupId> 
          <artifactId>jipijapa-eclipselink</artifactId> 
          <version>10.0.0.Final</version> 
          <scope>provided</scope> 
    </dependency> 
    

    そして、すべての1つは、wildflyモジュール内のモジュール構成が適切である一度行う必要は、JBoss archieveを使用するのEclipseLinkを誘導することです工場:

    <property name="eclipselink.archive.factory" value="org.jipijapa.eclipselink.JBossArchiveFactoryImpl"/> 
    

    これは、内のすべての文書である: https://docs.jboss.org/author/display/WFLY10/JPA+Reference+Guide#JPAReferenceGuide-UsingEclipseLink

    関連する問題