- 浏览: 7330372 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (1546)
- 企业中间件 (236)
- 企业应用面临的问题 (236)
- 小布Oracle学习笔记汇总 (36)
- Spring 开发应用 (54)
- IBatis开发应用 (16)
- Oracle基础学习 (23)
- struts2.0 (41)
- JVM&ClassLoader&GC (16)
- JQuery的开发应用 (17)
- WebService的开发应用 (21)
- Java&Socket (44)
- 开源组件的应用 (254)
- 常用Javascript的开发应用 (28)
- J2EE开发技术指南 (163)
- EJB3开发应用 (11)
- GIS&Mobile&MAP (36)
- SWT-GEF-RCP (52)
- 算法&数据结构 (6)
- Apache开源组件研究 (62)
- Hibernate 学习应用 (57)
- java并发编程 (59)
- MySQL&Mongodb&MS/SQL (15)
- Oracle数据库实验室 (55)
- 搜索引擎的开发应用 (34)
- 软件工程师笔试经典 (14)
- 其他杂项 (10)
- AndroidPn& MQTT&C2DM&推技术 (29)
- ActiveMQ学习和研究 (38)
- Google技术应用开发和API分析 (11)
- flex的学习总结 (59)
- 项目中一点总结 (20)
- java疑惑 java面向对象编程 (28)
- Android 开发学习 (133)
- linux和UNIX的总结 (37)
- Titanium学习总结 (20)
- JQueryMobile学习总结 (34)
- Phonegap学习总结 (32)
- HTML5学习总结 (41)
- JeeCMS研究和理解分析 (9)
最新评论
-
lgh1992314:
[u][i][b][flash=200,200][url][i ...
看看mybatis 源代码 -
尼古拉斯.fwp:
图片根本就不出来好吧。。。。。。
Android文件图片上传的详细讲解(一)HTTP multipart/form-data 上传报文格式实现手机端上传 -
ln94223:
第一个应该用排它网关吧 怎么是并行网关, 并行网关是所有exe ...
工作流Activiti的学习总结(八)Activiti自动执行的应用 -
ZY199266:
获取不到任何消息信息,请问这是什么原因呢?
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息 -
xiaoyao霄:
DestinationSourceMonitor 报错 应该导 ...
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息
在一般的java项目中,如果在linux中实现进程在后台执行比较简单,可以采用nohup cmd 或者sh cmd &等多种方式实现,进行在后台执行。但是在window操作系统中就比较困难了,需要实现相关的类。如在tomcat,jboss的启动之后,端口一直开放着。
常用实现方式实现Commons-Daemon中的Daemon接口实现相关的方式,使用相关的bat,命令启动。在Commons-Deamon调用jsvc实现。
在activemq.bat中相关bat命令如下:
"%_JAVACMD%" %SUNJMX% %ACTIVEMQ_DEBUG_OPTS% %ACTIVEMQ_OPTS% %SSL_OPTS% -Dactivemq.classpath="%ACTIVEMQ_CLASSPATH%" -Dactivemq.home="%ACTIVEMQ_HOME%" -Dactivemq.base="%ACTIVEMQ_BASE%" -jar "%ACTIVEMQ_HOME%/bin/run.jar" start %*
备注:在run.jar包中Main方法调用 ActiveMQLauncher 实现相关的功能。
Starting jsvc
To check the allowed parameters for the jsvc binary simply do:
./jsvc -help
Usage: jsvc [-options] class [args...]
Where options include:
-help | --help | -?
show this help page (implies -nodetach)
-jvm <JVM name>
use a specific Java Virtual Machine. Available JVMs:
'client' 'server'
-cp / -classpath <directories and zip/jar files>
set search path for service classes and resouces
-home <directory>
set the path of your JDK or JRE installation (or set
the JAVA_HOME environment variable)
-version
show the current Java environment version (to check
correctness of -home and -jvm. Implies -nodetach)
-showversion
show the current Java environment version (to check
correctness of -home and -jvm) and continue execution.
-nodetach
don't detach from parent process and become a daemon
-debug
verbosely print debugging information
-check
only check service (implies -nodetach)
-user <user>
user used to run the daemon (defaults to current user)
-verbose[:class|gc|jni]
enable verbose output
-outfile </full/path/to/file>
Location for output from stdout (defaults to /dev/null)
Use the value '&2' to simulate '1>&2'
-errfile </full/path/to/file>
Location for output from stderr (defaults to /dev/null)
Use the value '&1' to simulate '2>&1'
-pidfile </full/path/to/file>
Location for output from the file containing the pid of jsvc
(defaults to /var/run/jsvc.pid)
-D<name>=<value>
set a Java system property
-X<option>
set Virtual Machine specific option
-ea[:<packagename>...|:<classname>]
-enableassertions[:<packagename>...|:<classname>]
enable assertions
-da[:<packagename>...|:<classname>]
-disableassertions[:<packagename>...|:<classname>]
disable assertions
-esa | -enablesystemassertions
enable system assertions
-dsa | -disablesystemassertions
disable system assertions
-agentlib:<libname>[=<options>]
load native agent library <libname>, e.g. -agentlib:hprof
-agentpath:<pathname>[=<options>]
load native agent library by full pathname
-javaagent:<jarpath>[=<options>]
load Java programming language agent, see java.lang.instrument
-procname <procname>
use the specified process name (works only for Linux)
-wait <waittime>
wait waittime seconds for the service to start
waittime should multiple of 10 (min=10)
-stop
stop the service using the file given in the -pidfile option
-keepstdin
does not redirect stdin to /dev/null
实际上仅支持类UNIX平台。源代码在A src/native/unix subdirectory子目录。在将来将利用APR来提供更方便的平台支持。
从源代码构建
在UNIX系统下构建你需要:
● GNU AutoConf (最低版本 2.53)
● 一个ANSI-C兼容的编译器 (推荐GCC)
● GNU Make
● JAVA2平台兼容的SDK
你需要构建 "configure" 程序:
sh support/buildconf.sh
结果类似如下:
support/buildconf.sh
support/buildconf.sh: configure script generated successfully
一旦生成了configure脚本,可进行后续步骤。
从一个发布版中构建
在UNIX系统下构建你需要:
● 一个ANSI-C兼容的编译器 (推荐GCC)
● GNU Make
● JAVA2平台兼容的SDK
你必须指定JAVA_HOME或者使用 --with-java=<dir> 参数指定JDK,再或使用JAVA_HOME环境变量指定JDK安装位置。例如:
./configure --with-java=/usr/java
或者
export JAVA_HOME
./configure
如果你的操作系统支持,configure会顺利运行,否则会报错。构建二进制程序和库:
make
这个生成可执行文件jsvc。
启动 jsvc
查看可用的jsvc参数仅需:
./jsvc -help
Usage: jsvc [-options] class [args...]
Where options include:
-jvm <JVM name>
use a specific Java Virtual Machine. Available JVMs: 'client' 'server'
-cp / -classpath <directories and zip/jar files>
set search path for service classes and resouces
-home <directory>
设置JDK或者JRE的安装路径 (或者设置 JAVA_HOME 环境变量)
-version
show the current Java environment version (to check correctness of -home and -jvm. Implies -nodetach)
-help / -?
显示帮助信息 (implies -nodetach)
-nodetach
don't detach from parent process and become a daemon
-debug
详细输出调试信息
-check
only check service (implies -nodetach)
-user <user>
运行守护程序的用户(默认是当前用户)
-verbose[:class|gc|jni]
启用详细输出
-outfile </full/path/to/file>
Location for output from stdout (defaults to /dev/null) Use the value '&2' to simulate '1>&2'
-errfile </full/path/to/file>
Location for output from stderr (defaults to /dev/null) Use the value '&1' to simulate '2>&1'
-pidfile </full/path/to/file>
jsvc的pid文件位置(默认 /var/run/jsvc.pid)
-D<name>=<value>
设置java系统的属性
-X<option>
设置虚拟机参数
-wait <waittime>
服务启动的等待时间,是10的倍数 (最小10)
-stop
使用-pidfile参数指定的文件停止服务
使用 jsvc
有两种方式来使用jsvc:一种是实现了Daemon接口的类或者调用一个类包含需要的方法。例如,Tomcat-4.1.x使用了Daemon接口,Tomcat-5.0.x提供了一个包含可被jsvc直接调用的方法的类。
使用 Daemon 接口
● 写一个实现Daemon接口的类 (MyClass).
● 打包在jar文件中 (my.jar).
● 如下调用jsvc:
./jsvc -cp commons-daemon.jar:my.jar MyClass
直接调用
你可以写一个实现如下方法的类:
● void load(String[] arguments): 此处打开配置文件、创建跟踪文件、创建ServerSocket和线程
● void start(): 启动线程,接收连接
● void stop(): 通知线程激活run(), 关闭ServerSockets
● void destroy(): 销毁在init()中创建的对象
打包在jar文件中:
./jsvc -cp commons-daemon.jar:my.jar MyClass
jsvc如何工作
Jsvc使用3个进程: 启动进程、主控进程、被控进程。被控进程也就是主要的java线程,如果JVM崩溃,主控进程会在以后几分钟启动它。jsvc是一个守护进程,它可以以root帐号启动,-user参数允许降权到一个非特权帐号。当使用了 -wait 参数,启动进程会等待直到控制进程准备好了,否则生成控制进程即返回。
Forks in commons-daemon
启动进程:
main()
{
fork()
parent: wait_child(), wait until JAVA service started when the child says "I am ready".
child: controller process.
}
主控进程:
while (fork()) {
parent: wait_for_child.
if exited and restart needed continue
else exit.
child: exit(child()). controlled process.
}
被控进程:
In child(): controlled process.
init_JVM().
load_service().
start_service().
say "I am ready"
wait for signal or pool for stop
stop_service().
destroy_service().
destroy_JVM().
exit (with different codes so that parent knows if it has to restart us).
注意: 主控进程使用信号停止被控进程。
降级用户
在linux上使用兼容的setuid()/setgid()。在其他的unix上使用 setgid/initgroups 。如下:
/* as root */
init_JVM().
load_service. /* java_load() calls the load method */
downgrade user (set_caps() or set_user_group())
/* as the user $USER (from -user $USER parameter) */
umask()
start_service. /* java_start() calls the start method */
如在ActiveMQ中启动类如下:
package org.apache.activemq.console;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.apache.activemq.console.command.Command;
import org.apache.activemq.console.command.ShutdownCommand;
import org.apache.activemq.console.command.StartCommand;
import org.apache.activemq.console.CommandContext;
import org.apache.activemq.console.Main;
import org.apache.activemq.console.formatter.CommandShellOutputFormatter;
import org.apache.commons.daemon.Daemon;
import org.apache.commons.daemon.DaemonContext;
/**
* This class launches activemq under Apache JSVC {@link http://commons.apache.org/daemon/jsvc.html}
*
* @author areese
*
*/
public class ActiveMQLauncher implements Daemon {
private List<String> args;
/**
*
*/
public ActiveMQLauncher() {
}
/*
* (non-Javadoc)
*
* @see org.apache.commons.daemon.Daemon#destroy()
*/
public void destroy() {
}
/*
* (non-Javadoc)
*
* @see
* org.apache.commons.daemon.Daemon#init(org.apache.commons.daemon.DaemonContext
* )
*/
public void init(DaemonContext arg0) throws Exception {
// we need to save the args we started with.
args = Arrays.asList(arg0.getArguments());
}
/*
* (non-Javadoc)
*
* @see org.apache.commons.daemon.Daemon#start()
*/
public void start() throws Exception {
CommandContext context = new CommandContext();
context.setFormatter(new CommandShellOutputFormatter(System.out));
Command command = new StartCommand();
command.setCommandContext(context);
command.execute(args);
}
/*
* (non-Javadoc)
*
* @see org.apache.commons.daemon.Daemon#stop()
*/
public void stop() throws Exception {
CommandContext context = new CommandContext();
context.setFormatter(new CommandShellOutputFormatter(System.out));
Command command = new ShutdownCommand();
command.setCommandContext(context);
List<String> tokens = new ArrayList<String>(Arrays.asList(new String[] {
"--jmxlocal", "--all", }));
command.execute(tokens);
}
}
Daemon that implements the following methods:
- void init(String[] arguments): Here open configuration files, create a trace file, create ServerSockets, Threads
- void start(): Start the Thread, accept incoming connections
- void stop(): Inform the Thread to terminate the run(), close the ServerSockets
void destroy()
: Destroy any object created in init()
发表评论
-
ActiveMQ的拦截器插件
2011-07-22 09:29 6601ActiveMQ拦截器使用和原 ... -
ActiveMQ的各种表SQL的管理
2011-07-20 20:58 3500在ActiveMQ为了方便的切换数据库,更为了深入 ... -
ActiveMQ中advisory的使用和原理
2011-07-20 18:46 2900在ActiveMQ中的监控和管理也可以通过Advisory实现 ... -
ActiveMQ的异步转发(DispatchAsync)功能
2011-07-20 11:29 47011. 消息者异步转发功能 针对正常情况下,在一个 ... -
ActiveMQ 的独占消费(Exclusive Consumer)
2011-07-20 11:26 4093我们经常希望维持队列中的消息,按一定次序转发给消息者。然而当有 ... -
ActiveMQ5.5在Tomcat6.0中部署
2011-07-19 22:27 2920在ActiveMQ中监控管理Web组件为ActiveMQCon ... -
Window 下ActiveMQ端口冲突,负载均衡,主备配置
2011-07-17 16:03 5525在Java 学习中Window操作系 ... -
ActiveMQ中消息权限策略
2011-07-17 00:31 2667在ActiveMQ发送消息的时候,可以通过MessageAut ... -
ActiveMQ和Jetty整合使用
2011-07-07 22:49 5585在ActiveMQ中的activemq.b ... -
关于ActiveMQ中怎么实现一对多发送消息讨论
2011-07-07 19:50 6067无 ... -
ActiveMQ 中ActiveMQBlobMessage的接收和发送
2011-07-05 10:47 5120在ActiveMQ中对比较大的消息采用一 ... -
ActiveMQ 和JAXWS整合
2011-07-04 22:02 2211在多个系统中可能考虑到远程访问等的,采用WebServ ... -
ActiveMQ-Camel的使用
2011-07-02 10:27 10223在一个电子系统中可能接受来自不同供应商的 ... -
ActiveMQ模板和Velocity整合使用
2011-07-01 19:50 2306ActiveMQ模板使用 在ActiveMQ中AMQ ... -
ActiveMQ中消息游标
2011-06-30 18:16 2656在 ActiveMQ 5.0的之前版本中,b ... -
ActiveMQ和Tomcat的整合应用
2011-06-30 17:00 11209在ActiveMQ的资源让容器Tomcat管理时 ... -
ActiveMQ关于文件传输需要注意哪些方面?
2011-06-18 22:11 6176最近一直在关注一些文件传输中间件的实现,想用Acti ... -
关于ActiveMQ中Session和Connection资源的管理
2011-06-15 23:43 25099配置完了持久化之后,我们就可以使用代码来发送 ... -
ActiveMQ中关于文件锁的机制的学习
2011-06-14 23:31 3334在ActiveMQ中提供了文件数据库机 ... -
ActiveMQ的JMX监控使用
2011-06-10 17:26 13152package easyway.app.activemq.d ...
相关推荐
赠送jar包:activemq-protobuf-1.1.jar; 赠送原API文档:activemq-protobuf-1.1-javadoc.jar; 赠送源代码:activemq-protobuf-1.1-sources.jar; 包含翻译后的API文档:activemq-protobuf-1.1-javadoc-API文档-...
ActiveMQ-CPP Library 3.9.5是一款专为C++开发者设计的、用于与Apache ActiveMQ集成的库,它提供了丰富的API接口,使得在C++环境中能够方便地发送和接收消息。这个版本的库文件特别针对Visual Studio 2015和2017进行...
这个“apache-activemq-5.9.0-bin”压缩包包含了Apache ActiveMQ 5.9.0版本的完整二进制文件,用于在本地或网络环境中安装和运行。 Apache ActiveMQ的核心功能包括: 1. **消息队列**:ActiveMQ支持多种消息模式,...
其实activemq-web-console完全可以和activemq-broker分开来部署。 activemq-web-console包含3个apps, 1.一个是admin,用来显示和管理所有的queue、topic、connection等等。 2.一个是demo,有一些使用jms和activemq...
本文将深入探讨ActiveMQ-CPP库3.9.5版本的主要特性和使用方法。 1. **ActiveMQ简介** Apache ActiveMQ是一款开源的消息中间件,遵循Java Message Service (JMS) 规范。它支持多种协议,包括AMQP、STOMP、OpenWire...
activemq-all-5.2.0.JAR包,欢迎下载。编写java中间件的时候会用到。这是activemq实现的jms中间件。希望能帮助到你。
这个"apache-activemq-5.15.8-bin.zip"文件包含了ActiveMQ的可执行版本,用于在本地计算机上安装和运行ActiveMQ服务。 首先,我们需要了解ActiveMQ的核心概念。它是一个消息代理,扮演着消息生产者与消费者之间的...
这个压缩包"apache-activemq-5.8.0-bin.zip"包含了ActiveMQ 5.8.0版本的二进制发行版,供用户在本地计算机上安装和运行。 1. **Apache ActiveMQ简介** - Apache ActiveMQ是业界广泛使用的消息代理,提供可靠的消息...
赠送jar包:activemq-core-5.7.0.jar; 赠送原API文档:activemq-core-5.7.0-javadoc.jar; 赠送源代码:activemq-core-5.7.0-sources.jar; 包含翻译后的API文档:activemq-core-5.7.0-javadoc-API文档-中文...
2. **activemq-broker-5.10.0.jar**:这部分包含了ActiveMQ的消息代理(broker)实现,负责处理消息的存储、路由和传递。 3. **spring-core-3.2.8.RELEASE.jar, spring-context-3.2.8.RELEASE.jar, spring-beans-...
activemq-protobuf-1.1.jar;activemq-protobuf-1.1.jar
这个"apache-activemq-5.14.3-bin.zip"压缩包包含了在Windows环境下部署和运行ActiveMQ所需的所有文件。让我们深入探讨一下这个版本的ActiveMQ及其在Java消息服务中的应用。 首先,Java消息服务(JMS)是一种标准...
解压后,你会得到一个名为`apache-activemq-5.13.2`的目录,里面包含了所有必要的可执行文件和配置文件。这个目录结构包括了`bin`、`conf`、`lib`等子目录,分别用于存放可执行脚本、配置文件和依赖库。 在`bin`...
activemq-all-5.8.0.jar 下载 activemq-all-5.8.0.jar 下载 activemq-all-5.8.0.jar 下载 activemq-all-5.8.0.jar 下载 activemq-all-5.8.0.jar 下载
activemq-all-5.6.0.jar activemq-all-5.6.0.jar activemq-all-5.6.0.jar activemq-all-5.6.0.jar
在提供的压缩包"activemq-web-4.0-M3.jar.zip"中,有两个主要文件:"activemq-web-4.0-M3.jar"和"license.txt"。"activemq-web-4.0-M3.jar"是核心的Java档案文件,包含了运行ActiveMQ Web UI所需的所有类和资源。这...
activemq-all-5.2.0-sources.jar
使用`activemq-all-5.2.0.jar`,开发者可以通过JMS API来创建连接、生产者、消费者和消息。此外,ActiveMQ还提供了XML配置文件,用于设置服务器、网络连接、安全策略等。 **部署和运行** 在Java环境中,将`activemq...
activemq-broker-5.9.1.jar,activemq-broker-5.9.1.jar,activemq-broker-5.9.1.jar
标签:activemq-kahadb-store-5.9.1.jar,activemq,kahadb,store,5.9.1,jar包下载,依赖包