`
raymond.chen
  • 浏览: 1437240 次
  • 性别: 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  
求源码!

相关推荐

    spring-dm_springboot管理后台模板_spring-dm_seen1bc_bootstrap框架_box5v4_

    标题 "spring-dm_springboot管理后台模板_spring-dm_seen1bc_bootstrap框架_box5v4_" 提到的关键技术主要集中在Spring Boot、Spring DM(Spring Dynamic Modules)以及Bootstrap上,这些是构建现代化Web应用程序的...

    基于Spring-DM实现分布式服务框架(DSF).docx

    发布服务则借鉴了Spring的ServiceExporter,V0.7版本中暂时只支持通过JNDI发布,利用JBoss JNP作为JNDI服务器,并支持Hessian和Web服务方式。 值得注意的是,如果服务应用端不是基于Spring实现,可能需要自定义...

    基于Spring-DM实现分布式服务框架(DSF).pdf

    它基于Spring-DM(Spring Dynamic Modules),这是一个为OSGi(Open Services Gateway Initiative)环境提供的扩展,使得在OSGi容器中使用Spring框架变得更加简便。Spring-DM在2008年1月29日发布了1.0版本,其稳定性...

    spring-dm-reference

    - **Bundle 作用域**: 探讨了 Bundle 作用域的概念及其在 Spring DM 中的应用。 - **访问 BundleContext**: 介绍如何在 Bundle 中访问 BundleContext。 - **ApplicationContext 销毁**: 指导如何销毁 ...

    基于SpringDM的WEB应用开发

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

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

    "基于OSGi和Spring开发Web应用" OSGi(Open Service Gateway Initiative)是一种面向服务的框架,能够提供动态模块部署和管理的能力。Spring 是一个轻量级的J2EE开发框架,特点是面向接口编程和非侵入式的依赖注入...

    SPRING DM 参考手册

    - **Web支持**:新增了对Web应用程序的支持,允许开发者更方便地部署基于Spring的Web应用到OSGi环境中。 - **类路径资源抽象**:引入了一种新的资源抽象机制,使得资源可以独立于特定的类加载器进行访问。 - **可...

    基于OSGi和Spring开发Web应用教程

    在基于OSGi和Spring开发Web...通过Spring-DM,开发者可以在OSGi环境中享受到Spring的便利,构建更灵活、可维护的Web应用。这种开发方式特别适用于大型、复杂的企业级项目,因为它们通常需要高度的可扩展性和模块化。

    spring-osgi.jar及其依赖包

    Spring OSGi将Spring应用上下文转换为OSGi bundle,使得Spring的应用组件可以在OSGi环境中运行。 Spring OSGi的主要特点包括: 1. **动态性**:OSGi环境支持服务的动态发布和发现,Spring OSGi利用这一点,允许在...

    基于OSGi和Spring开发Web应用

    在基于OSGi和Spring开发Web应用的过程中,首先需要指定Target Platform到所有需要用到的bundle包目录中,这是为了确保开发环境能够识别并正确加载所有必要的组件。接下来,创建一个服务接口bundle,定义接口类及其...

    springDM开发指南(英文)

    5. **Web Support**:Spring DM增加了对Web应用的支持,使得开发者可以更方便地在OSGi环境中部署和管理Web应用。 6. **Classpath Resource Abstraction**:引入了资源抽象层,使得开发者可以通过统一的方式访问类...

    Spring DM IN ACTION

    - **Spring DM**(Spring Dynamic Modules)是Spring框架的一个扩展,它结合了OSGi(Open Service Gateway Initiative)的强大功能,旨在帮助开发者在复杂的分布式环境中构建更加灵活、可扩展的应用程序。...

    Spring DM集成Strtus2(一)

    标题“Spring DM集成Struts2(一)”指出我们要探讨的主题是关于如何在OSGi(Spring DM,即Spring Dynamic Modules)环境中集成Struts2框架。这是一个关键的Java Web开发中的技术结合,因为它允许开发者利用Spring的...

    spring osgi相关资源

    Spring OSGi是Spring框架与OSGi(Open Service Gateway Initiative)规范相结合的一种技术,它...通过学习和掌握Spring DM Server的使用以及Spring OSGi的相关库,开发者可以更好地在OSGi环境中构建和管理Spring应用。

    基于VirgoServer进行Spring Osgi Web开发

    在本文中,我们将深入探讨如何基于VirgoServer进行Spring Osgi Web开发,这是一个涉及OSGi容器、Spring框架和Web应用程序的集成技术。首先,我们需要确保拥有正确的开发环境和工具,包括Spring Tool Suite (STS),...

Global site tag (gtag.js) - Google Analytics