利用structs2 + felix 快速构建动态模块工程
来源:互联网 发布:nginx keepalived 编辑:程序博客网 时间:2024/06/06 11:02
使用structs2 + felix快速构建可热部署的工程
<1> 开发工具以及依赖jar:
eclipse 3.2 +
tomcat apache-tomcat-7.0.64
jdk : 1.7.0_80
jar版本
struts2.version : 2.3.16.3
org.osgi.compendium : 4.0.0
org.apache.felix.framework : 4.4.1
struts2-osgi-plugin : 2.3.16.3
org.apache.struts.xwork : 2.3.16.3
插件及版本
felix自带测试插件 : struts2-osgi-admin-bundle-2.3.16.3.jar(可监控服务的状态,具体使用方法,请参考网路)
热部署插件: org.apache.felix.fileinstall-3.5.2.jar(该插件可以设置自动监视的路径,开发者开发的插件按照一定得约束格式,拷贝到该目录下即可实现热部署:即无需重启tomcat即可实现服务的发布)
该目录的指定方式:
set JAVA_OPTS="-Dfelix.fileinstall.dir=D:/apache-tomcatVer1.0/apache-tomcat-7.0.64/webapps/webapp/WEB-INF/classes/deploy"
<2> 开发约束以及注意事项
1: jsp,模板文件的路径问题
请再web.xml通过以下进行配置
<context-param> <param-name>TemplatePath</param-name> <param-value>/login</param-value> </context-param>
2:关于插件状态一直是starting 的状态
<Bundle-ActivationPolicy>lazy</Bundle-ActivationPolicy>
在maven-bundle-plugin中请将该条去掉,该条的意思为,标注此插件为懒加载模式,即使在别人引用的时候才去加载,不会主动地被加载。此问题的解决来源于http://eclipsesource.com/blogs/2013/01/23/how-to-track-lifecycle-changes-of-osgi-bundles/,该作者写的牛B,哈哈
3:关于版本osgi.ee; filter=”(&(osgi.ee=JavaSE)(version=1.8))之类的错误
关于这个版本问题真的很头疼,所以我的策略是不加任何版本约束信息,在maven-bundle-plugin中请做以下设置
<_noee>true</_noee>
<3> 完整地打包脚本
<plugin> <groupId>org.apache.felix</groupId> <artifactId>maven-bundle-plugin</artifactId> <version>3.0.1</version> <extensions>true</extensions> <configuration> <instructions> <manifestLocation>META-INF</manifestLocation> <_noee>true</_noee> <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName> <Bundle-Version>${project.version}</Bundle-Version> <DynamicImport-Package>*</DynamicImport-Package> <Export-Package> xxx.xxx.action;version=${project.version} </Export-Package> <Import-Package>!*</Import-Package> <Embed-Dependency>*</Embed-Dependency> <Embed-Directory>jars</Embed-Directory> <Struts2-Enabled>true</Struts2-Enabled> <Implementation-Vendor>Apache Software Foundation</Implementation-Vendor> <Implementation-Vendor-Id>org.apache.struts</Implementation-Vendor-Id> <Implementation-Version>2.3.16.3</Implementation-Version> <Bundle-Vendor>Apache Software Foundation</Bundle-Vendor> <Bundle-Description>Apache Struts 2</Bundle-Description> <Spring-Context>*;create-asynchronously:=true</Spring-Context> </instructions> </configuration> </plugin>
关于felix版本,和structs2的版本匹配问题,请参考我的上一篇博客,以上内容希望对大家有所帮助。
4: 在母版工程中,一定要启动的顺序是:bundle context –> spring context。
5:在母版的structs.xml中,注意:
<constant name="struts.objectFactory" value="osgi" /> <constant name="struts.objectFactory.delegate" value="springOsgi" /> <constant name="struts.convention.action.disableScanning" value="true"/>
之前没有加那句话(最后一行)之前,老是给我报:unable to scan the name package这样的错误,但是它又没有错,bundle能够正常启动。按照字面的意思,貌似要扫描解析action的包,既然我的action在spring.xml中有定义,那为什么我还要多此一举,所以直接屏蔽不让它扫描。
6 : 在此基础上如果想集成mybatis的小朋友,个人建议还是采用spring 的jdbc template,由于org.mybatis和org.apache.mybatis各自实现了一套sqlsession,所以集成起来比较费劲。
- 利用structs2 + felix 快速构建动态模块工程
- # 关于structs 和 felix 构建动态模块的使用注意说明
- 利用scons构建工程
- 利用scons构建工程
- 利用 Jsp+Taglib+JavaBean 快速构建 动态数据库查询模板
- maven构建多模块工程
- idea快速构建spark 工程
- android 利用gradle构建工程
- 利用命令快速构建react工程(create-react-app or nwb)
- structs2快速入手
- Java Structs2 动态Action
- Maven构建多模块Java工程
- 主工程模块yycgproject三层构建
- maven 分模块 分工程构建项目
- IDEA多模块工程的构建
- 快速构建一个可用的Maven工程
- 利用eclipse构建和部署maven工程
- 利用eclipse构建和部署maven工程
- Win32 SDK创建RichEdit Control控件
- Java——异常处理
- Android Studio 包名的修改方式
- 字符数组与字符指针的区别
- Android屏幕多适配全攻略
- 利用structs2 + felix 快速构建动态模块工程
- 精通CSS滤镜(filter)(实例解析)
- MSWINSOCK状态说明
- Emmet基本使用方法
- dubbo源码分析-consumer端1-consumer代理生成
- 101. Symmetric Tree
- POJ2763 Housewife Wind
- 去雾算法相关资源
- java利用微信企业号将位置信息推送到普通微信号并在微信中直接查看地图位置