- 浏览: 2870131 次
- 性别:
- 来自: 武汉
文章分类
- 全部博客 (1173)
- 名言警句 (5)
- 心情随笔 (50)
- 数据库 (57)
- Java基础 (241)
- J2EE框架 (91)
- 数据结构 (12)
- 程序设计 (21)
- WEB技术 (128)
- 网络日志 (12)
- IT资讯 (247)
- linux (64)
- solaris (2)
- 其它 (143)
- WebService (4)
- 日语学习 (2)
- 机器人 (5)
- Android (5)
- cgywin (3)
- Game (1)
- DWR (1)
- spring (8)
- canvas (1)
- Guava (3)
- Modbus (5)
- 测试 (6)
- mongodb (9)
- Quartz (2)
- Cron (1)
- windows (2)
- 持续集成 (1)
- bootstrap (3)
- 结对编程 (1)
- nodejs (1)
- Netty (1)
- 安全 (3)
- webstorm (2)
- sparkline (1)
- Job (1)
- git (3)
- Maven (3)
- knockout (5)
- jquery (1)
- bower (1)
- docker (1)
- confluence (4)
- wiki (1)
- GoogleMap (1)
- jekyll (10)
- ruby (2)
- npm (3)
- browserify (1)
- gulp (3)
- openwrt (1)
- discuz (3)
- 输入法 (1)
- JPA (1)
- eclipse (2)
- IntelliJ (1)
- css (1)
- 虚拟机 (1)
- 操作系统 (1)
- azkaban (2)
- scrum (1)
最新评论
-
pangxiea_:
你好, 想请问一下 Linux下 这么使用rxtxcomm 在 ...
使用Java进行串口通信 -
abababudei:
请教一下,这个您是怎么解决的:/dev/ttyS2enteri ...
Java应用程序的MODBUS通讯 -
xuniverse:
hannibal005 写道楼主,我问下 request.se ...
用javascript与java进行RSA加密与解密 -
atxkm:
找了一下午,终于找到了
gulp 拷贝文件时如何移除文件目录结构 -
kalogen:
gtczr 写道非常感谢,经过我自己的修改,已经完美实现。发出 ...
用javascript与java进行RSA加密与解密
本文介绍在Eclipse里如何配置一个简单的基于Eclipse Equinox OSGi实现的Web应用程序,在它的基础上可以构造更加复杂的应用,本文使用的是Eclipse 3.3.1版本,如果你的Eclipse版本在3.2.0或以上应该都可以。
一、支持静态页面和Servlet
1. 创建一个新的plugin项目, net.bjzhanghao.osgi.test,在向导第一步里选中“This plug-in is target,在下一步的“Plug-in Options”里选中“Generate an activator”。
2. 在例子项目的MANIFEST.MF里添加如下依赖项目,这些项目都是Eclipse自带的:
org.eclipse.equinox.http.servlet
org.mortbay.jetty
org.apache.commons.logging
javax.servlet
org.eclipse.equinox.http.registry
3. 在例子项目根目录下创建一个放置web文件的目录,如“web_files”,在这个目录下写一个简单的index.html文件。
4. 为项目建一个plugin.xml文件,内容如下:
<extension point="org.eclipse.equinox.http.registry.resources">
<resource
alias="/web"
base-name="/web_files"/>
</extension>
</plugin>
注意,这时若MANIFEST.MF里提示错误,只要在Bundle-SymbolicName这一行后面加上“;singleton:=true”即可解决。
5. 现在可以启动这个应用程序了。在Eclipse菜单里选择“Run->Open Run Dialog...”,在左边的 “OSGi Framework”项下创建一个新的启动配置项,在右边先点“Deselect All”清空所有复选框,然后在Workspace下选中 自己的osgi项目,再点“Add Required Bundles”按钮,Eclipse会自动把所依赖的项目选中。 最后按“Debug”按钮启动,内嵌的jetty和我们的项目会一起被启动。
6. 打开浏览器,输入“http://localhost/web/index.html”应该可以看到index.html里的内容。
以上只验证了静态页面,现在来配置一个servlet看看。
7. 在项目里创建一个继承自HttpServlet的类,覆盖doGet()方法,内容是在网页上打印一些文本。
8. 在项目的plugin.xml里添加下面的内容,这些内容指定了servlet的访问路径和实现类:
<servlet
alias="/exampleServlet"
class="net.bjzhanghao.osgi.example.servlet.ExampleServlet"/>
</extension>
9. 重新启动项目,在浏览器里输入“http://localhost/exampleServlet”,应该可以看到servlet的输出。
二、支持JSP页面
10. 在index.html所在目录下创建一个简单的jsp文件index.jsp
11. 打开项目的MANIFEST.MF文件,添加如下项目依赖:
org.apache.jasper,
org.eclipse.equinox.jsp.jasper.registry,
javax.servlet.jsp,
org.apache.commons.el,
org.eclipse.equinox.http.helper,
org.eclipse.osgi,
org.eclipse.osgi.services
其中org.eclipse.equinox.http.helper需要从cvs里下载得到(目前是在/cvsroot/eclipse下的 equinox-incubator目录里,以后可能会直接放到/cvsroot/eclipse下)。
12. 修改Activator,目的是注册一个处理扩展名为.jsp类型的servlet,感觉这一步以后应该有更简单的方法,例如通过扩展点。
private ServiceTracker httpServiceTracker;
String jspContext = "/jsps";
String jspFolder = "/web_files";
public void start(BundleContext context) throws Exception {
httpServiceTracker = new HttpServiceTracker(context);
httpServiceTracker.open();
}
public void stop(BundleContext context) throws Exception {
httpServiceTracker.open();
}
private class HttpServiceTracker extends ServiceTracker {
public HttpServiceTracker(BundleContext context) {
super(context, HttpService.class.getName(), null);
}
public Object addingService(ServiceReference reference) {
final HttpService httpService = (HttpService) context
.getService(reference);
try {
HttpContext commonContext = new BundleEntryHttpContext(context
.getBundle(), jspFolder);
httpService.registerResources(jspContext, "/", commonContext);
Servlet adaptedJspServlet = new ContextPathServletAdaptor(
new JspServlet(context.getBundle(), jspFolder),
jspContext);
httpService.registerServlet(jspContext + "/*.jsp",
adaptedJspServlet, null, commonContext);
} catch (Exception e) {
e.printStackTrace();
}
return httpService;
}
public void removedService(ServiceReference reference, Object service) {
final HttpService httpService = (HttpService) service;
httpService.unregister(jspContext);
httpService.unregister(jspContext + "/*.jsp");
super.removedService(reference, service);
}
}
}
13. 打开Debug对话框,选中workspace里的例子osgi项目和org.eclipse.equinox.http.helper项目,再按“Add Required Bundles”按钮,然后启动程序。
14. 在浏览器里输入“http://localhost/jsps/index.jsp”,应该可以看到jsp输出。
例子项目下载(链接)。
参考链接:
发表评论
-
spring mvc @controller unit test
2013-11-20 14:14 38861. spring mvc controller imple ... -
Tomcat 生产服务器性能优化
2013-07-23 06:45 1007试想以下这个情景:你已经开发好了一个程序,这个程序的排版很不 ... -
Loading Multiple Spring Application Contexts with their own ClassLoader
2013-07-11 20:45 1072package de.incompleteco.spring ... -
ActiveMQ JMS的测试
2011-04-06 18:15 3918有二种方式可以测试。 1. 透过testng, 在测试类中完 ... -
Maven系列2--pom.xml 配置详解
2011-01-06 18:00 3176<project xmlns="http ... -
fisheye2.3.6 安装笔记
2010-09-16 20:25 2235一. 准备工作 1. 下载fisheye ... -
服务器端编程的十大性能问题
2010-09-15 12:01 1233今年5 月底,瑞士计算 ... -
JMX in spring 配置
2010-09-07 12:00 3050JConsole中的连接:简单的localhost:1099 ... -
Ehcache 2.0:后写式缓存和JTA支持
2010-05-22 11:13 1854开源缓存框架Ehcache 最 ... -
Twitter系统运维经验
2010-04-12 22:24 1551最近看到的另外一个 ... -
采用OSGi框架开发项目的十个问题
2010-03-21 18:08 1462近期,InfoQ针对Java模块 ... -
IBM和Eclipse加大对OSGi的支持
2010-03-21 18:05 1272为Java提供模块性的OSGi,正在受到IBM和Eclipse ... -
Castor功能与应用参考
2010-03-12 12:48 36271. 项目简介Castor是一个开源的Java项目 ... -
hibernate之 DetachedCriteria实现多表查询
2009-07-25 17:13 13092DetachedCriteria detachedCriter ... -
spring AOP 理论知识点总结
2009-07-24 17:47 21741.1 AOP 的概念 ... -
web.xml 中的listener、 filter、servlet 加载顺序及其详解
2009-07-02 16:14 4124在项目中总会遇到一些 ... -
maven笔记
2009-06-22 22:14 1530mvn package : 项目打包 mvn help:ef ... -
利用maven构建多模块项目
2009-06-17 14:28 53611. 先单独构建各模块为一个独立的项目。 jar项目: m ... -
Maven基础
2009-06-17 12:58 1859下载Maven安装文件。 定义环境变量M2_HOME到pat ... -
安装M2eclipse步骤
2009-06-15 14:45 38221.下载下列所需文件 eclipse3.4.2 ...
相关推荐
OSGI(Open Services Gateway Initiative)是一种模块化系统和Java服务框架,它允许应用程序以模块化的方式构建,每个模块称为一个bundle。在OSGI环境中,你可以动态地安装、启动、更新和卸载这些bundle,而无需重启...
OSGi(Open Service Gateway Initiative)是一种模块化系统,用于Java应用程序的组件化和动态管理,而Equinox是OSGi规范的一种实现,广泛应用于Eclipse IDE、服务器平台以及嵌入式系统。 【描述】虽然描述部分为空...
文件“tomcat_osgi.doc”可能包含详细的步骤指南,涵盖了配置Tomcat以支持OSGi、安装必要的库、配置OSGi框架(如Equinox或Felix)、以及如何打包和部署OSGi bundle到Tomcat等内容。文档可能还会讲解如何解决常见的...
OSGi(Open Services Gateway Initiative)是一种Java模块化系统,它允许开发人员将应用程序分解为一组可独立更新和管理的小型服务。在Web容器中部署OSGi应用,特别是像Tomcat这样的流行Servlet容器,可以提高应用的...
ServletBridge是OSGI服务器的一个关键特性,它允许基于OSGI的Web应用程序在Servlet容器(如Tomcat、Jetty等)中运行。通过ServletBridge,开发者可以将OSGI服务与传统的Web应用部署模型相结合,提供更灵活的应用管理...
Jetty是一款轻量级、高性能的HTTP服务器和Servlet容器,它能够直接在OSGi环境中运行,提供对Web应用程序的支持。在本示例中,我们将探讨如何在OSGi环境下配置Jetty 9.3.10,创建一个注册Servlet的工程,并进行Jetty...
这个压缩包可能包含了预配置的Tomcat服务器,示例bundle,以及必要的文档或引导步骤,帮助开发者立即开始他们的OSGi开发之旅。 集成OSGi的Tomcat服务器有一些显著优点,如: 1. **模块化**:允许开发人员将复杂的...
OSGi是一种模块化系统,它允许Java应用程序以组件的形式进行构建和部署,便于管理和更新。 描述中的"源码,文档,配置文件,给初学osgi的朋友"进一步确认了资源的内容,包括源代码、相关文档、配置文件,这些都是学习...
示例可能包含了如何配置OSGI容器、导入Jetty bundle、编写和部署Web应用以及如何在OSGI环境中启动和管理Jetty服务器的详细步骤。通过深入研究提供的源码,你可以进一步理解OSGI和Jetty的集成原理,这对于理解和开发...
首先,我们需要创建一个新的Maven项目,并选择OPS4J的Pax Construct作为构建OSGi应用程序的基础。具体步骤如下: 1. **在Eclipse中创建项目**: - 打开Eclipse,选择`File > New > Project`。 - 在弹出的窗口中...
Eclipse Equinox是基础OSGi规范的参考实现,并且是Eclipse应用程序运行的运行时环境。在Eclipse中,最小的模块化单位是插件(Plugin),在很多情况下,插件(Plugin)和模块(Bundle)这两个术语可以互换使用。 ...
在IT行业中,OSGi(Open Services Gateway Initiative)是一种模块化软件开发的标准,它允许开发者将应用程序分解为可独立更新和管理的小型组件,称为服务或bundle。这些组件可以在运行时动态地安装、卸载和升级,极...
OSGi(Open Services Gateway Initiative)是一种模块化系统和Java服务框架,它允许开发人员将应用程序分解为一组可独立更新和管理的小型、独立组件,称为bundle。这些bundle之间可以通过服务接口进行交互,使得代码...
Equinox 是一种开源的 OSGi 实现,广泛应用于各种 Java 应用程序中,特别是 Eclipse 工具集的基础。它支持模块化架构,使得应用程序可以轻松地扩展和维护。 ### 2.2 优秀特性 - **与 Eclipse IDE 的紧密集成**:...
通过理解Bundle的生命周期、服务模型以及JMX的使用,开发者可以有效地定位并解决问题,确保OSGI应用程序的稳定运行。在实践中,不断学习和熟悉OSGI的规范和最佳实践将有助于减少这类问题的发生。