`
raymond.chen
  • 浏览: 1417983 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Spring-DM在web中的应用

    博客分类:
  • OSGi
阅读更多

在web中使用Spring-DM时,需要用到spring-osgi-web-extender-x.x.x.jar Bundle,该Bundle的启动级别要比其它的大。

 

一、开发步骤如下:

     1、创建插件工程,最终的目录结构如下:

 

 

     2、添加WEB-INF目录,并在该目录下加入web.xml文件。

 

     3、引入相关的Bundle和包,最终MANIFEST.MF文件的内容如下:

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: P6 Plug-in
Bundle-SymbolicName: p6;singleton:=true
Bundle-Version: 1.0.0
Bundle-Activator: p6.Activator
Import-Package: javax.servlet,
 javax.servlet.http,
 javax.servlet.resources;version="2.4.0",
 org.osgi.framework;version="1.3.0",
 org.springframework.osgi.web.context.support;version="1.1.3",
 org.springframework.web.context;version="2.5.5",
 org.springframework.web.context.support;version="2.5.5",
 p3.service;version="1.0.0"
Require-Bundle: org.springframework.bundle.osgi.core,
 org.springframework.bundle.osgi.io,
 org.springframework.bundle.spring.beans,
 org.springframework.bundle.spring.context,
 org.springframework.bundle.spring.core,
 org.springframework.osgi.catalina.osgi,
 org.apache.jasper

  

     4、创建HelloServlet,其源码如下:

public class HelloServlet extends HttpServlet{
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		doPost(req, resp);
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		resp.setContentType("text/html;charset=GBK");
		
		WebApplicationContext ctx = WebApplicationContextUtils.
			getWebApplicationContext(req.getSession().getServletContext());
		PersonManager pm = (PersonManager)ctx.getBean("osgiPersonManager");
		if(pm!=null){
			pm.savePerson("cjm", "123");
			resp.getWriter().print("调用成功!");
		}
	}
}

  

     5、编辑web.xml文件,其内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app  xmlns="http://java.sun.com/xml/ns/j2ee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
	<context-param> 
    	<param-name>contextClass</param-name> 
    	<param-value>org.springframework.osgi.web.context.support.OsgiBundleXmlWebApplicationContext</param-value> 
 	</context-param>
 
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	
	<servlet>
		<servlet-name>HelloServlet</servlet-name>
		<servlet-class>p6.HelloServlet</servlet-class>
	</servlet>
	
	<servlet-mapping>
		<servlet-name>HelloServlet</servlet-name>
		<url-pattern>/hello</url-pattern>
	</servlet-mapping>
</web-app>

    

     6、在WEB-INF目录下加入applicationContext.xml文件,其内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:osgi="http://www.springframework.org/schema/osgi"
	xsi:schemaLocation="
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
    http://www.springframework.org/schema/osgi http://www.springframework.org/schema/osgi/spring-osgi.xsd">
 	
 	<osgi:reference id="osgiPersonManager" interface="p3.service.PersonManager" />
	
</beans>

  

  • 大小: 27.1 KB
分享到:
评论
3 楼 TANHAIWEI 2011-11-15  
搞定了...
web.xml中的servlet写错了...
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: HelloWorldWeb Plug-in
Bundle-SymbolicName: HelloWorldWeb
Bundle-Version: 1.0.0
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Import-Package: com.tanhaiwei.demo.timeservice,
javax.servlet;version="2.4.0",
javax.servlet.http;version="2.4.0",
javax.servlet.resources;version="2.4.0",
org.springframework.beans;version="3.0.0.RC1",
org.springframework.beans.factory;version="3.0.0.RC1",
org.springframework.context;version="3.0.0.RC1",
org.springframework.core.io;version="3.0.0.RC1",
org.springframework.core.io.support;version="3.0.0.RC1",
org.springframework.osgi.io;version="2.0.0.M1",
org.springframework.osgi.web.context.support;version="2.0.0.M1",
org.springframework.web.context;version="3.0.0.RC1",
org.springframework.web.context.support;version="3.0.0.RC1"
2 楼 TANHAIWEI 2011-11-15  
我用Spring DM 2.0M1死活过去不...总是提示:
The bundle could not be resolved. Reason: Missing Constraint: Require-Bundle: org.apache.jasper; bundle-version="5.5.17"

但实际上我已经加入了。
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: HelloWorldWeb Plug-in
Bundle-SymbolicName: HelloWorldWeb
Bundle-Version: 1.0.0
Bundle-Vendor:
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Import-Package: ps.demo.timeservice,
javax.servlet;version="2.4.0",
javax.servlet.http;version="2.4.0",
javax.servlet.resources;version="2.4.0",
org.osgi.framework;version="1.5.0",
org.springframework.osgi.web.context.support;version="2.0.0.M1",
org.springframework.web.context;version="3.0.0.RC1",
org.springframework.web.context.support;version="3.0.0.RC1"
Require-Bundle: org.springframework.osgi.core;bundle-version="2.0.0",
org.springframework.osgi.io;bundle-version="2.0.0",
org.springframework.beans;bundle-version="3.0.0",
org.springframework.context;bundle-version="3.0.0",
org.springframework.core;bundle-version="3.0.0",
org.apache.jasper;bundle-version="5.5.17",
org.springframework.osgi.catalina.osgi;bundle-version="5.5.23"

请教要怎么处理呀...
1 楼 kris_wuj 2011-11-13  
求源码!

相关推荐

    基于SpringDM的WEB应用开发

    Spring DM 1.1.x最大特性便是它可以支持在其中部署WEB应用我使用后感觉这是个很酷特性我甚 至觉得用这种方式开发基于OSGi WEB应用比使用Spring DM Server更好至少目前你可以获得更好便携性(可以 在多个Spring DM支持...

    OSGI原理最佳实践(包含源代码)

    是一本适合新接触OSGI开发学习的一本很好的书,本书介绍了Equinox, Spring-DM和Felix这三个常用的OSGi容器的使用、开发、以及WebApplication的开发部署;介绍了OSGi的规范和Core Framework和Layer。包含书中的用例源...

    Spring攻略(第二版 中文高清版).part1

    6.1 在一般Web应用中访问Spring 209 6.1.1 问题 209 6.1.2 解决方案 210 6.1.3 工作原理 210 6.2 在你的Servlet和过滤器中使用Spring 214 6.2.1 问题 214 6.2.2 解决方案 215 6.2.3 工作原理 215 ...

    基于OSGi和Spring开发Web应用.doc

    dm Server 是一个完全模块化部署的,基于OSGi的Java服务器,为运行企业Java应用和Spring应用提供更加强大的灵活性和可靠性。SpringSource应用平台是构建在Spring、OSGi和Apache Tomcat之上的应用服务器,这个新的...

    Spring攻略(第二版 中文高清版).part2

    6.1 在一般Web应用中访问Spring 209 6.1.1 问题 209 6.1.2 解决方案 210 6.1.3 工作原理 210 6.2 在你的Servlet和过滤器中使用Spring 214 6.2.1 问题 214 6.2.2 解决方案 215 6.2.3 工作原理 215 ...

    webDev_A_Spring2021:DM-UY 2193 A部分-丽贝卡·利奥波德(Rebecca Leopold)

    纽约大学丹顿工程学院技术,文化+社会| 综合数字媒体Intro to Web Development - Spring 2021DM-UY 2193 Section A | January 28 - May 10Monday + Wednesday 6:00-7:50 pm | IDM - Room 311 + ONLINEProfessor: ...

    大数据应用测试经验总结.pdf

    ⼤数据应⽤测试经验总结 ⼤数据应⽤测试经验总结 ⼤数据应⽤测试过程与传统的web系统有较⼤的不同,⼤数据应⽤测试通常会分为web侧和ETL侧测试,web侧基本就是功能测试,⽽ETL(Extracting-Transfroming- Loading)...

    snappy-twitter:Firefos OS插件使Twitter应用程序变得更加抢眼

    选择“打开打包的应用程序”选择“插件”目录按下播放:)在电话上,转到“设置”应用程序。转到“插件”。启用Snappy Twitter Addon重新启动Twitter 变化 60fps拉动刷新 在推文上滚动捕捉(始终在顶部显示完整的...

    Sosoo 1.0网络爬虫程序.doc

    通过上述对功能的定制,我们可以看到在应用中我们对sosoo的编程接口并不多,而且目前系统都是基于set的方式注入aop注入对象,这样很容易和spring等基于set方式的依赖注入(IOC)框架集成。 1.Roboter类,spider...

    decision-maker

    This app does that.It has a React web app and an API based on microservices using Spring with Kotlin and Java.要求java 11postgresql 13.2node 10.23.0Other versions could work, these are mine.组件决策...

Global site tag (gtag.js) - Google Analytics