3

cxf jax-rs によって残りの Web サービスを公開している Web アプリケーションがあります。私のアプリケーションコンテキストファイルには、次のようなものがあります。

    ...
<bean id="service" class="SomeClass">
    <constructor-arg index="0">
        <ref bean="bean1" />
    </constructor-arg>
    <constructor-arg index="1"
        value="some value" />

</bean>

<jaxrs:server id="restContainer" address="/">
    <jaxrs:serviceBeans>
        <ref bean="service" />
    </jaxrs:serviceBeans>
    <jaxrs:providers>
        <bean class="org.codehaus.jackson.jaxrs.JacksonJsonProvider" />
    </jaxrs:providers>
</jaxrs:server>
    ...

サービス クラスには、これら 2 つのパラメーターを受け入れてサービスを初期化するコンストラクターもあります。

アプリケーションをデプロイすると、Spring コンテキスト ローダーがサービス Bean を正しく作成し、正しいコンストラクターが呼び出されます。問題は、最初の Rest リクエストがいつサービスされるかです。Cxf Jax-rs は「デフォルト コンストラクター」によって独自のインスタンスを作成しているため、これら 2 つのプロパティが失われます。

コンストラクタ引数の代わりにプロパティ セッターを使用すると、同じことが起こります。私が cxf jax-rs を調査したとき、いくつかのプロパティを持つサービスを持っている例はありませんでした! これには理由がありますか、それとも cxf による何らかの実装上の制約ですか?

何か案は?

4

0 に答える 0