研究一下基于osgi的web应用(1)

   目前,J2EE的web应用可以说多不胜数,很多 做过J2EE,并开始接触OSGI的童鞋都会自然而然 地想,如果在OSGI之上该如何构建Web应用。在 这方面,OSGI虽然有一些解决方案,但“似乎”都 不是那么成熟的。这还真不好说,我隐隐约约感 觉似乎在观念上需要改变,就像我们要理解广义 相对论,需要去将万有引力的观念转变成时空扭 曲的观念来理解一样。不管如何,大概我们先理 理现在的观念还是比较必要的。

    我们都知道在J2EE,最基础的web应用的概念 就是Servlet。在OSGI范畴内,Servlet又是如何的 呢?对于OSGI来说,当然愿意将这成熟的Servlet 的概念继续用上,只是希望在servlet在模块化、 动态化方面演进一下。

    在J2EE里,由Selvet container来管理servlet的 生命周期,Servlet container根据部署描述文档 (web.xml)来部署servlet,当收到http请求,就 会根据请求的url查找到相应的servlet来处理请 求,并将servlet的返回的response响应请求。相 应的,在OSGI里,有个HttpService可以提供注册 servlet的方法(registerServlet)

HttpService的bundle有点类似Servlet container,它负责servlet的生命周期管理。

    如果每个Servlet都需要写调用HttpService的 registerServlet方法来注册的话,有点罗嗦。于是 就有whiteboard pattern在这方面的应用了。 whiteboard pattern是OSGI里经常使用的一种设 计模式,正如它的名字一样,这个模式就象你在 白板(whiteboard)上写下一条信息,然后另一 个需要那个信息的人就可以从白板上获得它,并 使用它。在这个过程中,谁写信息,谁用信息, 都不重要,而且什么时候用信息也不重要。

  在OSGI环境下,要将服务的发布和撤离看成是动 态的,就象白板上的信息一样。如果用 whiteboard pattern,就可以将发布者和使用者之 间的关联由OSGI service registry充当代理的角色 而获得解藕。

猜你喜欢

转载自killko.iteye.com/blog/1806626