- 浏览: 1149113 次
- 性别:
- 来自: 火星郊区
博客专栏
-
OSGi
浏览量:0
文章分类
- 全部博客 (695)
- 项目管理 (48)
- OSGi (122)
- java (79)
- Vaadin (5)
- RAP (47)
- mysql (40)
- Maven (22)
- SVN (8)
- 孔雀鱼 (10)
- hibernate (9)
- spring (10)
- css (3)
- 年审 (6)
- ant (1)
- jdbc (3)
- FusionCharts (2)
- struts (4)
- 决策分析 (2)
- 生活 (10)
- 架构设计 (5)
- 破解 (2)
- 狼文化 (4)
- JVM (14)
- J2EE (1)
- 应用服务器 (1)
- 我的链接 (5)
- 数学 (2)
- 报表 (1)
- 百科 (6)
- Flex (7)
- log4j (2)
- PHP (1)
- 系统 (2)
- Web前端 (7)
- linux (6)
- Office (1)
- 安全管理 (5)
- python (2)
- dom4j (1)
- 工作流 (3)
- 养生保健 (4)
- Eclipse (8)
- 监控开发 (1)
- 设计 (3)
- CAS (1)
- ZK (41)
- BluePrint (3)
- 工具 (1)
- SWT (7)
- google (2)
- NIO (1)
- 企业文化 (2)
- Windoes (0)
- RCP (7)
- JavaScript (10)
- UML (1)
- 产品经理 (2)
- Velocity (10)
- C (1)
- 单元测试 (1)
- 设计模式 (2)
- 系统分析师 (2)
- 架构 (4)
- 面试 (2)
- 代码走查 (1)
- MongoDB (1)
- 企业流程优化 (1)
- 模式 (1)
- EJB (1)
- Jetty (1)
- Git (13)
- IPV6 (1)
- JQuery (8)
- SSH (1)
- mybatis (10)
- SiteMesh (2)
- JSTL (1)
- veloctiy (1)
- Spring MVC (1)
- struts2 (3)
- Servlet (1)
- 权限管理 (1)
- Java Mina (1)
- java 系统信息 (6)
- OSGi 基础 (3)
- html (1)
- spring--security (6)
- HTML5 (1)
- java爬虫搜索 (1)
- mvc (3)
最新评论
-
Tom.X:
http://osgia.com/
将web容器置于OSGi框架下进行web应用的开发 -
chenyuguxing:
你好, 为什么我的bundle export到felix工程中 ...
在Apache Felix中运行bundle -
string2020:
<niceManifest>true</ni ...
Bundle Plugin for Maven -
jsonmong:
OSGI,是未来的主流,目前已相当成熟。应用OSGI比较好的, ...
基于OSGi的声明式服务 -
zyhui98:
貌似是翻译过来的,有很少人在linux上做开发吧
如何成为“10倍效率”开发者
virgo server的前身是spring dm server,是由spring贡献给eclipse的一个项目,是一个完整的基于OSGI的应用服务器。
spring tool suite 提供了spring dm server的插件,使服务器的配置和应用的部署都变得简单。
本文描述virgo server的大体配置
(1)下载vrigo server 插件
这个已经在http://georgezeng.iteye.com/blog/1129181 中做过介绍了,这里不再熬述。
(2)virgo server的配置页
新建一个virgo server实例。如图,servers插件中加入了一个vrigo server实例
通过双击该实例打开下面的配置页
- General Information,Publishing,Timeouts
与其它的server配置并无区别,不做介绍
- Redeploy Behavior
这里应该理解为Bundle
Refresh。这里是一个过滤文件列表的配置,即当你修改了某个bundle项目的资源文件时,是否对该bundle进行重新的refersh操作。如
果在这个文件列表中加入了你希望过滤的文件类型,比如*.html,那么此时你修改html文件将不会对bundle进行refresh,但是文件依然会
被部署到服务器的bundle实例中。
为什么这么做呢?比如你在开发web模块,每当你修改一次html或者jsp的时候就server就重新对bundle进行refresh的话,那么相当于你重启了web应用,那将是非常蛋疼的事情。
注:这里默认有对xml文件进行过滤,但是spring的xml文件比较特殊,修改它会导致Refresh。
- Deployer Control
这个是与server进行通信的端口,通过它对server进行各种OSGI 控制台命令的操作
- Artefact Deployment Order
这里Artefact是Bundle、PAR、Plan的总称(PAR和Plan后面会提到),这里是对Artefact进行一个全局的顺序配置,即server在启动的时候对这些Artefact进行一个顺序激活。
- Server Startup Configuration
1) Tail application trace files into Console view:
跟踪应用的日志输出到控制台。不过实际使用没有任何效果,所以我们需要手动设置。
server默认将sys.out和sys.err都重定向到日志文件中了,开发的时候我们最好把这个特性取消,这样就不需要跑到相应的目录下去看日志文件,可以马上从控制台看到结果。
打开%VIRGO_SERVER_HOME%/config/org.eclipse.virgo.medic.properties文件,修改两行配置:
log.wrapSysOut=false
log.wrapSysErr=false
保存即可
2) Start server with -clean option
当勾选了这个选项后,server将会每次启动服务器的时候清空work目录(这个目录跟tomcat中的work很相似,但是它存放了更多的内容,稍后再讲)
这个章节来看看virgo server的目录结构,如有错漏请指正。
bin目录用于存放服务器的执行文件,其中startup是用于启动服务器的脚本,shutdown则是停止服务器的脚本。(脚本在linux和windows下注意使用不同的后缀名,例如startup.sh或startup.bat,以下皆省略)
在(1)中提到了config目录,这个目录是用于配置服务器的,是服务器默认读取配置信息的地方,可以根据这个目录复制粘贴一个新的配置目录用于配置不同的服务器实例。
以上是virgo server的根目录下的所有内容,这里只讲几个主要的目录。
(1) bin目录
bin目录用于存放服务器的执行文件,其中startup是用于启动服务器的脚本,shutdown则是停止服务器的脚本。(脚本在linux和windows下注意使用不同的后缀名,例如startup.sh或startup.bat,以下皆省略)
(1.1)启动服务器,以默认的方式
%virgo_server_home%bin/startup
(1.2)启动服务器,并清空work目录的内容
%virgo_server_home%bin/startup -clean
(1.3)启动服务器,进行远程调试
%virgo_server_home%bin/startup -debug <port> (-suspend)
这种方式是用于在eclipse中进行远程调试
port参数如果不添加则默认是8000端口,否则就是指定的端口号
括号里的suspend参数如果添加了,则server不会真正启动,服务器会被挂起,直到某个远程调试进程访问了服务器才会开始真正的启动,这种方式对于在启动期间进行错误诊断很有用。
(1.4)启动服务器,并设置jmx远程访问端口
%virgo_server_home%bin/startup -jmxport <port>
通过JMX对其进行访问,可以使用jconsole或者其它的JMX访问管理工具对其进行监控。
如果是本地监控,则不需要添加jmxport参数和端口,就可以直接访问,如果是远程监控,则需要加上这个参数,并设置端口号,默认的帐号和密码是admin/springsource
注:可以通过bin目录下的jconsole脚本启动jconsole
(1.5)启动多个服务器实例
%virgo_server_home%bin/startup -configDir <dir>
通过加入configDir参数来改变服务器的默认的配置路径,每个服务器配置启动时就是一个独立的服务器实例,因此一个服务器可以启动多个不同的实例,默认的配置路径是config目录
(1.6)停止服务器
%virgo_server_home%bin/shutdown (-immediate
)(-jmxport <port>
)
immediate参数的加入迫使服务器立即关闭;
如果在启动时加入了额外的jmxport的参数,那么在关闭的时候也需要指定端口
(1.7)不启动服务器清空work目录
%virgo_server_home%bin/startup -clean -noStart
这是一种特殊的启动方式,主要目的是为了清空work目录,服务器不会真正被启动
(2)config目录
在(1)中提到了config目录,这个目录是用于配置服务器的,是服务器默认读取配置信息的地方,可以根据这个目录复制粘贴一个新的配置目录用于配置不同的服务器实例。
Artifact的概念
这里先讲一下Artifact,后面的配置都将与这个有关。
Artifact在这里可以理解为virgo server的应用资源,分为5种
1)osgi bundle
2)virgo的配置文件(*.properties)
3)PAR资源(vrigo的一种应用的打包形式,类似WAR或者JAR,作为一个整体发布)
4)PLAN资源(virgo的另一种应用的打包形式,这种形式不是物理意义上的打包,而是一种通过XML文件进行声明的打包,即内容在物理上是原始的,通过PLAN完成了整体发布)
5)library资源(jar包)
Repository的概念
一个repository可以包含多个artifact,即repository是一个资源库,可以为服务器配置多个不同的资源库,供不同的应用或服务器实例使用。
对Repository内容的修改(即添加、替换或删除资源)都不会影响到服务器中正在运行的artifact(即应用)的部署,刷新或者卸载。
Repository分成了3种类型
1)external
指定一个目录(将会包含所有的子目录)作为存放的位置,可以通过设置文本模式匹配来进行目录里的资源筛选,只有匹配成功的才会被视为artifact,从而决定哪些成为external的资源。
这种资源将会在启动服务器的时候建立一些index文件存放于work目录(这种情况只会在work目录还没有相对应的index文件的情况下,即首次启动服务器或者清空过work目录),并保存其副本(可使用的形式)在work目录中,
服务器在每次启动的时候将通过这些index文件进行比较,已经扫描过的资源将不会重复解析加载,只会加载尚未加入index中的资源。
配置如下:
<repository-name>.type=external
<repository-name>.searchPattern=repository/ext/*
注:<repository-name>表示自定义的资源库名称;
type用于指定的资源库类型;
searchPattern用于指定资源库的目录地址,这个地址是相对于服务器安装路径的,即全路径为%vrigo_server_home%reposiroty/ext,*表示当前目录下所有的资源文件都将可用,可以通过其它文本模式进行匹配过滤。
2)watched
指定一个目录(仅扫描当前目录,不会包含其子目录)作为存放的位置,不允许通过文本模式匹配的方式来进行筛选,在这个目录下的所有资源都将被扫描作为artifact。
服务器会定期扫描此类目录,间隔扫描的时间通过配置完成;当有应用被部署或者刷新或者卸载的时候也会触发其重新进行扫描。
配置如下:
<repository-name>.type=watched
<repository-name>.watchDirectory
=repository/usr
<repository-name>.watchInterval
=30
注:watchDirectory用于指定资源库的目录,这里只能指定到目录名,不能使用通配符进行文本匹配;
watchInterval用于指定扫描的间隔时间,单位是秒,如果不设置默认是5秒
3)remote
这是一种特殊的repository,用于提供给客户端(即另一个virgo server实例)获取远程资源到其本地。一般作为资源服务器。
客户端的配置如下:
<repository-name>.type=remote
<repository-name>.uri
=<uri>
<repository-name>.indexRefreshInterval
=30
注:uri用于指定资源服务器提供的资源链接;
indexRefreshInterval用于以指定的间隔时间对远程的资源重新进行内容匹配,单位是秒,如果不设置默认是5秒
资源服务器端的配置远程资源设置可以是external或者watched的,配置跟上述是一样的
(1)org.eclipse.virgo.apps.repository.properties
该文件用于资源服务器配置提供给客户端的资源库的信息。例如:
文件的内容默认如下:
hosted-repository.type=external
hosted-repository.searchPattern=repository/hosted/*
上述配置表示客户端将可以访问hosted目录下的所有资源。
(2)org.eclipse.virgo.medic.properties
该文件用于配置日志流
文件内容如下:
dump.root.directory=serviceability/dump
log.wrapSysOut=true
log.wrapSysErr=true
log.dump.level=DEBUG
log.dump.bufferSize=10000
log.dump.pattern=[%d{yyyy-MM-dd HH:mm:ss.SSS}] %-28.28thread %-64.64logger{64} %X{medic.eventCode} %msg %ex%n
建议在开发阶段将log.wrapSysOut和log.wrapSysErr的值设置为false,让其结果输出到控制台,便于跟踪。
(3) org.eclipse.virgo.repository.properties
该文件跟org.eclipse.virgo.apps.repository.properties是类似的,用于配置本地资源
评论
1 楼
liuyiyou
2012-07-20
Caused by: org.eclipse.gemini.web.core.WebApplicationStartFailedException: org.eclipse.gemini.web.core.spi.ServletContainerException: Web application at '/formtags-war-3.0.0.RELEASE' failed to start. Check the logs for more details.
at org.eclipse.gemini.web.internal.StandardWebApplication.start(StandardWebApplication.java:108)
at org.eclipse.virgo.web.core.internal.WebBundleLifecycleListener.onStarted(WebBundleLifecycleListener.java:122)
... 8 common frames omitted
Caused by: org.eclipse.gemini.web.core.spi.ServletContainerException: Web application at '/formtags-war-3.0.0.RELEASE' failed to start. Check the logs for more details.
at org.eclipse.gemini.web.tomcat.internal.TomcatServletContainer.startWebApplication(TomcatServletContainer.java:125)
at org.eclipse.gemini.web.internal.StandardWebApplication.start(StandardWebApplication.java:91)
... 9 common frames omitted
这是什么原因?这个war文件是一个标准的war文件。在Tomcat上能运行
at org.eclipse.gemini.web.internal.StandardWebApplication.start(StandardWebApplication.java:108)
at org.eclipse.virgo.web.core.internal.WebBundleLifecycleListener.onStarted(WebBundleLifecycleListener.java:122)
... 8 common frames omitted
Caused by: org.eclipse.gemini.web.core.spi.ServletContainerException: Web application at '/formtags-war-3.0.0.RELEASE' failed to start. Check the logs for more details.
at org.eclipse.gemini.web.tomcat.internal.TomcatServletContainer.startWebApplication(TomcatServletContainer.java:125)
at org.eclipse.gemini.web.internal.StandardWebApplication.start(StandardWebApplication.java:91)
... 9 common frames omitted
这是什么原因?这个war文件是一个标准的war文件。在Tomcat上能运行
发表评论
-
关于Felix Log Service
2012-12-07 16:44 1567OSGi服务纲要规范中定义了服务于OSGi平台的通用日志服 ... -
Maven 3 Felix 4 Eclipse 的搭建与部署(部分转载自别人文章)
2012-10-18 10:24 20324.1.开发环境搭建 4.2开发工具 Maven 3 F ... -
【绝对路径】OSGi环境中获取Plugin/Bundle中文件资源的绝对路径
2012-10-08 10:53 2492摘要:在进行Eclipse RCP开发的过程中,需要使用一 ... -
OpenCore:基于OSGi开发纯插件体系结构的WEB应用程序
2012-09-21 17:46 1423随着OSGi/Equinox逐渐成为Java EE服务端的基础 ... -
OSGi技术在Java Web开发中的应用
2012-09-20 11:26 1411随着 Java SE 对模块化功能原生支持的一再推迟(据最 ... -
OSGI典型的应用案例
2012-09-20 11:26 1634OSGI典型的应用案例主要有两个:分别是Eclipse和BMW ... -
OSGi特点
2012-09-20 11:26 12491、JRE版本无关性。虽然Java一直被人们认为是“Write ... -
OSGI与JMX 的关系
2012-09-19 17:09 1058不过重点是: JMX 本来设计的用途就只为了管理,我们不 ... -
在equinox环境开发web应用的"利器" -- registerResources()方法 详解
2012-09-19 17:07 1227registerResources()方法详解 1、简介 ... -
在equinox环境开发web应用的"利器" -- 序
2012-09-19 17:05 1362在equinox环境中开发web应用必须要借助一些工具包提供的 ... -
equinox环境下web应用资源的部署
2012-09-19 17:04 1307osgi的equinox实现环境下,web服务器和web应用都 ... -
OSGi产生的背景--在繁荣的混乱之中走出困惑
2012-09-19 16:58 1165软件的复杂性正在以惊 ... -
将web容器置于OSGi框架下进行web应用的开发
2012-09-16 14:26 3539将web容器置于OSGi框架下,其实就是将web容器做成OSG ... -
在Eclipse中开发OSGi Bundle
2012-09-16 14:26 1330Eclipse为开发OSGI Bundle提供了良好的支持,它 ... -
【第一代服务注册形式】 - 将一个Bundle注册为服务
2012-09-14 10:09 11551、创建业务接口类及其实现类 Java代码 ... -
Declarative Services规范简介及应用
2012-09-14 10:08 1421Declarative Services 是一 ... -
用FileInstall管理Bundle的动态安装、启动、卸载
2012-09-14 10:07 13321、文件目录如下: F:\study_osgi ... -
服务工厂 - Bundle消费者返回不同的服务对象
2012-09-14 10:03 1207一般情况下,服务对象在注册后,任何其它的Bundle在请求 ... -
服务跟踪(ServiceTracker)
2012-09-14 09:58 1159当多个Bundle使用同一 ... -
OSGi容器中Bundle之间Synchronous Communication
2012-09-11 17:07 1560OSGi Core定义了一个服务层,提供了一个Bundl ...
相关推荐
5. `doc`目录:可能包含Virgo Server的用户指南、API文档和技术参考。 6. `lib`目录:存放运行时所需的库文件,包括Virgo Server的实现库和依赖的第三方库。 在实际使用中,开发者首先需要解压这个压缩包,然后通过...
在本文中,我们将深入探讨如何基于VirgoServer进行Spring Osgi Web开发,这是一个涉及OSGi容器、Spring框架和Web应用程序的集成技术。首先,我们需要确保拥有正确的开发环境和工具,包括Spring Tool Suite (STS),...
【最新virgo-tomcat-server】是一个专为Apache Tomcat设计的服务器扩展,它提供了更为丰富和高级的服务管理功能,增强了Tomcat在企业级应用部署中的能力。Virgo服务器是SpringSource公司(现已被VMware收购)开发的...
【最新virgo-jetty-server】是一款专为Jetty设计的Virgo服务器,它提供了一种高效、可扩展的运行环境,使得基于Java技术的应用...通过深入学习和熟练掌握virgo-jetty-server的使用,可以显著提升项目开发和运维的效率。
基于VirgoServer进行Spring Osgi Web开发需要配置VirgoServer开发环境,使用Maven和Eclipse Virgo Tools,创建Bundle Project,并配置Spring配置文件。同时,需要实现Servlet类,用于处理请求,并配置classpath和...
5. **日志和调试**:学会在VirgoServer中配置和使用日志系统,以及进行有效的调试。 通过以上讲解,我们可以看到基于VirgoServer的Spring OSGi Web开发涉及了模块化、服务化、动态部署等多个核心概念。掌握这些知识...
在实际使用中,Virgo Web Server的一些关键特性包括: 1. **OSGi支持**:Virgo采用了Equinox OSGi实现,提供了一个模块化的运行时环境,使得应用被分解为独立的、互相隔离的模块。 2. **Spring应用程序上下文**:...
《Virgo编程手册》是专为开发者们设计的一份详尽指南,旨在深入解析Virgo这一强大企业级应用服务器的特性和使用方法。本手册由多位行业专家共同编撰,包括Ramnivas Laddad、Colin Yates、Sam Brannen、Rob Harrop等...
在Virgo中如果使用snaps对Web模块进行动态管理,可以使用官方提供的snaps进行开发,但是官方只提供了Tag标签的实现,这个jar包是提供根据host Web Bundle获取子Web Bundle的方法
为了在Virgo中使用Hibernate,我们需要找到适合OSGi环境的Hibernate OSGi bundles。这些bundles通常包含了Hibernate的核心库,以及其依赖的JPA、JDBC和其他相关库的OSGi化版本。 以下是添加Hibernate到Virgo的基本...
Virgo服务器使用了Apache Felix或Equinox等OSGi框架,这些框架提供了运行和管理bundle的基础。 Virgo-Bin包的使用者需要熟悉如何配置服务器,这可能涉及到修改服务器配置文件,比如`config.properties`,以设置端口...
Virgo分屏软件的使用方法非常直观。首先,用户可以通过双击“virgo.exe”文件启动程序。启动后,软件会以托盘图标的形式存在,右键点击图标可弹出菜单,选择想要的分屏模式。常见的分屏模式包括左右对半分、上下对半...
工作区间工具 virgo
值得注意的是,尽管Virgo提供了方便快捷的任务管理方式,但使用任何第三方工具都可能存在一定的风险,比如可能与某些应用程序不兼容,或者可能对系统的稳定性造成影响。因此,在安装和使用Virgo前,建议先备份重要...
因此,在将Virgo01解压并应用到项目之前,应该确认其使用权限,避免潜在的法律纠纷。 在实际应用中,字体的选择会根据目标受众、品牌调性、阅读距离等因素进行。例如,标题通常会选择有冲击力的粗体或特别设计的...
virgo是一款 Windows 下的极简虚拟桌面,源程序自身只有 7KB,支持 4 个虚拟桌面以及快捷键操作。 virgo极简到只有一个任务栏图标,连右键菜单都没有。 所有操作通过快捷键完成: ALT 1..4 -> 切换 1 .. 4 ...