cxf源码

 package org.apache.cxf.phase.PhaseInterceptorChain
  public synchronized boolean doIntercept(Message message) {
  //循环遍历执行拦截器handleMessage(message);
  while (state == State.EXECUTING && iterator.hasNext()) {
                try {
                    Interceptor<Message> currentInterceptor = (Interceptor<Message>)iterator.next();
                    if (isFineLogging) {
                        LOG.fine("Invoking handleMessage on interceptor " + currentInterceptor);
                    }
                    //System.out.println("-----------" + currentInterceptor);
					
                    currentInterceptor.handleMessage(message);
                    if (state == State.SUSPENDED) {
                         // throw the exception to make sure thread exit without interrupt
                        throw new SuspendedInvocationException();
                    }
                    
                } catch (SuspendedInvocationException ex) {
                    // we need to resume from the same interceptor the exception got originated from
                    if (iterator.hasPrevious()) {
                        iterator.previous();
                    }
                    pause();
                    throw ex;
                } catch (RuntimeException ex) {
				.................
                } 
            }
      return state == State.COMPLETE;
} finally {
     CURRENT_MESSAGE.set(oldMessage);
}
}





package org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor;
public void handleMessage(Message message) {
        //message=org.apache.cxf.message.XMLMessage@9c494f43
        try {
            processRequest(message);
        } catch (RuntimeException ex) {
           ..
        }
    }
    
	
package org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor;
private void processRequest(Message message) {
      ....................
	   OperationResourceInfo ori = null;   
	  ...........
	     MultivaluedMap<String, String> values = new MetadataMap<String, String>();
	  ....................
	   //Process parameters
        try {
		   //解析请求方法的参数列表。
           List<Object> params = JAXRSUtils.processParameters(ori, values, message);
            message.setContent(List.class, params);
        } catch (Exception ex) {
          ..............
        }


    //Message contains following information: PATH, HTTP_REQUEST_METHOD, CONTENT_TYPE, InputStream.
	package org.apache.cxf.jaxrs.utils.JAXRSUtils;
    public static List<Object> processParameters(OperationResourceInfo ori, 
                                                 MultivaluedMap<String, String> values, 
                                                 Message message)
        throws IOException, WebApplicationException {
        
        //得到 请求处理的方法public com.ym.box.data.ReturnData //com.ym.box.LogBoxResource.mobileLog(com.ym.box.data.LogBoxRequest)
        Method method = ori.getMethodToInvoke();
		//得到请求方法参数类型[cla
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值