Jetty做为一个轻量级的J2EE Web application server,它不仅小巧,而且性能也比较稳定,效率也挺高,现在也越来越得到广泛的应用。特别是eclipse平台集成了Jetty Plugin后,更是对RCP整合Web Server开发提供了极大的方便。一个非常典型的应用应该就是help帮助系统了,大家可以参看eclipse自已的help系统,从3.3后它就是基于Jetty的,现在的Jetty版本是5.1。
在这里不得不先叉开一个话题,就是servlet-bridge桥的概念。Jetty只是一个单纯的web server服务器,eclipse为了整合框架的考虑,提出了servlet-bridge的概念,对Jetty进行了封装,提供了基于Extension point的servlet注册机制。用户只需要在plugin.xml文件中对相应的Extension point进行扩展,就可以很方便将一个servlet注册到web server上。也就是说,标准的J2EE应用,我们需要一个web.xml文件对所有的servlet,context-param等等进行配置说明;现在这些都基于eclipse http registry所提供的Extension point进行注册,不再需要web.xml文件。
下面,我们看一个plugin.xml的例子。
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.0"?>
<plugin>
<extension
point="org.eclipse.equinox.http.registry.httpcontexts">
<httpcontext
id="myapp">
<resource-mapping
path="/myapp">
</resource-mapping>
</httpcontext>
</extension>
<extension
point="org.eclipse.equinox.http.registry.resources">
<resource
alias="/"
base-name="/"
httpcontextId="myapp">
</resource>
<serviceSelector
filter="(other.info=org.myapp.jetty.demo)">
</serviceSelector>
</extension>
<extension
point="org.eclipse.equinox.http.registry.servlets">
<servlet
alias="/myfirstservlet"
class="org.myapp.jetty.demo.servlet.MyFirstServlet"
httpcontextId="myapp"
load-on-startup="true">
</servlet>
<servlet
alias="/*.jsp"
class="org.eclipse.equinox.jsp.jasper.registry.JSPFactory:/"
httpcontextId="myapp">
</servlet>
<serviceSelector
filter="(other.info=org.myapp.jetty.demo)">
</serviceSelector>
</extension>
</plugin>
这个文件不算复杂,简单解释一下:
1) Extension point - "org.eclipse.equinox.http.registry.httpcontexts"
这个类似于ServletContext,一般一个web application指定一个,ID是唯一的。 resource-mapping可以指定资源根目录。
2) Extension point - "org.eclipse.equinox.http.registry.resources"
是资源目录和httpcontext间的影射关系。
3) Extension point - "org.eclipse.equinox.http.registry.servlets"
这个很关键,就是用这个来注册servlet的。
其中有两个地方要注意,
<servlet alias="/*.jsp" class="org.eclipse.equinox.jsp.jasper.registry.JSPFactory:/" httpcontextId="myapp"></servlet>
这个是注册所有jsp的mapping,一定要写。
<serviceSelector
filter="(other.info=org.myapp.jetty.demo)">
</serviceSelector>
这一段最好也要保留,不然要多个web app的情况下,可能会产生冲突。
有什么不情楚的,大家可以查看eclipse的帮助。
很可惜,eclipse基本上只提供了这几个Extension point,现在只提供对servlet的支持,暂时还无法支持context-param, filter, listener等等其它的元素。
已经有相应的bug,但似乎不在eclipse的下一步开发计划中。
https://bugs.eclipse.org/bugs/show_bug.cgi?id=199748
而且在实际的开发过程中还发现两个问题:
1) 当调用ServletContext.getRealPath方法获取绝对路径时,返回NULL值。
2) 当在JSP中调用request.getServletPath方法,也是返回NULL值。
所以需要找到别的方法去处理。
在Jetty Server上启动一个Web application,代码非常简单:
Dictionary dict = new Hashtable( );
// configure the port
dict.put( "http.port", port ); //$NON-NLS-1$
// configure the host
dict.put( "http.host", host ); //$NON-NLS-1$
// set the base URL
dict.put( "context.path", "/" + webappName ); //$NON-NLS-1$ //$NON-NLS-2$
dict.put( "other.info", pluginID ); //$NON-NLS-1$
// Startup Jetty web server
JettyConfigurator.startServer( webappName, dict );
ensureBundleStarted( "org.eclipse.equinox.http.registry" ); //$NON-NLS-1$
停止一个Web application,一句代码就够了:
JettyConfigurator.stopServer( webappName );
附件中是我写的一个示例plugin,包含了所有基本的功能。包括启动/停止一个web application,注册servlet,JSP文件示例等等。
大家可以很方便的应用到自已开发的RCP应用中去。
~_~
分享到:
相关推荐
Jetty Eclipse Plugin是一款用于Eclipse集成开发环境的插件,旨在简化在Eclipse中调试和运行基于Jetty服务器的应用程序。Jetty是一个轻量级、高性能的Java Web服务器和Servlet容器,广泛应用于开发、测试和部署Web...
总之,Eclipse Jetty插件是开发和测试Java Web应用的得力助手,通过离线安装,即使在网络条件不佳的情况下也能方便地使用。它的便捷性、灵活性和强大的调试能力使得开发者能更高效地进行Web应用的开发工作。只需简单...
1. **快速启动与调试**:Eclipse Jetty插件可以快速启动Jetty服务器,便于进行Web应用的开发和调试。开发者可以直接在Eclipse中部署和运行项目,节省了传统方式中配置服务器和部署应用的时间。 2. **嵌入式服务器...
Eclipse Jetty Plugin是用于Eclipse IDE的插件,它允许开发者在开发环境中直接集成Jetty服务器,便于进行Web应用的测试和调试。这个“eclipse-jetty-plugin-master_源码.rar”文件包含的是该插件的源代码,涵盖了...
此时,Eclipse会启动Jetty服务器,并监听默认端口8080(可配置),你的Web应用将部署在指定的Context Path下。 **五、调试Web应用** 1. 在Eclipse中,右键项目选择Run As > Debug Configurations。 2. 创建一个新...
通过Eclipse Jetty插件,开发者可以更加专注于应用的开发,而不必花费过多时间在服务器的管理和配置上,这对于提升开发效率和优化开发体验有着显著的帮助。在实际开发过程中,结合Maven或Gradle的构建工具,以及Git...
总结来说,通过Eclipse和Jetty的结合,开发者能够快速地进行Web应用的开发、测试和调试。熟练掌握这一配置方法,将大大提高开发效率和质量。在实际操作中,可能会遇到各种问题,如端口冲突、依赖冲突等,但只要理解...
本教程将深入探讨如何使用Eclipse集成开发环境(IDE)、Maven项目管理和构建工具,以及Jetty轻量级服务器来搭建一个完整的Java Web开发环境。以下是详细步骤和相关知识点: 1. **Eclipse IDE**: Eclipse 是一个开源...
Eclipse中的Jetty插件(如“Jetty Integration for Eclipse”)可提供集成的开发环境,使得在Eclipse内部就可以调试和测试基于Jetty的Web应用。 3. **Tomcat**: - Tomcat是Apache软件基金会的项目,也是一个流行...
Eclipse Jetty插件是开发Java Web应用时非常实用的一款工具,它允许开发者在Eclipse集成开发环境中直接启动和测试Jetty服务器,而无需通过外部命令行或独立的Jetty安装。这款插件极大地简化了开发流程,提高了开发...
总之,"jetty-plugin.jar.zip"是为Eclipse提供离线安装Jetty服务器支持的解决方案,使得开发者即使在无网络环境下也能高效地进行Web应用的开发和测试。通过理解和掌握这个插件的使用,可以提升开发效率,减少调试时...
Eclipse Jetty插件是开发Java Web应用时非常实用的一款工具,它允许开发者在Eclipse集成开发环境中直接运行和调试Jetty...同时,了解Jetty服务器的基本特性和优势,有助于更好地利用这个强大的工具进行Web应用开发。
在Eclipse中配置Maven项目以使用Jetty服务器是一个常见的任务,这主要适用于开发和测试阶段,因为它提供了快速的启动和重启能力。Jetty是一个轻量级、高性能的开源HTTP服务器和Servlet容器,广泛用于Java Web应用。...
jetty-maven-springMVC-mybitas-eclipse集成demo 数据库配置:/jetty-maven/src/main/resources/applicationContext.xml 数据库导入到test数据库:/jetty-maven/src/main...配置好maven环境,联网,开发环境eclipse-jee
在IT行业中,开发Java Web应用程序时,我们常常使用Eclipse作为IDE,Maven作为构建工具,而Jetty则是一个轻量级的嵌入式HTTP服务器,适用于快速部署和测试。这篇博客“Eclipse+Maven创建webapp项目集成jetty服务器”...
8. **Maven集成**:如果你的项目使用Maven构建,可以配置Jetty Maven Plugin,通过执行`mvn jetty:run`命令,直接在命令行中启动和测试应用,这样也可以与Eclipse集成,实现开发流程的一致性。 9. **日志和错误处理...
### 使用Maven和Jetty开发调试WEB应用程序 #### 前言 在现代软件开发过程中,集成工具如Maven和Jetty极大地提高了开发效率。Maven作为自动化构建工具,能够帮助开发者快速创建、管理和构建项目;而Jetty则是一款轻...
5. **配置Jetty**:在项目中添加Jetty插件,通过Maven插件管理器配置jetty-maven-plugin,以便于在开发过程中快速启动和停止Jetty服务器。 6. **集成JRebel**:安装JRebel的Eclipse插件,并根据JRebel的官方指南配置...
在Eclipse、MyEclipse或Spring Tool Suite (STS) 等开发环境中,Jetty插件是一个非常实用的工具,它允许开发者快速地在本地运行Web应用,而无需先进行正式的打包和部署。 标题中的"jetty.rar"指的是一个包含Jetty...