快速业务通道

使用Felix和Struts2开发Web应用 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
dExecutionEnvironment: JavaSE-1.6   Struts2-Enabled: true   Import-Package: com.example.time.service,   com.opensymphony.xwork2,   org.apache.struts2.osgi.interceptor,   org.osgi.framework;version="1.3.0"

为了实现用户交互,还需要创建一个获取时间消息响应的 action。该 Action 的 execute() 方法代码如清单 7 所示。

清单 7. Action 实现方法

public String execute(){    ServiceReference ref = bundleContext.getServiceReference (    TimeService.class.getName());    TimeService timeService = (TimeService)  bundleContext.getService(ref);    timeMessage = timeService.getTime();    return SUCCESS;   }

这个 Web bundle 中独立的建立一个 struts.xml,这个 struts.xml 将会为 单独加载,需要注意的是 Struts 的 pacakge 继承 osgi-default 这个包, osgi-default 已在 struts2-osgi-plugin 这个 jar 包里面定义。

清单 8. Web Bundle struts.xml 的 action 定义

<struts>    <package name="time-example" namespace="/time" extends="osgi- default">      <action name="time"  class="com.example.time.web.action.TimeAction">        <result type="freemarker">time.ftl</result>      </action>    </package>   </struts>

使用Felix和Struts2开发Web应用(6)

时间:2011-09-04 IBM 韦景琪 邵兵 周英

打包部署

将开发好的四个 bundle 导出成 plugin 的包,并将它们放在 Web App 工程 中 ,bundles 的目录结构如图 4 所示。

图 4. Web Application 中的 bundles 目录结构

运行演示

启动 Tomcat,在浏览器地址栏输入 http://localhost:8080/webapp/osgi/admin/bundles.do, 可以看到所系统中所 有的 bundle 的列表。

图 5. 部署的 bundles 列表

使用Felix和Struts2开发Web应用(7)

时间:2011-09-04 IBM 韦景琪 邵兵 周英

在浏览器地址栏输入 http://localhost:8080/webapp/time/time.do,可以获 得时间信息,此时的时间信息为本地时间信息,当前 TimeService 这个服务有 local time service 和 UTC time service 两个实现,调用的是 local time service 这个实现。

图 6. 获取本地时间页面显示

此时,在浏览器地址栏输入 http://localhost:8080/webapp/osgi/admin/shell.do,然后输入命令 stop 1, 将 Local time service 这个 bundle 停止掉,输入命令 ps, 可以看到 local time service 这个 bundle 的 state 已经变为 Resolved.

图 7. OSGi Shell 管理页面

在浏览器地址栏再次输入 http://localhost:8080/webapp/time/time.do 得 到的结果如图 7 所示。

图 8. 获取 UTC 时间显示页面

使用Felix和Struts2开发Web应用(8)

时间:2011-09-04 IBM 韦景琪 邵兵 周英

通过上面的演示,我们可以看到 OSGi bundle 的动态部署能力。

bundle 的管理

通过 Felix 可以方便的管理项目中的 bundle,并且实现 bundle 的热部署, 即插即用,即删即无的特性,特别适用于可持续运行的系统。

添加 bundle

输入命令 install <bundle-url>,然后输入 start <bundle- id> 即可。如 $install file:/k:/plugins/com.example.time.local_1.0.0.qualifier.jar , $start 7

更新 bundle

输入命令 update <bundle-id> <bundle-url> 即可。如

$ update 1 file:/k:/plugins/com.example.time.local_1.0.0.qualifier.jar

启动和停止 bundle

输入命令 start <bu

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号