Ⅰ OSGI是什么
今天在看公司的文档的时候,发现了好多不懂得名词。特别是对OSGI这个词比较的感兴趣,就到网上去查了一下他的一些资料。以我的技术水平,看了半天愣是没看明白。尽管没有看明白,但还是要写下来,免得下次要找资料的时候还是要到处乱找。
OSGI(Open Service Gateway Initiative) 它可以被看做OSGi Alliance组织;也可以认为是该组织制定的一个基于Java
a) 您可以在不重启容器的情况下,动态地安装、卸载、启动和停止您的应用程序中的不同模块;
b) 对于您应用程序中的某一特定模块,容器可以同时运行该模块的多个版本;
c) OSGi为开发嵌入式应用、移动应用、富互联网应用(RIA)提供了非常优秀的基础架构
个模块负责视图层,另一个模块负责DAO层,第三个模块负责数据访问层,如果我们使用OSGi容器来管理这些模块之间的交叉依赖,我们就可以在不用重启该
Web应用的前提下,将DAO层从速度较慢的升级到速度较快的DAO。
附:一些OSGI的资料你好,OSGI
这是一个OSGI的专题汇总。里面的资料还是很不错的
OSGI Alliance
这个是OSGI的官方网站。不过是英文的 ^_^
这个OSGI在javaEye网站上的专题。很不错,可以去看看
Ⅱ 如何开发基本OSGi的分布式SOA插件应用服务
概念不太一样 SOA是面向服务的架构,将业务逻辑提炼成共用服务,对外提供服务,也不一定就用webservice通信,也可以是socket、EJB等等。目标就是建成一个服务组件的“超市”,供别人自行选用。
Ⅲ 如何将OSGI的Bundle发布为WebService
貌似使用 cxf可以将osgi服务发布为一个webservice, 见:以 OSGi 包的形式开发和部署 Web 服务
但是我没有用过,我也有这方面的需求希望能和有经验的人士一起探讨
Ⅳ 使用OSGI开发webapp 怎么添加filter
根据你的描述: web bundle 我的实现方法是在OSGi中加入一个jetty bundle,其他bundle引用这个HttpService,并把自己加入到这个HttpService中。
Ⅳ 怎样在web页面控制osgi插件工程的开启,停止,下载和上传功能(是用sts工具开发的spring dm的插件工程)
boudle启停应该是由后台脚本控制,web页面要做控制可以往后台发送命令的形式,具体技术java调用shell命令。
Ⅵ java自定义类加载器怎么在web项目中应用
1、设置断点
2、启动servers端的debug模式
3、运行程序,在后台遇到断点时,进入debug调试状态
=============================
作用域 功能 快捷键
全局 单步返回 F7
全局 单步跳过 F6
全局 单步跳入 F5
全局 单步跳入选择 Ctrl+F5
全局 调试上次启动 F11
全局 继续 F8
全局 使用过滤器单步执行 Shift+F5
全局 添加/去除断点 Ctrl+Shift+B
全局 显示 Ctrl+D
全局 运行上次启动 Ctrl+F11
全局 运行至行 Ctrl+R
全局 执行 Ctrl+U
Ⅶ WebSphere Liberty 最新版都有什么提升
Liberty 是一款全新的轻量级应用服务器,它将用户的良好开发体验作为最主要的出发点。其主要特点和内容包括:
高模块化——该功能允许用户根据自己应用程序的需求启用或者禁用相关的 feature(所谓 feature,在这里指的是运行应用程序所需要的各种资源的支持。比如,应用程序用到了 JSP,我们就需要启动 JSP 这个 feature,如果不在需要此 feature,就可以将其禁用。通过这种模块化的控制,我们可以按需启动不同的 feature,包括 JSP, Servlet, JPA 等等,这种控制是实现轻量级应用服务器的基础)。
轻量级—— Liberty 采用了多种技术进行和优化(主要是 OSGi 的应用),与传统的 WAS 相比,极大的减少了运行时的内存消耗。
高动态性——由于采用了 OSGi 的架构,程序员在开发的时候,可以动态修改配置文件,应用程序以及服务器的运行时信息,这些修改都是实时生效的,不需要重启服务器。
快速——由于采用了高模块化的设计,Liberty 应用服务器会“按需启动”,自身消耗的系统资源很少,对执行任务的反应时间也非常短,例如,一般来说 Liberty 的启动时间小于 5 秒。
配置简单——在整个开发过程中,用户只需要和一个配置文件(server.xml)打交道,而且配置的使用也非常灵活。
尽管 Liberty 与传统 WAS 相比只是一个“小块头”,但是在 Web 和 OSGi 应用程序的开发上,Liberty 与传统 WAS 完全保持一致,在 Liberty 上开发的程序,可以直接移植到传统 WAS 上,不需要做任何的改变。相比传统 WAS 的庞大,Liberty 在为用户提供良好的开发体验上遥遥领先。
Ⅷ 如何在 WebSphere Application Server V8 中部署和管理 OSGi 应用
Blog 应用程序包里共有 5 个 bundle,但是只需要其中的四个就可以运行这个程序,因为第五个 bundle 是持久化 bundle 的更新版本,主要是用来演示如何去动态更新 OSGi bundle 的。另外,要想使 Blog 应用正常运行,还有两个与日志相关的 bundle,这两个 bundle 需要事先导入到 WAS 的内部 bundle 存储库里。以上所提到的所有资源被放在 blogSample.zip 文件中的 installableApps 文件夹里。这些 bundle 是按功能划分的:
com.ibm.samples.websphere.osgi.blog.persistence, 包含了和持久化相关的代码,同时也提供了一些接口,可以被主程序用来执行博客更新和查询功能。
com.ibm.samples.websphere.osgi.blog_1.0.0,是 Blog 应用的主程序,包含了主要的业务逻辑代码,并负责和前端 web 层与后端持久化层的交互。
com.ibm.samples.websphere.osgi.blog.web,借助 html、css 等完成前端显示的功能。
com.ibm.samples.websphere.osgi.blog.api,包含 Blog 应用所需要的 API。
com.ibm.samples.websphere.osgi.blog.persistence_1.1.0,是持久化 bundle 的更新版本,新增了对博客文章的评论服务。
Blog 提供了两种部署方式,一种是利用脚本进行完整的部署,另一种是先用脚本做一些初始的配置,如数据源的配置,然后再用 WAS 管理控制台或命令行方式去安装 Blog 应用。在部署成功以后,我们还可以对应用进行使用、维护、拆卸以及更新操作。在本文中,我们使用第二种方式来部署 Blog 应用。
在 WAS V8 中配置 Blog 应用所需资源
安装 Blog 应用包含两个部分,一部分是配置 Blog 应用所需的资源,例如建立数据库、配置数据源等;另一部分是利用 WAS 管理控制台或者命令行工具安装 Blog 应用到 WAS 上。在这里我们先介绍第一部分,第二部分穿插在后续的 WAS 对 OSGi 应用部署和管理功能介绍的篇章中。
我们使用脚本配置 Blog 应用所需的资源,这些脚本存放在 blogSample.zip 中的 scripts 目录里。其中,createBlogDb.sql 用来创建所需的 Derby 数据库和相关数据库表,blogSampleInstall.py 包含了一些 Jython 命令用来创建数据源,以及以默认的方式安装 Blog 应用。
使用脚本配置 Blog 应用
使用如下命令创建和配置 Derby 数据库(BLOGDB)以及相关数据库表
对于 Unix 系统
app_server_root/derby/bin/embedded/ij.sh scripts/createBlogDb.sql
对于 Windows 系统
app_server_root\derby\bin\embedded\ij.bat scripts\createBlogDb.sql
使用如下命令创建数据源
对于 Unix 系统
app_server_root/profiles/profileName/bin/wsadmin.sh
-f scripts/blogSampleInstall.py setupOnly serverName nodeName
对于 Windows 系统
app_server_root\profiles\profileName\bin\wsadmin.bat
-f scripts\blogSampleInstall.py setupOnly serverName nodeName
运行完上述命令后,可以登录到 WAS 控制台查看刚刚创建的数据源。导航到 Resources > JDBC > Data sources 面板:
部署你的 OSGi 应用
管理 bundle 存储库
在上文我们提到 com.ibm.samples.websphere.osgi.logging.api.jar 和 com.ibm.samples.websphere.osgi.logging.impl.jar 这两个 bundle 是 Blog 应用正常运行所不可或缺的,在安装 Blog 应用之前,需要先将这两个 bundle 导入到 WAS 的 bundle 存储库中。在这一节我们就介绍如何去管理 WAS 的 bundle 存储库。
不同的 OSGi 应用之间可以共享很多通用的 bundle,为了简化对共享 bundle 管理工作以及避免每一个 OSGi 应用都单独的去维护这些 bundle,WAS 提出了 bundle 存储库的概念。共享的 bundle 或者组合 bundle 以及第三方类库的 bundle 都可以事先导入到 bundle 存储库中,每一个 OSGi 应用只需声明对这些 bundle 的引用就可以很方便的使用 bundle 存储库里的 bundle。WAS 的 bundle 存储库包括内部存储库和外部存储库,前者是将共享的 bundle 保存在本地,而后者则可以通过添加链接(名字和 URL)使用外部的 bundle。
管理内部 bundle 存储库
使用 WAS 管理控制台管理内部 bundle 存储库
管理员可以使用 WAS 管理控制台查看已导入的 bundle 以及 bundle 的详细信息,还能通过管理控制台向存储库添加和从存储库删除 bundle。
启动 WAS 管理控制台
导航到 Environment > OSGi bundle repositories > Internal bundle repository 页面在页面中显示的列表就是已经导入到 bundle 存储库里的 bundle,如果是第一次使用,则会显示如下空白页面:
在 bundle 存储库页面可以添加、删除 bundle 或者显示 bundle 详细信息
添加单一 bundle 或者合成 bundle 到存储库
点击 New,将显示上传 bundle 的页面
在对话框里输入 bundle 或者合成 bundle 所在的路径
点击 OK,所指定 bundle 或者合成 bundle 就会被上传到 bundle 存储库
对于 Blog 应用:重复上面的操作,添加 com.ibm.samples.websphere.osgi.logging.api.jar 和 Com.ibm.samples.websphere.osgi.logging.impl.jar 到存储库中。如下图所示:
删除存储库里的 bundle,首先选中需要删除的 bundle,然后点击 Delete 即可完成操作
查看 bundle 的详细信息,点击 bundle 的名字就可以进入到 bundle 的详细信息页面
图 5. Bundle 详细信息
在完成添加和删除操作以后,需要保存修改到主配置文件中。
使用命令行管理内部 bundle 存储库
使用 wsadmin 命令行工具可以实现 bundle 的添加、删除、列表以及显示详细信息操作。由于 wsadmin 默认使用的脚本语言是 jacl,而我们使用的都是 jython 脚本或者命令,所以我们首先要将 wsadmin 的默认脚本语言修改为 jython,方法是编辑如下文件:<profile_root>\<profile_name>\properties\wsadmin.properties,修改"com.ibm.ws.scripting.defaultLang=jython"
导航到 <profile_root>\<profile_name>\bin 目录,启动 wsadmin 命令行工具:
添加单一 bundle 或合成 bundle 到内部存储库
使用 addLocalRepositoryBundle 命令添加 bundle 到存储库,命令格式如下:
AdminTask.addLocalRepositoryBundle('-file path')
该命令中只有一个参数 file,用来指定你要添加的 bundle 的路径,对于 Blog 应用,我们用如下命令依次添加上文提到的两个和 log 相关的 bundle:
AdminTask.addLocalRepositoryBundle('[-file "C:\\blogSample_v8\\blogSample\\installableApps
\\com.ibm.samples.websphere.osgi.logging.impl.jar"]')
AdminTask.addLocalRepositoryBundle('[-file "C:\\blogSample_v8\\blogSample\\installableApps\
\com.ibm.samples.websphere.osgi.logging.api.jar"]')
AdminConfig.save()
添加完以后,登录 WAS 管理控制台,导航至 Internal bundle repository 页面,您将看到两个 bundle 已经被成功添加,如图 4 所示。
显示已添加到存储库里的 bundle 列表
使用 listLocalRepositoryBundles 命令来显示已经添加成功的 bundle 列表,命令格式如下:
AdminTask.listLocalRepositoryBundles()
显示 bundle 的详细信息
使用 showLocalRepositoryBundle 命令来显示 bundle 信息,命令格式如下 :
AdminTask.showLocalRepositoryBundle( ’ -symbolicName bundle_symbolic_name
-version bundle_version ’ )
两个参数分别是要显示 bundle 的名字和版本信息。
将 bundle 从存储库删除
使用 removeLocalRepositoryBundle 或则 removeLocalRepositoryBundles 命令删除一个或多个 bundle,命令格式如下:
AdminTask.removeLocalRepositoryBundle( ’ -symbolicName bundle_symbolic_name
-version bundle_version ’ )
AdminTask.removeLocalRepositoryBundles([
’
bundle1_symbolic_name;bundle1_version
bundle2_symbolic_name;bundle2_version
bundle3_symbolic_name;bundle3_version ’
])
管理外部 bundle 存储库
对于外部 bundle 存储库,WAS 同样提供了管理控制台和命令行两种管理方式,并且对于外部库的控制和内部库的控制类似。在这里我们就不多加介绍,有兴趣的读者可以阅读本文末参考资料了解更多详细信息。
Ⅸ GlassFish是什么基于OSGi的Web服务器
GlassFish 是一个轻量级的Web2.0开发和部署平台,建立在基于OSGi的模块化架构上。开发者可以从这个支持动态扩展和可嵌入式的平台上获益,此平台还支持现存的Java Web技术,以及JRuby和Groovy。GlassFish包括哪些功能?GlassFish提供了一个基于OSGi的轻量级可扩展的核心。与GlassFish的更新中心结合,开发人员可以获得Java Web技术,动态语言支持,容易使用的管理和命令行界面。GlassFish社团正在开发一个免费,开源的Java应用服务器。这个服务器实现了Java平台中的最新特性。Java平台包括一些技术的最新版本如:◆Enterprise JavaBeans (EJB) 3.0, ◆JavaServer Faces (JSF) 1.2, ◆Servlet 2.5, ◆JavaServer Pages (JSP) 2.1, ◆Java API for Web Services (JAX-WS) 2.0, ◆Java Architecture for XML Binding (JAXB) 2.0, ◆Java Persistence 1.0, ◆Common Annotations 1.0, ◆Streaming API for XML (StAX) 1.0和其它一些新的技术。目前最新版的GlassFish技术预览版已经发布,具有高度模块化特点,扩展方便,支持java,
Ⅹ osgi新建web程序,缺少org.morbay.jetty包的依赖。
本身就带着。运行时需要明确选择jetty的相关插件。