在前一篇文章中,详细的描述了几个应用bundle的实现过程和其中的配置要点。下面描述一下真正的web工程,也就是将要部署到tomcat中的普遍的web工程的实现过程。
创建一个普通的web工程:webapp,配置web.xml文件支持Struts2和OSGi,Struts2中实现了一个Struts2-osgi-plugin,其中OSGi容器用的是felix,这也是为什么在这个工程中osgi实现选用felix的原因。
<filter> <filter-name>struts2-prepare</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareFilter</filter-class> </filter> <filter> <filter-name>struts2-execute</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2-prepare</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter-mapping> <filter-name>struts2-execute</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <listener> <listener-class>org.apache.struts2.osgi.StrutsOsgiListener</listener-class> </listener> <listener> <listener-class>org.apache.struts2.dispatcher.ng.listener.StrutsListener</listener-class> </listener>
实现web工程的struts.xml配置文件,其中最关键的是两个常量的设置,否则,在系统启动是,会报找不到bundle中struts.xml配置文件的错:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"file:D:/software/struts-2.2.1/src/core/src/main/resources/struts-2.0.dtd">
<struts>
<constant name="struts.objectFactory" value="osgi" />
<constant name="struts.objectFactory.delegate" value="springOsgi" />
<package name="test" namespace="/test" extends="struts-default">
<action name="test" class="test.TestAction">
<result>/a.html</result>
</action>
</package>
</struts>
然后建立系列文章一中的bundle文件结构,把文章二中生成的四个bundle,放到相应的目录下,进行部署,即可。
本文介绍如何在普通Web应用中集成Struts2框架与OSGi服务平台,包括配置web.xml支持Struts2和OSGi,使用Felix作为OSGi容器,并详细说明struts.xml配置要点。
610

被折叠的 条评论
为什么被折叠?



