virgo server使用指南

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的目录结构,如有错漏请指正。

 



 以上是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是类似的,用于配置本地资源
virgo server virgo tomcat server, osgi, spring dynamic module, maven 立即下载

相关推荐

79.ScottPlot的MVVM实现 C#例子 WPF例子

在你的 WPF 窗口的 XAML 文件中,定义一个,并将其Content属性绑定到 ViewModel 中的属性。这样可以将WpfPlot控件动态绑定到 ViewModel。

S13461120713的博客 2571

virgo server使用指南(2)

 这个章节来看看virgo server的目录结构,如有错漏请指正。    以上是virgo server的根目录下的所有内容,这里只讲几个主要的目录。   (1) bin目录  bin目录用于存放服务器的执行文件,其中startup是用于启动服务器的脚本,shutdown则是停止服务器的脚本。(脚本在linux和windows下注意使用不同的后缀名,例如startup.sh或sta...

george_zen的专栏 357

Jlink除了调试还能干啥?用JFlash SPI给W25Q64烧录固件的5个实用技巧

本文深入探讨了Jlink的隐藏功能,特别是通过JFlash SPI高效烧录W25Q64的5个进阶技巧。从硬件连接优化到批量处理脚本,再到数据安全验证,这些技巧能显著提升烧录速度和稳定性,适用于量产环境。文章还提供了详细的参数配置和脚本示例,帮助工程师充分发挥Jlink的潜力。

weixin_29164843的博客 409

Virgo Tomcat Server 指南-Hello World

Virgo Tomcat Server 指南-Hello World   Eclipse发布了最新的Virgo Tomccat Server。VTS是一个应用服务器与OSGi紧密结合并且可以开发bundles形式的Spring web apps应用,他们同样拥有OSGi和Spring的特性。真是太好了,所以我想尝试下。但是很多人和我一样没有接触过VTS的开发工作。VTS的入门有些困难, 网上有

xiaxiayoyo520的专栏 1万+

FANUC机器人KAREL编程实战:手把手教你用SOCKET指令连接外部设备(附完整.KL文件)

本文详细解析了FANUC机器人KAREL编程中SOCKET指令的应用,从开发环境配置到工业级通讯全流程,涵盖网络参数设置、模块化代码设计、错误处理及现场调试技巧。通过实战案例,帮助开发者掌握与外部设备稳定连接的关键技术,提升工业自动化系统的通讯可靠性。

weixin_30907935的博客 226

遥感新手别纠结!实测ENVI 5.3、5.6、6.0三个免费版,教你混搭安装避坑

本文为遥感新手提供ENVI 5.3、5.6、6.0三个免费版的实测对比与混搭安装指南,帮助用户构建零成本高效工作流。详细解析各版本功能差异、共存安装技巧及常见问题解决方案,特别适合课程作业、毕业论文分析和遥感入门练习。

weixin_30819085的博客 474

Linux安装virgo

安装环境:CentOS 6.2    centos6.2  i686上的virgo-tomcat-server-3.5.0.RELEASE安装 一、前提条件JavaSE1.6以上,需设置JAVA_HOME,Path, ClassPath环境变量;1.1、下载并安装jdkhttp://www.oracle.com/technetwork/java/javase/downloads/jdk-6u...

weixin_33907511的博客 313

无人机中继传输数据链技术,(无人机+自组网)远距离传输技术实现详解

无人机中继传输数据链技术是指利用无人机作为空中移动中继节点,在需要通信的区域上空悬停或移动,以建立和维护通信链路,从而扩展通信范围、提高通信质量和灵活性。1. 通信链路:是无人机中继通信的重要组成部分,包括源节点到中继节点的链路和中继节点到目标节点的链路。同时,它还支持空中到地面的通信,距离大于100km。总的来说,无人机中继传输数据链技术和(无人机+自组网)远距离传输技术都是现代无人机通信领域的重要技术,它们的应用极大地扩展了无人机的通信范围和灵活性,为各种应用场景提供了强有力的支持。

专注多旋翼、复合翼无人机技术研究,从事低空经济行业。 2079

基于OSGi的Virgo Server最简单Spring web实例

基于OSGi的Virgo Server最简单Spring web实例 一:开发工具下载与环境搭建 1. 下载并安装JDK6u30版本,下载地址如下: http://www.oracle.com/technetwork/java/javasebusiness/...

chuifuhuo6864的博客 163

TensorRT的安装:一步一步教会你如何安装TensorRT

TensorRT(Tensor Runtime)是由NVIDIA开发的一个用于深度学习推理(inference)优化的库,它可以在NVIDIA的GPU上加速神经网络模型的推理过程,从而提高模型的性能和效率。安装完成后,需要将CUDA的安装路径添加到系统环境变量中,以便系统能够找到CUDA的库文件。根据你安装的CUDA版本,将CUDNN的库文件复制到CUDA的安装目录中。要使用TensorRT,首先需要安装NVIDIA的CUDA和cuDNN库,并根据NVIDIA官方文档安装TensorRT。

Science prince的博客 2373

【Mode】FDE 求解器工作流程

Lumerical---FDE(Finite Difference Eigenmode) Solver

u011699626的博客 4942

Virgo Web Server 日志配置

Refer to: Java日志组件 commons-logging和log4j介绍 以下是virgo web server的日志输出配置,与log4j的配置类似。可以看出使用的是Logback日志组件,这是个开源的实现了slf4j的比log4j性能更好的日志组件。 applicationName virgo-server serv

Seven's Rainbow Paradise 1874

基于simulink的软开关技术的三相逆变器仿真

三相逆变器中的软开关技术(Soft Switching Techniques)旨在减少开关损耗,提高效率,并降低电磁干扰(EMI)。实现软开关通常涉及使用谐振电路或准谐振电路来确保开关器件在零电压(Zero Voltage Switching, ZVS)或零电流(Zero Current Switching, ZCS)条件下进行切换。下面将详细介绍如何在Simulink中进行基于软开关技术的三相逆变器仿真设计。

xiaoheshang_123的博客 162

设置virgo-tomcat-server的JVM内存

设置virgo-tomcat-server的JVM内存 >> vi ../virgo-tomcat-server-3.0.3.RELEASE/bin/dmk.sh if [ -z "$NO_START_FLAG" ] then TMP_DIR=$KERNEL_HOME/work/tmp # Ensure th...

weixin_30498807的博客 82

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Virgo Tomcat Server是什么?

Virgo Tomcat Server是什么? Virgo Tomcat Server, 简称VTS, 是Virgo Server应用服务器的一种. 它是轻量级, 模块化, 基于OSGi系统。提供从开发,部署到管理企业级应用的一整套解决方案。通过利用相关的优秀技术并且在他们之上作出扩展与改善,使的VTS能够提供一套非常酷的企业级解决方案。 Virgo Tomcat Server是由什么构成的?

xiaxiayoyo520的专栏 3723

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Spring Tool Suit安装virgo server插件、virgo的下载

virgo-tomcat原先是Spring DM Server,后来转eclipse社区维护 安装教程:http://osgi.com.cn/article/7289514 virgo-tomcat各版本下载:http://www.eclipse.org/virgo/download/ 记录一下,怕忘记 转载于:https://www.cnblogs.co...

weixin_30726161的博客 163

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Spring DM and DM server changes to Gemini and Virgo

1.Spring DM 从2.0M1开始捐赠给Eclipse,并改名为 Gemini blueprint 和Web Gemini blueprint 和Web是OSGi标准的一个实现。 但是org.springframework.osgi.web.context.support.OsgiBundleXmlWebApplicationContext从该模块移除,并在VIrgo项目中重写了(o

阿一的专栏 859

关于eclipse virgo web server

为什么我的eclipse server没有eclipseRT选项

iampigiampig的专栏 400

VIRGO TOMCAT SERVER +REDIS SESSION 共享 实现

OSGI环境、VIRGO应用服务器,使用redis做sesson共享。

Mr.S的blog 1528

Virgo Tomcat Server简析

PS:近来公司几个项目都用了Virgo Tomcat Server(简称VTS),取代了单独的Tomcat。其实VTS就是集成版的Tomcat,最大的好处是集成了运行OSGI的环境。搜索了一下,下面这篇介绍比较简洁,记录一下: Virgo Tomcat Server是什么? Virgo Tomcat Server, 简称VTS,是Virgo Server应用服务器的一种。它是轻量级, 模块

IOT之无线网络传输技术 1379
上一篇: 基于virgo环境的OSGI+Maven的web开发代码下载(spring+hibernate+GWT)
下一篇: Comparator与Comparable的区别
Snoopy7713
博客等级 码龄21年 17粉丝 681原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值