弹簧:配置静态字段单例实例



有CXF的PolicyBasedWSS4JInInterceptor,它创建了一个单例实例:

public static final PolicyBasedWSS4JInInterceptor INSTANCE 
    = new PolicyBasedWSS4JInInterceptor();

由于没有 Spring 技能,我正在努力解决如何通过 cxf.xml 文件中的 Spring 定义来设置其 acestor(AbstractWSS4JInterceptor)的属性映射。基本上我想在cxf.xml中配置与WSS相关的属性,例如"signaturePropFile"。

有人可以展示如何设置PolicyBasedWSS4JInInterceptor.INSTANCE的属性映射吗?谢谢!

我会声明一个单例 bean:

<bean id="interceptor" class="whatever.your.package.PolicyBasedWSS4JInInterceptor" scope="singleton"/>

然后在我需要的地方注射它

<bean id="anotherBean" ...>
  <property name="interceptor" ref="interceptor"/>
</bean>

这个其他 Bean 将具有一个正常的基于策略的 WSS4JInInterceptor 属性,如下所示:

private PolicyBasedWSS4JInInterceptor interceptor;
public PolicyBasedWSS4JInInterceptor getInterceptor() {
  return interceptor;
}
public void setPolicyBasedWSS4JInInterceptor(PolicyBasedWSS4JInInterceptor interceptor) {
  this.interceptor = interceptor;
}

你会得到与声明它是静态的一样,用 Spring 术语表示。 这取决于您喜欢哪种方式,请记住,以 Spring 方式执行此操作,您将拦截器放在 IoC 容器内,因此您可以在必要时对其进行检测,等等。

基于 "

action" 的 WS-Security 属性(如 "signaturePropFile") 不适用于 CXF 中基于 WS-SecurityPolicy 的拦截器。CXF 具有单独的配置标记,在使用 WS-SecurityPolicy 时,您可以将其作为 JAX-WS 属性传递,因此您无需访问 INSTANCE 类的任何属性。有关更多信息,请参阅此处:

http://cxf.apache.org/docs/ws-securitypolicy.html

科尔姆。

最新更新