Jetty WebAppContext

我们首先要了解Jetty中的org.mortbay.jetty.handler.HandlerCollection。这个类是Jetty服务的核心操作类,像日志、设备上下文等操作对象都存在于其中,其底层实现是一个Handler接口数组,我们可以通过Server提供的方法来获取。

 

HandlerCollection handlers= (HandlerCollection)server.getHandler();

 

 

应用下所有站点的设备上下文都存在于org.mortbay.jetty.handler.ContextHandlerCollection类对象中。其底层实现是一个HashMap对象,key的格式为 /* 或 /virtual directory name/*,value就是webapp的设备上下文对象,ContextHandlerCollection并没有提供直接访问的方法,我们可以通过反射得到。所有操作对象我们都可以通过HandlerCollection来获取。

 

ContextHandlerCollection contextHandler=(ContextHandlerCollection)handlers.getChildHandlerByClass(ContextHandlerCollection.class);
Class<ContextHandlerCollection> cls=ContextHandlerCollection.class;
Field field=cls.getDeclaredField("_contextMap");
field.setAccessible(true);
PathMap handlers=(PathMap)field.get(contextHandlerCollection);
WebAppContext context=(WebAppContext)handlers.get("/test/*");

 

 

或者通过其父类HandlerCollection提供的public Handler[] getHandlers()方法获取想要的WebAppContext,此方法得到的Handler数组就是反射变量PathMap中所有value的数组。

 

ContextHandlerCollection contextHandler=(ContextHandlerCollection)handlers.getChildHandlerByClass(ContextHandlerCollection.class);
Handler[] handlers = getHandlers();
WebAppContext webContext;
for(Handler handler : handlers){
  webContext=(WebAppContext)handler;
  if("/test".equalsIgnoreCase(webContext.getContextPath())){
    break;
  }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值