I wanted to change the default value of the Http Response Header, for example to set no-cache to the Cache-Control. Here's what I did:
1) Create SoapInterceptor class by extending org.apache.cxf.binding.soap.interceptor.AbstractSoapInterceptor
public class SoapInterceptor extends AbstractSoapInterceptor {
2) In the constructor, set the below line:
super(Phase.PRE_PROTOCOL);**For Phase, please read this documentation from RedHat . If you wanna become an expert in terms of this, you need to test it out one by one to master its behavior. I think it is wise to include that kind of effort to your project timeline.
getAfter().add(SAAJInInterceptor.class.getName());
3) Implement the handleMessage(SoapMessage message) method.
3) Inside this handleMessage, I obtain the HttpServletResponse from the below line:
HttpServletResponse httpResponse = (HttpServletResponse) message.get(AbstractHTTPDestination.HTTP_RESPONSE);
4) Now I can set the following:
httpResponse.setHeader("Cache-Control", "no-cache, no-store");5) Next, in applicationContext.xml,
<cxf:cxfEndpoint id="MyEndPoint" address="http://localhost/test" serviceClass="com.test.Test" >
<cxf:inInterceptors>
<bean id="inInterceptor1" class="com.test.interceptor.SoapInterceptor" />
</cxf:inInterceptors>
</cxf:cxfEndpoint>
No comments:
Post a Comment