CXF サービスに DAO を挿入しようとしています。この目的のために、xml 構成を使用しています。
私の app-servlet.xml に、次のエントリを追加しました。
<bean id="blogService" class="blog.BlogEntriesImpl">
<property name="blogDao" ref="blogDao" />
</bean>
blogDao Bean もこのファイルで定義されています。
サービスは別の xml ファイルで構成されます。
<import resource="classpath:META-INF/cxf/cxf.xml" />
<jaxws:endpoint id="blogService" implementor="blog.BlogEntriesImpl"
address="/Blog1" />
BlogEntriesImpl は、サービス インターフェイスを実装します。dao 属性と setter メソッドがあります。
アプリケーションをデバッグしたところ、BlogEntriesImpl の 1 つのインスタンスが開始時にインスタンス化され、dao 属性を持っていることがわかりました。app-servlet.xml の Bean 構成によって行われると言えます。
ただし、サービスを呼び出すと、NullPointerException がスローされます。これは、使用されている BlogEntriesImpl の別のインスタンスです。
この問題を解決するために、サービス実装クラス (BlogEntriesImpl) の dao 属性を static として宣言しました。変数は、アプリケーションの開始時に設定されます。しかし、私はこの解決策が好きではありません。
CXF サービスに dao を挿入するより良い方法はありますか?
前もって感謝します!