Ringo.js嵌入集成(二):使用Listener Filter替换官方的JsgiServlet实现


 就像上回所讲,官方提供了一个样例JsgiServlet。虽然已经在其上stick矿建,但是就个人看来,这个东西确实类似一个样例。
 如果使用serlvet作为js容器(ringo-engine)的载体,那么势必一个webapp可以配置多个servlet,也就是多个js容器。这种方式会导致开发人员在不熟悉环境的情况错误的开发判断。其实,如果要方便开发,那么就应该至少提供一个较为但单纯的环境。降低入门曲线。即,提供一个webapp默认对应的js容器。
另一方面,我后续的需要完成的仿制wordpress plugin的机制也需要用到直接获取默认引擎。

参考spring:
 spring在这块做的比较好,其WebApplicationContext在开发时对于业务开发者来看其实就是被绑定在ServletContext(application)对象上的“单例”。虽然springContext并没有那么简单,其context可以有树形结构的。但至少提供一个默认入口。
 ok,那我现在其实可以参考spring的context绑定方式对Jsgi的进行改造。另外,一方面其实有经验的开发者完全可以自己构造ringo的web-connector接口不一定要符合标准jsgi。完全可以构造一个类似nodejs-express的web框架。我这里是想尽量利用ringo自带的stick框架才这么干的。

架构:
下面是一个粗鲁(是“鲁”)的框线图:

整体结构大致由RingoListener,JsgiFilter,JsgiUtils,RingoEngineHolder(附加),RingoSpringBindingListener(附加)等若干类组成。


RingoListener:
其功能就是读取web.xml中的配置初始化ringo engine。然后将engine绑定到对servletContext。
主要代码是实现一个createRingoEngine方法,初始化engine。
protected RhinoEngine cre
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值