`
小爷有里有面
  • 浏览: 26280 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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;
  }
}

 

分享到:
评论

相关推荐

    jetty-all.jar

    它包含了解析和加载WAR文件、管理Web应用上下文(WebAppContext)以及处理Web应用部署的相关功能。通过这个组件,Jetty能够支持标准的Java Web应用程序的部署和运行。 总的来说,jetty-all.jar是一个包含各种Jetty...

    jetty9.4.11+jetty在idea上的配置教程

    WebAppContext context = new WebAppContext(); context.setWar("path/to/your/webapp"); // 替换为你的Web应用目录 context.setContextPath(System.getProperty("jetty.contextPath")); // 如果你在start.ini中...

    Jetty 学习资料汇总

    3. **WebAppContext**:WebAppContext是Jetty中用于部署Web应用程序的核心类,可以配置虚拟主机、类加载器等。 4. **Jetty与WebSocket**:介绍Jetty对WebSocket协议的支持,包括创建WebSocket服务器端点和客户端...

    Jetty内嵌服务器实例

    2. **内嵌Jetty的实现**:学习如何通过Java代码创建并启动一个内嵌的Jetty服务器,这通常涉及导入相关的Jetty库,创建Server对象,配置Connector(如HTTP或HTTPS)和Handler(如WebAppContext)。 3. **Servlet容器...

    jetty嵌入项目实战

    - 配置Servlet容器,例如使用`org.eclipse.jetty.webapp.WebAppContext`加载Web应用上下文。 3. **实战项目内容** - 项目中包含的jar包可能包括Jetty服务器核心模块、Servlet支持模块、WebSocket支持模块等。 - ...

    jetty嵌入Web编程多种实现方式案例

    除了上述的WebAppContext,Jetty还提供了Handler集成功能,如HandlerList、HandlerWrapper等,可以灵活地管理和组织多个Web应用或Handler。 五、安全性与性能优化 Jetty提供了安全模块,如JAAS认证、SSL/TLS加密等...

    jetty-6.1.26源码

    7. **部署与启动**:Jetty提供了多种方式部署Web应用,如`WebAppContext`用于加载`war`文件。此外,`jetty-run`脚本展示了如何启动服务器。 8. **插件系统**:Jetty的模块化设计允许通过插件扩展功能,如添加安全...

    jetty嵌入式服务器实例大全

    通过`WebAppContext`或`ResourceHandler`,可以设置静态资源目录,使得Jetty能够自动服务这些文件。这在快速搭建小型Web应用或者测试环境时非常方便。 2. **Servlet处理**: Jetty是Servlet规范的实现者,支持...

    jetty 源码 2018 zip

    5. **WebAppContext**:这是Jetty中用于部署和管理Web应用的主要组件。它将一个Web应用映射到服务器的一个特定虚拟路径,并负责Web应用的生命周期管理。 6. **Continuation**:Jetty提供了对Servlet 3.0中...

    jetty8+ 内嵌式启动运行demo

    import org.eclipse.jetty.webapp.WebAppContext; public class JettyEmbeddedDemo { public static void main(String[] args) throws Exception { // 创建服务器对象 Server server = new Server(8080); // ...

    tomcate和jetty虚拟目录配置方法

    &lt;New class="org.eclipse.jetty.webapp.WebAppContext"&gt; &lt;Set name="contextPath"&gt;/myapp &lt;Set name="war"&gt;file:///D:/myapp ``` 这里的`contextPath`对应虚拟目录的URL路径,`war`属性则指定Web...

    jetty内嵌实现

    import org.eclipse.jetty.webapp.WebAppContext; public class JettyEmbeddedServer { public static void main(String[] args) throws Exception { Server server = new Server(8080); // 设置监听端口 ...

    jetty6.1.4 嵌入样例

    import org.mortbay.jetty.webapp.WebAppContext; public class JettyTest { public static void main(String[] args) throws Exception { // 创建服务器实例 Server server = new Server(); // 设置连接器,...

    在嵌入式jetty环境下运行struts2Annotation项目

    在嵌入式Jetty环境下运行Struts2 Annotation项目是一个常见的任务,特别是在开发和测试阶段,因为这种方式能够快速启动服务,而无需依赖大型服务器容器。本文将深入探讨如何配置和执行这个过程,以及涉及的关键技术...

    jetty-distribution-9.4.31.v20200723.zip

    也可以使用WebAppContext类进行编程式部署。 - **虚拟主机**:Jetty支持多个虚拟主机,可以在同一服务器上运行不同域名的应用。 4. **安全管理** - **角色与权限**:Jetty支持基于角色的访问控制(RBAC),可以...

    HelloWorld之jetty运行

    接着,创建WebAppContext对象,设置Web应用的上下文根("web")和虚拟路径("/web"),并将这个上下文添加到服务器中。最后,调用`service.start()`启动服务器,`service.join()`使得主进程等待服务器停止。 【测试...

    简单jetty配置

    3. `&lt;New id="webAppConfig" class="org.eclipse.jetty.webapp.WebAppContext"&gt;`:这是用来配置Web应用的部分,其中`&lt;Set name="contextPath"&gt;/&lt;/Set&gt;`定义了Web应用的上下文路径,而`&lt;Set name="war"&gt;...&lt;/Set&gt;`则...

    Android-I-Jetty服务器部署例子代码

    import org.eclipse.jetty.webapp.WebAppContext; public class JettyServer { private Server server; public void start() throws Exception { int port = 8080; // 设置服务器监听端口 server = new Server...

    jetty for java

    开发者可以将Web应用部署为WAR文件,或者通过WebAppContext直接加载类路径下的资源。 4. **HTTP/HTTPS支持**: Jetty支持HTTP/1.1和HTTP/2协议,并且可以通过添加SSL配置来启用HTTPS,保障数据传输的安全性。 5. ...

    Jetty使用总结

    &lt;New class="org.mortbay.jetty.webapp.WebAppContext"&gt; &lt;Set name="contextPath"&gt;/jettytest &lt;Set name="war"&gt;./WebRoot&lt;/Set&gt;&lt;!-- Web应用根目录 --&gt; ``` ##### 2. webdefault.xml 这个文件主要...

Global site tag (gtag.js) - Google Analytics