前面文章中介绍了如何在OSGI应用中整合Spring和Mybatis框架,本篇文章开始介绍如何使用OSGI技术开发Web应用。对于传统的Java EE应用,应用中涉及到的Web元素无非就是Servlet、JSP、静态资源等,其中静态资源包括HTML页面、CSS、图片等等。当然还有Portlet、Filter、Listener等,由于不太常用,本文就不涉及这方面的内容了。

一、OSGI Web应用两种开发模式介绍

看过OSGI相关书籍的朋友应该都知道,OSGI Web应用开发有两种模式,第一种模式是在MANIFEST.MF文件中,通过一些元数据头,例如Web-ContextPath、Bundle-ClassPath等將Bundle定义为Web Application Bundle,简称WAB,然后在WAB中,可以像普通Java EE应用一样,在web.xml文件中配置Web应用的信息,然后將项目中所有的Bundle部署到应用服务器即可。由于这种方式依赖于外部的应用服务器,开发调试需要重新部署,和传统的Java EE项目相比,并没有什么特别的优势,这种开发模式本文就不做过多介绍,读者可以在网上找一些相关的资料,笔者后续如果有时间,会专门写篇文章详细介绍。

OSGI Web应用的另外一种开发模式是將Web应用服务器以Bundle的形式集成到OSGI容器(例如Equinox、Felix等)中。这种方式是笔者比较推崇的,下面会有一个小节介绍如何將Jetty服务器集成到Equinox容器中。传统的Java EE应用,除了Servlet需要在web.xml文件中声明外,JSP与静态资源只需要放在war包中,然后部署到应用服务器中,就可以在浏览器中访问(WEB-INF目录除外)。但是使用这种方式搭建Web应用环境,Servlet、JSP、静态资源统统都需要注册,相对来讲还是比较麻烦的,下面就来介绍如何將Jetty应用服务器整合到Equinox容器中。

二、將Jetty应用服务器整合到Equinox容器中

笔者选择Jetty应用服务器其实是有原因的,如果选择Tomcat或者Jboss,我们还需要另外从网上下载应用服务器的Bundle,但是Equinox框架本身就支持Jetty,下载Equinox框架,解压后如下图,它们即为Jetty应用服务器相关的Bundle。



將Jetty应用服务器整合到Equinox容器中非常简单,单击Run=>Debug Configurations菜单,进入Bundle管理工具界面,如下图:



勾选Jetty相关的Bundle,然后单击面板上的Validate Bundle按钮,如果发现有依赖问题,单击Add Required Bundles按钮即可。

接下来还需要配置应用服务器监听的端口,单击面板上的Arguments选项卡,在VM arguments输入框中增加如下参数:

-Dorg.osgi.service.http.port=8080

如下图所示:

然后单击Debug按钮,启动Equinox容器,这样Jetty应用服务器就整合到Equinox容器中了,很简单吧,我们可以打开浏览器访问http://localhost:8080/,如下图所示:

报404错误,表示找不到服务器端资源,纯属正常,本篇文章暂时介绍这么多,下篇文章继续介绍如何注册Servlet、JSP、静态资源等等。

转载请注明原文地址:http://blog.csdn.net/rongbo_j/article/details/54620177

注意:本文环境在上篇文章基础上搭建,前面部分文章提供了博文源码下载。

OSGI企业应用开发(十二)OSGI Web应用开发(一)的更多相关文章

  1. 十款让 Web 前端开发人员更轻松的实用工具

    这篇文章介绍十款让 Web 前端开发人员生活更轻松的实用工具.每个 Web 开发人员都有自己的工具箱,这样工作中碰到的每个问题都有一个好的解决方案供选择. 对于每一项工作,开发人员需要特定的辅助工具, ...

  2. 【转】十款让 Web 前端开发人员更轻松的实用工具

    这篇文章介绍十款让 Web 前端开发人员生活更轻松的实用工具.每个 Web 开发人员都有自己的工具箱,这样工作中碰到的每个问题都有一个好的解决方案供选择. 对于每一项工作,开发人员需要特定的辅助工具, ...

  3. 专题开发十二:JEECG微云高速开发平台-基础用户权限

      专题开发十二:JEECG微云高速开发平台-基础用户权限 11.3.4自己定义button权限 Jeecg中.眼下button权限设置,是通过对平台自己封装的button标签(<t:dgFun ...

  4. 敏捷宣言(Agile Manifesto)和敏捷开发十二原则

    敏捷宣言 The Agile Manifesto Individuals and interactions over Process and tools 个体与交互 重于 过程和工具 Working ...

  5. STC8H开发(十二): I2C驱动AT24C08,AT24C32系列EEPROM存储

    目录 STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解) STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解) ST ...

  6. 《Flask Web开发——基于Python的Web应用开发实践》一字一句上机实践(上)

    目录 前言 第1章 安装 第2章 程序的基本结构 第3章 模板 第4章 Web表单 第5章 数据库 第6章 电子邮件 第7章 大型程序的结构   前言 学习Python也有一个半月时间了,学到现在感觉 ...

  7. 十二、Android UI开发专题(转)

    http://dev.10086.cn/cmdn/bbs/viewthread.php?tid=18736&page=1#pid89255Android UI开发专题(一) 之界面设计 近期很 ...

  8. SpringBoot(二)Web整合开发

    Spring Boot (二):Web 综合开发 本篇文章接着上篇内容继续为大家介绍spring boot的其它特性(有些未必是spring boot体系桟的功能,但是是spring特别推荐的一些开源 ...

  9. 第十四章 web前端开发小白学爬虫

    老猿从事IT开发快三十年了,接触互联网也很久了,但自己没有做过web前端开发,只知道与前端开发相关的一些基本概念,如B/S架构.html标签.js脚本.css样式.xml解析.cookies.http ...

  10. ireport5.6+jasperreport6.3开发(二)--web开发的配置

    ireport5.6只能编译出*.jasper的报表包,最终报表需要被输出为一个doc html pdf excel等文件,这时就需要jasperreport6.5的库进行配合了. jasperrep ...

随机推荐

  1. Selenium3 + Python3自动化测试系列五——常用断言Assertion

    断言Assertion 验证应用程序的状态是否同所期望的一致. 常见的断言包括:验证页面内容,如标题是否为X或当前位置是否正确,或是验证该复选框是否被勾选. selenium 提供了三种模式的断言:a ...

  2. android(java) 开发过程中经验及总结记录

    android(java) 开发过程中经验及总结记录

  3. (转)Python的web服务器

    1.浏览器请求动态页面过程 2.WSGI Python Web Server Gateway Interface (或简称 WSGI,读作“wizgy”). WSGI允许开发者将选择web框架和web ...

  4. 分享.NET 轻量级的ORM

    ORM https://github.com/StackExchange/dapper-dot-net http://fluentdata.codeplex.com/ https://github.c ...

  5. Kafka消费异常处理

    org.apache.kafka.clients.consumer.CommitFailedException: Commit cannot be completed since the group ...

  6. linux内核学习之全局描述符表(GDT)(二)

    来源:https://www.cnblogs.com/longintchar/p/5224406.html 在进入保护模式之前,我们先要学习一些基础知识.今天我们看一下全局描述符表(Global De ...

  7. AR介绍

    AR介绍 AR全名扩增实境,是一种实时融合现实与虚拟的图像技术. AR技术的三板斧:感知(寻找目标定位位置-与环境交互),渲染(实现产品交互-与客户交互),追踪(捕捉目标运动轨迹-客户环境上下文). ...

  8. Linux 一次杀死多进程

    .- | 说明: “grep firefox”的输出结果是,所有含有关键字“firefox”的进程. “grep -v grep”是在列出的进程中去除含有关键字“grep”的进程. “-”是截取输入行 ...

  9. BEA-290074 <Deployment service servlet received file download request for file "security/SerializedSystemIni.dat". The file may exist, but download of this file is not allowed.>

    Bug 19766239 - WLS 12.1.3 - MS NOT STARTING - 'DOWNLOAD OF THIS FILE IS NOT ALLOWED' Issue is fixed ...

  10. golang实现unicode码和中文之间的转换

    将中文转换为unicode码,使用golang中的strconv包中的QuoteToASCII直接进行转换,将unicode码转换为中文就比较麻烦一点,先对unicode编码按\u进行分割,然后使用s ...