apache cxf服务端拦截器拦截客户端并中断返回自定义消息
2016-08-10 16:42
435 查看
apache cxf框架最主要的扩展点就是拦截器了,拦截器可以在不对核心模块进行修改的情况下,动态添加很多功能。拦截器和JAX-WS Handler、Filter的功能类似,当服务被调用时,就会创建一个拦截器链(Interceptor Chain),拦截器链在服务输入(IN)或输出(OUT)阶段实现附加功能。
在实际的webservice开发中会有类似需求:对客户端传过来的参数进行校验,如果参数不符合规则,就中断返回,使之不进入实际业务逻辑的执行,并给客户端返回自定义的信息。实现上述需求的代码如下:
public class ValidateInterceptor extends AbstractPhaseInterceptor<XMLMessage>{ private Logger log = LoggerFactory.getLogger(getClass()); public ValidateInterceptor(String phase) { super(phase); } public ValidateInterceptor() { super(Phase.PRE_INVOKE); } @Override public void handleMessage(XMLMessage arg0) throws Fault { MessageContentsList lstContent = MessageContentsList.getContentsList(arg0); try { MsgObject msgObject = (MsgObject)ValidateUtil.valitWlefParams(lstContent.get(0)); if("error".equals(msgObject.getReturnCode())) { HttpServletResponse response = (HttpServletResponse)arg0.get(AbstractHTTPDestination.HTTP_RESPONSE); ServletOutputStream out = response.getOutputStream(); String outMsg = JsonUtil.toJson(msgObject); log.info("回送字符串:" + outMsg); try { out.write(outMsg.getBytes("utf-8")); out.flush(); arg0.getInterceptorChain().doInterceptStartingAfter(arg0, "org.apache.cxf.jaxrs.interceptor.JAXRSOutInterceptor"); } catch (Exception e) { e.printStackTrace(); } } } catch (Exception e) { e.printStackTrace(); } } }
相关文章推荐
- Apache CXF 学习-使用MTOM来让客户端接收从服务端发过来的带附件的SOAP消息
- cxf InInterceptor中断返回自定义消息
- Apache CXF 学习-使用MTOM来从客户端发送带附件的SOAP消息到服务端 推荐
- jms Queue 示例 ,服务端向客户端发送消息,并等待客户端返回消息
- 客户端(client)获取服务端(server)返回的SOAP消息包
- CXF拦截器Interceptor实现自定义消息,并以json格式返回
- 黑马程序员-网络编程-自定义服务端和客户端
- 在asp.net在服务端向客户端添加脚本实现自动弹出消息
- 客户端IdTCPClient向服务端IdTCPServer1发送消息
- 客户端IdTCPClient向服务端IdTCPServer1发送消息
- HTTP代理实现请求报文的拦截与篡改7--将接收到的响应报文返回给客户端
- 浏览器客户端,自定义服务端
- android客户端从服务器端下载文件,服务端返回文件流(文件不在项目里)
- 编写一段Socket服务端程序,监听端口8888,接受到Client的消息“nihao”后,将“nihao”写回到客户端,关闭socket。
- 初识安卓之服务:客户端绑定服务和服务端如何返回客户请求的结果
- XFire客户端解析服务端返回List
- 4.客户端自定义的out拦截器,带上用户名和密码:拦截器
- datasnap 2010 客户端如何调用服务端上自定义的方法
- Dwr框架在客户端远程调用方法返回自定义类型的例子
- 扩展WCF行为,自定义消息头,实现客户端标识的传递