dubbo获取ApplicationContext
2015-12-11 16:49
387 查看
dubbo自定义的扩展中如何获取当前的ApplicationContext,并且获取对应的类和接口以及方法。
1.自定义扩展步骤:
@在xml中,provider标签中加入filter="TEST";
@同时文件目录如下配置:
2.具体的实现:
import java.lang.reflect.Method;
import java.util.Map;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
import com.alibaba.dubbo.common.Constants;
import com.alibaba.dubbo.common.extension.Activate;
import com.alibaba.dubbo.config.spring.ServiceBean;
import com.alibaba.dubbo.rpc.Filter;
import com.alibaba.dubbo.rpc.Invocation;
import com.alibaba.dubbo.rpc.Invoker;
import com.alibaba.dubbo.rpc.Result;
import com.alibaba.dubbo.rpc.RpcContext;
import com.alibaba.dubbo.rpc.RpcException;
import com.sohu.service.TmallOrderService;
@Activate("TEST")
public class TestFilter implements Filter{
private Logger logger =LoggerFactory.getLogger(TestFilter.class);
@Override
public Result invoke(Invoker<?> invoker, Invocation invocation)
throws RpcException {
logger.info("test filter");
Class<?> serviceType = invoker.getInterface();
Method method =null;
try {
method= invoker.getInterface().getMethod(invocation.getMethodName(), invocation.getParameterTypes());
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ApplicationContext context=ServiceBean.getSpringContext();
TmallOrderService toc=context.getBean(TmallOrderService.class);
logger.info(serviceType.getName());
logger.info(method.getName());
logger.info(toc.toString());
return invoker.invoke(invocation);
}
}
3.如何获取context呢?
有个ServiceBean可以直接获取当前环境的springContext.
1.自定义扩展步骤:
@在xml中,provider标签中加入filter="TEST";
@同时文件目录如下配置:
import java.lang.reflect.Method;
import java.util.Map;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
import com.alibaba.dubbo.common.Constants;
import com.alibaba.dubbo.common.extension.Activate;
import com.alibaba.dubbo.config.spring.ServiceBean;
import com.alibaba.dubbo.rpc.Filter;
import com.alibaba.dubbo.rpc.Invocation;
import com.alibaba.dubbo.rpc.Invoker;
import com.alibaba.dubbo.rpc.Result;
import com.alibaba.dubbo.rpc.RpcContext;
import com.alibaba.dubbo.rpc.RpcException;
import com.sohu.service.TmallOrderService;
@Activate("TEST")
public class TestFilter implements Filter{
private Logger logger =LoggerFactory.getLogger(TestFilter.class);
@Override
public Result invoke(Invoker<?> invoker, Invocation invocation)
throws RpcException {
logger.info("test filter");
Class<?> serviceType = invoker.getInterface();
Method method =null;
try {
method= invoker.getInterface().getMethod(invocation.getMethodName(), invocation.getParameterTypes());
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ApplicationContext context=ServiceBean.getSpringContext();
TmallOrderService toc=context.getBean(TmallOrderService.class);
logger.info(serviceType.getName());
logger.info(method.getName());
logger.info(toc.toString());
return invoker.invoke(invocation);
}
}
3.如何获取context呢?
有个ServiceBean可以直接获取当前环境的springContext.
相关文章推荐
- 微信公众平台开发教程目录
- Android代码内存优化建议-Android官方篇
- webView.addJavascriptInterface 用法
- 在Windows 10下搭建Android开发环境
- Android代码内存优化建议-Java官方篇
- FragmentApp界面
- JSON使用JsonConstructorAttribute,JsonConverterAttribute,JsonObjectAttribute
- Android 蓝牙开发基本流程
- android 解析JSON
- android解析XML
- Android代码内存优化建议-OnTrimMemory优化
- JS判断请求来自Android手机还是iPhone手机,根据不同的手机跳转到不同的链接。
- Android Studio 常见问题
- iOS 支付 [支付宝、银联、微信]
- 【Android】android图片轮播
- Objective-C运行时消息派发机制
- Android知识总结:Universal-Imageloader学习笔记4 使用Universal-Imageloader管理本地图片
- iOS socket 知识
- iOS GCD 学习
- iOS创建静态库