我正在使用的应用程序有一个带有基于JavaScript的客户端的Web应用程序包,它向基于CXF的包发出REST调用。后者使用蓝图来连接服务层包公开的服务。主要的WAB通过Spring的DelegatingFilterProxy使用Spring Security。
目标是将基于CXF的捆绑包插入安全折叠中。我们尝试了两种方法:将CXF软件包部署为WAB(在其中注册CXF servlet以及Spring过滤器)。问题在于解析将此捆绑包连接到服务层的蓝图文件。特定错误表明无法找到蓝图的命名空间处理程序。
最新的方法是使用blueprint.xml部署CXFNonSpringServlet以及注册DelegatingFilterProxy过滤器。 blupring.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应用程序上下文?
谢谢,
迈克尔
答案 0 :(得分:0)
在这种情况下你需要使用spring-dm。您可能必须使用2.5.x版本的spring。 你可能需要在战争中使用像OsgiBundleXmlWebApplicationContext这样的东西。