【IT168技术文档】
这两天没什么事情,研究了一下RoR,粗看了一下,感觉Ruby语言比较可怕,短期内不研究。
由于正在开发MINI OSGi,我在想,能不能使用Rails的模式,在OSGi上建立Web应用呢?
于是仔细地想了一下,感觉还是比较可行的,咱们可以这样做:
规定每个Service就是一个action,Service中的Method是action的具体执行方法,代码如下:
注册Service的Java代码public class SomeAction...{
public class someMethod(HttpServletRequest request,
HttpServletResponse response) throws Exception...{
... ...
}
}
安装并启动该Bundle后,在浏览器中敲入 http://www.xxx.com/hello/someMethod 就会执行对应Service的someMethod方法的输出结果。这时,我们只需要实现一套IoC框架即可,这岂不很方便?public class SomeBundle extends BundleActivator...{
![]()
private ServiceRegistration registration;
![]()
public void start(BundleContext context) throws BundleException...{
![]()
// 注册服务
registration = context.registerService("hello", new SomeAction(), null);
}
![]()
public void stop(BundleContext context) throws BundleException...{
![]()
// 注销服务
registration.unregister();
}
}
这样做的好处是:
真正实现动态更新Actions,只需要在后台启动/更新/停止OSGi的Bundles即可。
极大地简化了开发,不用写那么多url-mapping了。
如果在同一名称注册了多个服务,那可以在IoC容器中进行筛选,最常用的就是区别登陆用户与匿名用户。
暂时只想到这么多.... -_-!
该想法正在验证中,理论上应该可行,希望能通过这个做个真正的基于OSGi的Web应用。努力努力...
