基于OSGi bundle的Web工程
来源:互联网 发布:怎么在淘宝开充值店 编辑:程序博客网 时间:2024/05/22 15:58
搭建equinox+内嵌jetty+jsp环境
*概述
基于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资源目录
---以我的配置为例
<?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
MANIFEST.MF
*总结
---equinox已经提供了内嵌jetty和jsp的插件支持,包括提供了扩展点,所以构建环境的基本要素已经有了,需要的是自己合理的配置
---本文结合我的工程示例,给出了eclipse插件方式开发jsp的环境搭建过程和注意事项,其核心思想是2点:
1)添加需要的插件,包括jetty,jsp插件,注意除了应用插件外,要加上需要的独立的插件
2)通过扩展点的方式定义jsp资源路径.注意的地方是,将内嵌jetty处理jsp时,需要的库和WEB-INF等的配置资源,以插件的方式组织好.
- 基于OSGi bundle的Web工程
- OSGI bundle的知识
- 利用 Eclipse 开发基于 OSGi 的 Bundle 应用[摘]
- (转)利用 Eclipse 开发基于 OSGi 的 Bundle 应用
- 如何在eclipse中基于maven创建osgi的bundle
- 打造一个基于OSGi的Web Application
- 打造一个基于OSGi的Web Application
- 打造一个基于OSGi的Web Application
- 打造一个基于OSGi的Web Application
- OSGi介绍及OSGi的Bundle应用
- OSGi介绍及OSGi的Bundle应用
- 基于maven-bundle-plugin生成osgi插件
- 补充 OSGI bundle的知识
- 浅析OSGI的bundle依赖
- OSGI的bundle监听类
- OSGi打包Web Bundle 之classes
- OSGI的bundle工程本地运行正常,放到服务器总报找不到Activator
- OSGi环境下建立Web工程的Hello World
- 数据契约(DataContract)
- 12 - 布局Layout:TableLayout表格布局
- 站长外链优化基本技能之网站流量分析
- 虚拟机的网络设置
- FOMO addiction--社交控
- 基于OSGi bundle的Web工程
- Linux C中段错误
- iPad、iPhone 界面设计标准
- cocos2d-x 的一些编辑器 Texture,Tilemap,Particle,Action,Level etc
- 为按钮添加管理员执行权限。
- Linux内核参数-proc
- C#为winForm程序打包发布应用
- 使用不同版本jdk时出现的问题记录
- 关于内存泄露的调测方法