0

JBoss7.1 Web インターフェイスで作成した Infinispan キャッシュがあります。これは、索引付けされた分散キャッシュとして構成されます。

ファイルにjboss-deployment-structure.xml依存関係を追加したorg.infinispanのでorg.hibernate、キャッシュにアクセスできます。また、次の Maven 依存関係を追加しました。

  <dependency>
     <groupId>org.infinispan</groupId>
     <artifactId>infinispan-core</artifactId>
     <version>5.1.7.Final</version>
     <scope>provided</scope>
  </dependency>
  <dependency>
     <groupId>org.infinispan</groupId>
     <artifactId>infinispan-query</artifactId>
     <version>5.1.7.Final</version>
  </dependency>

5.1.7.Final は、私が使用している JBoss7.1.3 の org.infinispan モジュールに含まれているバージョンです。これにより、必要なすべての依存関係 (luceneおよびを含むhibernate-search-engine) が取り込まれるため、プロジェクトに必要なライブラリが含まれています。ただし、ここで説明した最初のステップを実行する場合:

  SearchManager searchManager = Search.getSearchManager( cache );

ComponentRegistryUtils.getComponent(cache, SearchFactoryIntegrator.class)スローに失敗した呼び出しIllegalArgumentException

このキャッシュではインデックス作成が有効になっていませんでした。インターフェイス org.hibernate.search.spi.SearchFactoryIntegrator がレジストリに見つかりません

cache.getCacheConfiguration().indexing().enabled()を返すとわかるように、私のキャッシュではインデックス作成が有効になっていますtrue。しかし、アプリケーションはそうではないと考えています。おそらくこれは、キャッシュがクラスComponentRegistryにアクセスできないためですorg.hibernate.search.spi.SearchFactoryIntegrator(キャッシュはJBossグローバルコンポーネントですが、休止状態の検索ライブラリはWARのWEB-INF/libディレクトリにあります)。

これを行うべき別の方法はありますか?

4

3 に答える 3

5

JBoss AS 7 には、クラスタリング サブシステムによって内部的に使用されるorg.infinispanモジュールが含まれていますが、このモジュールにはluceneおよびhibernate-search-engine の依存関係が含まれていません。

アプリケーションでこれらの依存関係を指定することにより、欠落している依存関係を (正しく) 追加していますが、モジュールアプリケーションのクラスパスから拡張ポイントをロードできないため、含まれているorg.infinispanは拡張機能を「認識」しません。

したがって、考えられる解決策は、これらの依存関係を AS7 モジュールに追加し、org.infinispan モジュールにパッチを適用して、カスタム モジュールからこれらのリソースをインポートすることです。

別の解決策は、AS に含まれるorg.infinispanモジュールに依存せず、すべてをアプリケーションに含めることです。このようにして、別のバージョン、場合によってはより新しいバージョンを使用する際の柔軟性も高まります。

于 2013-05-22T23:09:32.173 に答える
0

私は見つけました: https://community.jboss.org/message/807112#807112あなたにとっても役立つことを願っています。

于 2013-05-22T22:35:15.313 に答える