CXF拦截器注释工作,弹簧配置没有

时间:2013-04-23 21:36:37

标签: java web-services spring cxf

我已经实现了一个jax-ws服务,我正在尝试使用自定义拦截器:

TestInterceptor.java

public class TestInterceptor extends AbstractPhaseInterceptor<Message> {
    public TestInterceptor() {
        super(Phase.INVOKE);
    }

    @Override
    public void handleMessage(Message message) throws Fault {
        ...
    }
}

PatientWebServiceImpl.java

@WebService(serviceName = "PatientService", endpointInterface = "com.xyz.ws.PatientWebService")
@InInterceptors(interceptors = {"com.xyz.ws.TestInterceptor"})
public class PatientWebServiceImpl implements PatientWebService {
    ...
}

应用context.xml中

<jaxws:endpoint id="patientWebService" address="/PatientService">
    <jaxws:implementor>
        <ref bean="patientServiceImpl" />
    </jaxws:implementor>
</jaxws>


当我运行测试时它工作正常。但是,如果我从服务实现中删除注释并在spring上下文中定义它,它就不起作用。

<bean id="testInterceptor" class="com.xyz.ws.TestInterceptor"/>

<jaxws:endpoint id="patientWebService" address="/PatientService">
    <jaxws:implementor>
        <ref bean="patientServiceImpl" />
    </jaxws:implementor>
    <jaxws:inInterceptors>
        <ref bean="testInterceptor" />
    </jaxws:inInterceptors>
</jaxws>


我已经通过调试器,可以看到在第二种情况下拦截器没有“注册”。记录也没有帮助。这可能是一件简单的事情,但我已经没有什么可尝试的了。任何想法将不胜感激。感谢。

0 个答案:

没有答案