论坛首页 Java企业应用论坛

基于Web的OSGi框架构想

浏览 13583 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-01-23  
SOA
 

这两天没什么事情,研究了一下RoR,粗看了一下,感觉Ruby语言比较可怕,短期内不研究。

由于正在开发MINI OSGi,我在想,能不能使用Rails的模式,在OSGi上建立Web应用呢?

于是仔细地想了一下,感觉还是比较可行的,咱们可以这样做:

规定每个Service就是一个action,Service中的Method是action的具体执行方法,代码如下:

Service的Java代码
 
  1. public class SomeAction{   
  2.   public void someMethod(HttpServletRequest request, 
  3.                           HttpServletResponse response) throws Exception{   
  4.     ... ...   
  5.   }   
  6. }  
注册Service的Java代码
 
  1. public class SomeBundle extends BundleActivator{      
  2.      
  3.   private ServiceRegistration registration;   
  4.      
  5.   public void start(BundleContext context) throws BundleException{      
  6.      
  7.     // 注册服务      
  8.     registration = context.registerService("hello"new SomeAction(), null);      
  9.   }      
  10.      
  11.   public void stop(BundleContext context) throws BundleException{   
  12.        
  13.     // 注销服务   
  14.     registration.unregister();   
  15.   }      
  16. }    

 

安装并启动该Bundle后,在浏览器中敲入 http://www.xxx.com/hello/someMethod 就会执行对应Service的someMethod方法的输出结果。这时,我们只需要实现一套IoC框架即可,这岂不很方便?

这样做的好处是:

  1. 真正实现动态更新Actions,只需要在后台启动/更新/停止OSGi的Bundles即可。
  2. 极大地简化了开发,不用写那么多url-mapping了。
  3. 如果在同一名称注册了多个服务,那可以在IoC容器中进行筛选,最常用的就是区别登陆用户与匿名用户。
  4. 暂时只想到这么多.... -_-!

该想法正在验证中,理论上应该可行,希望能通过这个做个真正的基于OSGi的Web应用。努力努力...

修订:

2007-04-06 回复的朋友提出了一个关于URL跳转的问题,其实这个问题可以学学Struts的用法。例如我们把当前框架添加一个后缀如 *.go
当在浏览器敲入 http://www.xxx.com/hello/someMethod.go 时,调用上面的方法。

   发表时间:2007-03-10  
想法不错.一直就想要是有个像eclipse一样的web框架平台多好,功能都分成模块.扩展,更新都很方便.不过感觉这东西要是有web容器支持那就更好了.
0 请登录后投票
   发表时间:2007-03-10  
要是哪个容器直接实现所有封装和框架,那就爽了!呵呵!
0 请登录后投票
   发表时间:2007-03-12  
在浏览器中敲入 http://www.xxx.com/hello/someMethod 怎么跳转页面?

#  public class someMethod(HttpServletRequest request,
#                           HttpServletResponse response) throws Exception{
怎么返回值是class type?
0 请登录后投票
   发表时间:2007-03-21  
有现成的

去研究eclipse的OSGI的实现项目:Equinox.

其中的HTTP Service就是这方面的。

你可以在一个Web Container中内嵌OSGI平台,也可以使用将Web Container内嵌为一个Bundle的模型。

目前还在发展中。

另外关于实现一个OSGI模型的Web框架,可以去eclipse研究rsp项目,还没有正式发布,但貌似有一个demo可以跑。

0 请登录后投票
   发表时间:2007-03-21  
yipsilon可以和bluedavy一起搞啊~~
0 请登录后投票
   发表时间:2007-04-06  
bluedavy太忙了, 我想他目前主要是搞 osgi.org.cn 这块儿。呵呵。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics