基于OSGI规范Equinox实现的Web组件化松耦合、热插拔架构
来源:互联网 发布:大数据精准推荐竞彩app 编辑:程序博客网 时间:2024/04/30 02:48
在编码的同时,写点东西,休息一下。
在ServletBridge中,对tomat(或者其他服务器的实现)的Servlet,ServletContex, ServletConfigure, ServletRequest, ServletContextFilter, ServletContextListener等标准的JEE规范类,进行封装,生成多个XXXWrapper类,然后将这些封装修改过的类型传入OSGI web容器中。
在OSGI Bundle jar中,封装了http servlet、jsp page和各种静态资源,一个bundle jar类似一个普通的Web应用,有自己的WebContent目录/Web.xml等。
对于web.xml中taglib的扩展,可以在上面的ServletContextWrapper中,对各个bundle web.xml中配置的jsp tag lib进行注册。然后每个dispatch jsp文件的地方,给每个jsp文件前面加上tag lib的引用:
<%@ taglib uri="/WEB-INF/mytab.tld" prefix="mt" %>
这里需要注意的是,开发者在编辑jsp文件的时候,uri上填的是虚拟的uri,并不是真实的对应.tld文件,但是tomcat的JspServlet(women不可能采用wrapper的方式进行封装),是从自己的实现中获得tag uri,这样导致我们bundle web.xml中配置的taglib并不能被正确的加载。所幸,jsp规范中允许上面的taglib标签, uri属性可以用实际的资源path,这样我们的解决方法为:在我们的Servlet中dispatch jsp文件的时候,在其开头,将tablic的uri修改为真实的资源path。然后tomcat的JspServlet是从我们的ServletContextWrappper.getResource(String path)获取该tld文件,此处我们可以将该地址转化成bundle的全path,或者真实的tld文件。
有个猜想,如果uri使用虚拟的地址,在ServletContextWrappper.getResource(String path)处,我们也可以直接得到bundle中真实的tld文件。这个需要验证。
- 基于OSGI规范Equinox实现的Web组件化松耦合、热插拔架构
- 基于 OSGi 服务模型实现组件之间松耦合通信
- 基于OSGI的Cache组件的实现
- 基于OSGI的Cache组件的实现
- equinox的osgi命令
- 基于Equinox构建OSGi项目
- 基于Equinox构建OSGi项目
- OSGi规范的实现
- Equinox 框架进行 OSGi 环境下的 Web 开发
- 使用 Equinox 框架进行 OSGi 环境下的 Web 开发
- 使用Equinox框架进行OSGi环境下的Web开发
- 使用 Equinox 框架进行 OSGi 环境下的 Web 开发
- 基于OSGi的JSF Web组件开发问题求解
- osgi的equinox实现中如何增加公共jar包
- OSGI Equinox对于Http Service实现相关的jar
- Equinox OSGi
- 基于OSGi实现的热插拔项目
- equinox实现osgi类加载机制
- BSD接口层关键数据结构
- ASP.NET COM 把DataTable的数据 分sheet 导出到Excel
- SQLServer索引碎片和解决方法
- 浅谈 Linux 内核开发之 PCI 设备驱动
- javascript:void(0)
- 基于OSGI规范Equinox实现的Web组件化松耦合、热插拔架构
- 日志版
- php整形类型
- openGL中的Texture/MultiTexture Mapping
- 端口被谁占有了?
- Postgres 导入到EDB中
- 苹果上免费开源文本编辑器 -MacVim
- Open CV2.0 + VS2008 安装详解
- 无法将bin下某个文件复制到某个bin下