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