0

私が使用しているアプリケーションには、CXF ベースのバンドルに REST 呼び出しを発行する JavaScript ベースのクライアントを備えた Web アプリケーション バンドルがあります。後者はブループリントを使用して、サービス レイヤー バンドルによって公開されるサービスに接続します。メイン WAB は、Spring の DelegatingFilterProxy を通じて Spring Security を使用します。

目標は、CXF ベースのバンドルをセキュリティ フォールドに組み込むことです。CXF バンドルを WAB としてデプロイする (CXF サーブレットを Spring フィルターと共に登録する) という 2 つのアプローチを試みました。問題は、このバンドルをサービス層に接続するブループリント ファイルの解析にありました。特定のエラーは、ブループリントの名前空間ハンドラーが見つからないことを示していました。

最新のアプローチは、blueprint.xml を使用して CXFNonSpringServlet をデプロイし、DelegatingFilterProxy フィルターを登録することです。bluring.xml の関連セクション:

   <service interface="javax.servlet.Servlet">
        <service-properties>
            <entry key="servlet-name" value="ozpCXFServlet"/>
            <entry key="alias" value="/ozp/rest" />
        </service-properties>
        <bean class="org.apache.cxf.transport.servlet.CXFNonSpringServlet">
            <property name="bus" ref="cxfBus"/>
        </bean>
    </service>


    <service interface="javax.servlet.Filter">
        <service-properties>
            <entry key="filter-name" value="springSecurityFilterChain"/>
            <entry key="servletNames">
                <array value-type="java.lang.String">
                    <value>ozpCXFServlet</value>
                </array>
            </entry>
            <entry key="urlPatterns">
                <array value-type="java.lang.String">
                    <value>/ozp/rest</value>
                </array>
            </entry>
        </service-properties>
        <bean class="org.springframework.web.filter.DelegatingFilterProxy" />
    </service>

この部分が機能し、フィルターが HTTP 要求に統合されます。私が得るエラーは

java.lang.IllegalStateException: No WebApplicationContext found: no ContextLoaderListener registered?
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:159)

このエラーを回避するにはどうすればよいですか? Springアプリケーションコンテキストが確実に作成されるようにする方法は?

ありがとうございました、

マイケル

4

1 に答える 1

0

この場合、spring-dmを使用する必要があります。あなたはおそらく2.5.xバージョンの春に縛られています。あなたはおそらくあなたの戦争でOsgiBundleXmlWebApplicationContextのようなものを必要としていました。

于 2013-03-19T14:36:14.387 に答える