利用felix和struts2实现osgi web(三)

    在前一篇文章中,详细的描述了几个应用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,放到相应的目录下,进行部署,即可。 

 

你可能感兴趣的:(apache,Web,struts,jpa,osgi)