基于Web的OSGi框架构想

 

这两天没什么事情,研究了一下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 时,调用上面的方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值