0

NHibernate.Search で問題が発生しました。突然動作が停止し、ファイルを作成したり、インデックス ファイルを読み取ったりすることができません。

Hibernate はそれを正しくロードしているようです:

2009-01-20 17:37:17,751 [1] DEBUG NHibernate.Impl.SessionFactoryImpl -
  プロパティを使用してセッション ファクトリをインスタンス化しています: {use_reflection_optimizer=True,
  hibernate.search.analyzer=Lucene.Net.Analysis.SimpleAnalyzer、Lucene.Net、
  hibernate.search.default.directory_provider=NHibernate.Search.Store.FSDirectoryProvider,
  NHibernate.Search、方言=NHibernate.Dialect.PostgreSQL82Dialect、
  connection.driver_class=NHibernate.Driver.NpgsqlDriver,
  hibernate.search.default.indexBase.create=true,
  hibernate.search.default.indexBase=c:\temp\Lucene,
  connection.provider=NHibernate.Connection.DriverConnectionProvider,
  connection.connection_string_name=開発}

しかし、その後、何も機能していないようです。ファイルは作成されず、c:\temp\Lucene も作成されません。権限を確認しましたが、問題はないようです。

これは私にとって行き止まりになっており、デバッグを進める方法についての手がかりがありません。どんなフィードバックでも大歓迎です。

さて、更新:

FullTextIndexEventListener.Initialize(NHibernate.Cfg.Configuration cfg) が呼び出されないことがわかりました。

リスナーを NHibernate 構成に追加するとトリガーされると思いましたが (NHibernate.Event.IInitializable を実装しているため)、NHibernate のソースを確認するとそうではないようです。

奇妙なことは、この手動呼び出しなしで同僚の開発マシンで動作することです。そして、同じソースと同じライブラリを実行します。

4

1 に答える 1

1

さて、どういうわけか、私のマシンはActiveRecordとNHibernateの間の初期化フェーズをスピードアップしていることがわかりました。つまり、EventListenersをNHibernate On_ApplicationStart()に登録してから、NHibernateはすでに初期化されているため、リスナーでInitialize()を呼び出すことはありません。

私の同僚のコンピューターでは、NHibernateはイベントリスナーを登録するときにまだ初期化されていないため、Initializeを呼び出します。

NHibernateに何かを登録する前にARを初期化する必要があるため、これはActiveRecordデザインの多少の欠陥です。キャッチ22のようなものです。

うまくいけば、誰かがこの情報が役立つと思うでしょう。

于 2009-01-21T14:47:41.247 に答える