Spring:配置静态字段单例实例

时间:2014-02-24 07:56:15

标签: java spring cxf wss4j

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

public static final PolicyBasedWSS4JInInterceptor INSTANCE 
    = new PolicyBasedWSS4JInInterceptor();

没有Spring技能我正在努力解决如何在cxf.xml文件中通过Spring的bean定义设置其acestor(AbstractWSS4JInterceptor)属性的问题。基本上我想在cxf.xml中配置与WSS相关的属性,如“signaturePropFile”。

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

2 个答案:

答案 0 :(得分:0)

我会声明一个单例bean:

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

然后将其注入我需要的任何地方

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

这个其他bean将具有正常的PolicyBasedWSS4JInInterceptor属性,如下所示:

private PolicyBasedWSS4JInInterceptor interceptor;

public PolicyBasedWSS4JInInterceptor getInterceptor() {
  return interceptor;
}

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

你会得到同样的声明静态,用Spring术语表示。这取决于你喜欢哪种方式,只要记住,在你的IoC容器中使用你的拦截器的Spring方式,这样你可以在必要时进行检测等。

答案 1 :(得分:0)

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

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

科尔姆。