`
sunxboy
  • 浏览: 2870123 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Spring Web Application应用到OSGI环境 一 (转)

阅读更多

关于本文
本文记录了将Spring Web Application应用到OSGI环境中,也就是OSGI Web应用。
[请点击这里下载本文的Eclipse工程]
org.phrancol.osgi.demo.launcher工程中启动应用。

一、准备工作

1,JDK 1.5
2,Eclipse 3.3-jee (MyEclipse)
3,Spring-framework-2.1-m3
4,Spring-osgi-1.0-m2

二、搭建环境

1,首先当然需要一个Http Server,那就用Eclipse自带的Jetty吧。
2,将Jetty和它的依赖包作为 Plugin 工程导入Eclipse,  Import -> Plug-ins and fragments -> Next

 3,创建一个普通工程做为Eclipse Launch的存放目录 org.phrancol.osgi.demo.launcher
 4,Open Run Dialog ... -> OSGI Framework -> New Configuration ,名字改为org.phrancol.osgi.demo.web.launcher,在
Common面板Save as 里面的 Shared file指定目录到 org.phrancol.osgi.demo.launcher

5,Apply,  Run ,可以看到一个Launch已经生成,通过Console可以看到Jetty也成功启动
6,在OSGI输入exit退出,(注:如果不退出,那么它将驻留内存,大概会消耗20K的内存)

三、Equinox/Spring-osgi环境

导入Spring-osgi和它的依赖包(注:导入Spring包的时候,plug-in Location 要指定Spring-osgi的lib目录),导入完毕后,形成的project结构如下图


四、jpetstore
使用Spring自带的jpetstore,代码和配置文件都是现成的,能省去一些不必要的开发。

五、首页
jpetstore默认是springmvc,向HttpService注册Servlet或是Resource,jpetstore里面需要注册的servlet就是ContextLoaderServlet和DispatcherServlet,resource则是view层的jsp等。
1,创建个plug-in project ,OSGI Framework选择Equinox,创建Activator,org.phrancol.osgi.jpetstore.springmvc
2,创建一个web目录,这个目录就是web应用的目录,将jpetstore里面的WEB-INF/jsp目录拷贝进去
3,在 META-INF 目录中创建 dispatcher 目录,将petstore-servlet.xml拷贝进去,修改成如下代码
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">

<!--
  - DispatcherServlet application context for the Spring web MVC
  - implementation of JPetStore's web tier.
  
-->
<beans>

    
<!-- ========================= VIEW DEFINITIONS ========================= -->

    
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
        
<property name="prefix" value="/web/jsp/spring/"/>
        
<property name="suffix" value=".jsp"/>
    
</bean>

    
<!-- ========================= DEFINITIONS OF PUBLIC CONTROLLERS ========================= -->

    
<bean id="defaultHandlerMapping" class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>

    
<bean name="/shop/index.do" class="org.springframework.web.servlet.mvc.ParameterizableViewController">
        
<property name="viewName" value="index"/>
    
</bean>

</beans>

4,在Activator的start(BundleContext context)里面注册servlet和resource,代码如下
public void start(BundleContext context) throws Exception {
        ServiceReference sr 
= context.getServiceReference(HttpService.class
                .getName());
        HttpService httpService 
= (HttpService) context.getService(sr);
        httpService.registerResources(
"/""/web"null);
        httpService.registerServlet(
"/*.jsp"new JspServlet(context
                .getBundle(), 
"/web/jsp"), nullnull);
        Dictionary
<String, String> initparams = new Hashtable<String, String>();
        initparams.put(
"load-on-startup""1");
        DispatcherServlet dispatcherServlet 
= new DispatcherServlet();
        dispatcherServlet
                .setContextConfigLocation(
"META-INF/dispatcher/petstore-servlet.xml");

        initparams 
= new Hashtable<String, String>();
        initparams.put(
"servlet-name""petstore");
        initparams.put(
"load-on-startup""2");
        httpService.registerServlet(
"/*.do", dispatcherServlet, initparams,
                
null);

    }

注意依赖包关系
启动后,在访问http://localhost/shop/index.do页面,报错,看来要解决一下标签库问题,在web目录中建立一个WEB-INF目录,将c.tld, fmt.tld拷贝进去,然后在osgi控制台refresh springmvc,再访问这个页面,发现没有图片,把jpetstore/images目录拷贝到web目录下,再refresh一下,OK,首页出来了。

六、结束语
 这部分简单记录了如何使用springmvc,下部分将记录如何将jpetstore的各个层通过spring-osgi应用起来

 

 

 

分享到:
评论

相关推荐

    RAP 整合 Spring (基于 Spring-osgi )

    Spring-osgi 是 Spring 框架的一个扩展,它支持 OSGi(Open Service Gateway Initiative)容器,提供了模块化、动态和可扩展的应用程序开发环境。 描述中的链接指向了一篇 ITeye 博文,虽然具体内容未给出,但可以...

    OSGi与Web容器的整合

    Web Application Bundle (WAB) 是一种特殊的OSGi Bundle,它可以作为一个Web应用运行。WAB包含传统的Web项目元素,如Web-INF目录和web.xml,同时还包含OSGi元数据,如MANIFEST.MF文件,使得它们能够作为OSGi模块运行...

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

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

    springDM开发指南(英文)

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

    Eclipse RCP+Spring建胖客户端Web程序

    通过以上步骤,我们成功地构建了一个基于Eclipse RCP的富客户端Web程序,并将其与Spring框架进行了有效整合。这种方式不仅能够充分发挥Spring在服务端的优势,还能充分利用Eclipse RCP在客户端方面的强大功能,为...

    Spring Recipes: A Problem-Solution Approach, Second Edition

    * Building modular services using OSGi with Spring DM and Spring Dynamic Modules and SpringSource dm Server. * Delivering web applications with Spring Web Flow, Spring MVC, Spring Portals, Struts, ...

    example-spring-boot-embedded-felix:测试如何将Apache Felix嵌入到Spring Boot应用程序中

    运行嵌入式Apache Felix OSGI容器的示例Spring Boot Web应用程序 这个想法是能够: 加载运行嵌入式Felix Framework的基本Spring Boot App。 使用标准的注解(例如Spring Web控制器和ServletFilter等),使用普通...

    virgo编程手册.pdf

    手册涵盖了从环境搭建到应用程序部署的全过程,是一份不可多得的学习资料。 ### 核心知识点 #### 1. **Virgo Web Server(VWS)概述** - **定义与特性**:Virgo Web Server(VWS)是基于OSGi规范构建的,旨在...

    04 Java基础-springboot1

    Spring Factories是Osgi服务的实现,允许我们在不修改代码的情况下动态扩展应用。 总结起来,Spring Boot的核心在于它的自动配置和简洁的启动方式。`@SpringBootApplication`注解和`SpringApplication.run()`方法是...

    Spring Recipes A Problem-Solution Approach [英文原版]

    One of the first (if not the first) books on the latest Spring 3.x, and the first Spring code Recipes book focused on Spring Web-tier development The Spring framework is growing. It has always been ...

    IDEA教程中文版。

    - **Vaadin**: 支持 Vaadin 框架,这是一个基于 GWT 的 Web RIA(Rich Internet Application)框架。 - **Velocity**: 支持 Velocity 模板引擎。 #### 二、配置建议 - **选择适合自己的插件**: 根据项目需求和个人...

    各种在线api

    2.5版本的Spring提供了强大的依赖注入(DI)和面向切面编程(AOP)功能,以及对Web应用的全面支持,包括MVC控制器、视图解析器等,大大提升了应用的可测试性和可维护性。 ### Struts Struts框架分为两个主要版本:...

    Jetty中文手册

    如何让一个应用响应一个特定端口 使用JNDI 使用JNDI 在JNDI中配置数据源(DataSource) 内嵌Jetty服务器 内嵌Jetty教程 内嵌Jetty的HelloWorld教程 内嵌Jetty视频 优化Jetty 如何配置垃圾收集 如何配置以支持高负载 ...

    H2数据库官方文档(English)

    - **嵌入H2到应用中**(Embedding H2 in an Application):文档将提供如何将H2数据库嵌入到Java应用程序中,并启动和使用H2控制台应用程序的详细步骤。 - **H2控制台应用程序**(The H2 Console Application):...

    Onboard插件编程指南1

    - **WEB-INF**:存放Spring的配置文件,如applicationContext.xml、applicationOSGI.xml、applicationSecurity.xml、dispatcher-servlet.xml和web.xml,分别处理Bean声明、OSGI服务引用、安全认证和Web配置。...

    JAVA开源软件分类

    - **OSGi**:为Java平台定义了一个动态模块系统,Equinox 和 SpringDM 是其中两个实现。 - **SOA框架**:如Apache Tuscany,用于构建服务导向架构(SOA)应用。 - **P3:特定领域框架** - **Flex/Sliverlight**:...

    Java EE 学习方向

    - WebService、SOA(Service-Oriented Architecture)、ESB(Enterprise Service Bus)、OSGI(Open Service Gateway Initiative)、EAI(Enterprise Application Integration)等架构概念。 - **面向资源架构** ...

    eclipse Java开发

    12. **部署与发布**:对于Web应用,Eclipse可以连接到应用服务器(如Tomcat、Jetty),进行应用的部署和调试。 13. **Problems视图和Error Log视图**:显示项目中存在的问题和错误,便于定位和修复。 14. **...

    基于Java通用多模块后台管理系统源代码

    常见的Java模块化框架有Spring Boot和OSGi,它们通过定义清晰的接口和依赖关系,使得模块间的交互更加有序。本项目可能采用了Spring Boot,它简化了Spring框架的配置,并集成了多种微服务组件,如数据访问、安全控制...

Global site tag (gtag.js) - Google Analytics