*概述
基于equinox+内嵌jetty+jsp的组合,开发web程序,并且支持jsp特性(如jstl等),通过这种组合就可以将osgi服务,web技术和eclipse插件开发等的优点结合在一起,主要的优点在于天然的osgi支持,功能的复用,最后的应用程序具有整体性.
以下将说明如何在eclipse搭建环境,以支持前述开发框架.(注,我的环境Eclipse3.7+wtp)
*第一步,添加需要的插件,
这里要分成2步骤:
1)配置jsp应用插件依赖的插件,如下面我的plugin.xml截图
2)添加独立的插件,如jetty插件等
可以通过在debug配置中->osgi framework->新建一个配置页,来方便查找和测试.
以下2张是我的配置(IDE_SRV)的截图,供参考.
注,
1)其他的一些插件,可以通过右侧按钮"Add Required Bundles"添加;
2)debug时,若80端口被占用,就需要自定义http的端口,如我的VM arguments是:"-Declipse.ignoreApp=true -Dosgi.noShutdown=true -Dorg.osgi.service.http.port=10000".
*第二步,配置开发jsp的插件,支持完整的jsp特性,其实就是如何让内嵌的jetty找到需要的资源
1)以我的插件为例,先建立2个目录:"/WebContent/",存放jsp内容,这个名字可以随便取."/WEB-INF/",存放web应用的配置,如web.xml,tld,lib库等,这个就是固定的名称.
注,a)这里的"/"表示插件的根目录.b)我使用默认的httpContent,即org.eclipse.equinox.http.servlet.internal.DefaultHttpContext,所以像"/WEB-INF/"就需要放在插件根目录,可是试试配置扩展点org.eclipse.equinox.http.registry.httpcontexts,来修改默认的设置.
如图,
2)通过扩展点配置http资源目录
---以我的配置为例
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.0"?>
<plugin>
<extension
point="org.eclipse.equinox.http.registry.resources"> <!--定义资源路径-->
<resource
alias="/auth/images"
base-name="/WebContent/auth/images"> <!--图片目录-->
</resource>
<resource
alias="/auth/css"
base-name="/WebContent/auth/css"> <!--css目录-->
</resource>
<resource
alias="/auth/js"
base-name="/WebContent/auth/js"> <!--js目录-->
</resource>
</extension>
<extension
point="org.eclipse.equinox.http.registry.servlets"> <!--定义servlet-->
<servlet
alias="/auth/*.jsp"
class="org.eclipse.equinox.jsp.jasper.registry.JSPFactory:/WebContent/auth/"> <!--注意,jsp定义方式,比较特别-->
</servlet>
</extension>
</plugin>
---org.eclipse.equinox.http.registry.resources
配置web资源路径,如images,js,css目录等,这样jetty就知道如何找到资源了,
如代码: <img src="/auth/images/sys.gif" />
---org.eclipse.equinox.http.registry.servlets
定义jsp的目录,如我的测试文件test.jsp放在/WebContent/auth/test.jsp,那么在浏览器中应输入"http:localhost:10000/auth/test.jsp"
3)添加jstl库等
---把jstl库放入classpath,我使用的是apache的实现,有2个jar包:jstl.jar和standard.jar.
如图,
注,这里就体现出独立部署的war和在插件开发中的不同:独立部署的war在"/WEB-INF/lib/"是默认的查找路径,而插件开发中需要把库添加到"Bundle-ClassPath".
为了分离web需要的库和插件的库,所以按照一般的约定将其放在"/WEB-INF/"下,其实不必如此.
---在"/WEB-INF/"下建立web.xml,若没有这个文件,启动时会报错给你
---最后,别忘了在"Build"页选中需要的资源
*最后,参看下我的MANIFEST.MF
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
MANIFEST.MF
*总结
---equinox已经提供了内嵌jetty和jsp的插件支持,包括提供了扩展点,所以构建环境的基本要素已经有了,需要的是自己合理的配置
---本文结合我的工程示例,给出了eclipse插件方式开发jsp的环境搭建过程和注意事项,其核心思想是2点:
1)添加需要的插件,包括jetty,jsp插件,注意除了应用插件外,要加上需要的独立的插件
2)通过扩展点的方式定义jsp资源路径.注意的地方是,将内嵌jetty处理jsp时,需要的库和WEB-INF等的配置资源,以插件的方式组织好.