1、编写基础服务类,实现Daemon init 、start 、stop
package com.allinfinance.yak.support.service;
import java.io.FileNotFoundException;
import java.util.Iterator;
import java.util.Map;
import org.apache.commons.daemon.Daemon;
import org.apache.commons.daemon.DaemonContext;
import org.apache.commons.daemon.DaemonInitException;
import org.apache.commons.lang.StringUtils;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.util.Log4jConfigurer;
import cn.webank.rmb.api.RMB;
import com.allinfinance.yak.support.future.TaskExecutor;
/**
* 基础的服务Daemon. 可以带一个参数,指定在classpath中加载的spring配置文件名,程序会自动加上 "-context.xml"后缀
*
* @author licj
*
*/
public class ServiceDaemon implements Daemon {
private ConfigurableApplicationContext ctx;
@Override
public void init(DaemonContext context) throws DaemonInitException,
Exception {
initLogging();
ctx = new ClassPathXmlApplicationContext(
getContextFilename(context.getArguments()));
ctx.registerShutdownHook();
}
private static void initLogging() throws FileNotFoundException {
//默认调用classpath下的log4j.properties,这样可以有效的避免因为xml优先的原因,被某些jar包里的log4j.xml给覆盖了。
//相当于主动调整默认配置文件加载优先级
String logLocation = System.getProperty("log.config");
if (StringUtils.isNotBlank(logLocation))
Log4jConfigurer.initLogging(logLocation, 1000 * 60);
else
Log4jConfigurer.initLogging("classpath:log4j.properties");
}
@Override
public void start() throws Exception {
}
@Override
public void stop() throws Exception {
RMB.stopWait();
//关闭所有的任务执行器
Map<String,TaskExecutor> taskExecutorMap=ctx.getBeansOfType(TaskExecutor.class);
if(null!=taskExecutorMap){
Iterator<TaskExecutor> taskExecutorIter=taskExecutorMap.values().iterator();
while(taskExecutorIter.hasNext()){
TaskExecutor taskExecutor=taskExecutorIter.next();
if(null==taskExecutor){
continue;
}
taskExecutor.shutdownWait();
}
}
}
@Override
public void destroy() {
ctx.close();
}
/**
* 这样可以直接跑,要关闭就杀掉进程
*
* @param args
* @throws FileNotFoundException
*/
public static void main(String[] args) throws FileNotFoundException {
initLogging();
@SuppressWarnings("resource")
ConfigurableApplicationContext ctx = new ClassPathXmlApplicationContext(
getContextFilename(args));
ctx.registerShutdownHook();
}
public static String getContextFilename(String args[]) {
String filename = "/service-context.xml";
if (args.length >= 1 )
filename = "/" + args[0] + "-context.xml";
return filename;
}
protected ConfigurableApplicationContext getCtx() {
return ctx;
}
}
2、在debug/run configuration中配置启动,如图
相关推荐
在IT行业中,版本控制系统和Web服务器的优化是至关重要的任务,对于开发团队的协作效率和网站性能有着直接影响。本篇文档主要介绍了如何部署Git版本控制系统以及如何优化Linux环境下的Web服务器。 首先,我们来看...
Commons Daemon是Apache软件基金会的一个项目,它提供了一组跨平台的服务程序,用于支持后台(守护)进程的启动和管理。在Tomcat中, Commons Daemon的Windows服务支持(如procrun)允许将Tomcat作为一个Windows服务...
对于更复杂的部署需求,例如使用daemon模式,你需要创建一个`mod_wsgi-express`的配置脚本,该脚本会启动一个独立的WSGI服务器实例。然后,你可以通过Apache反向代理到这个daemon进程,实现应用的隔离和管理。 在...
`mod_wsgi`作为Apache模块,使得Python应用可以直接与Web服务器交互。它可以以两种模式运行:`Embedded Mode`和`Delegation Mode (Daemon Process)`。在`Embedded Mode`下,`mod_wsgi`内置于每个Apache工作进程中,...
这行命令会在你的机器上启动一个daemon进程用于启动/关闭和监控服务 5)在浏览器中输入ip/manage.php,如果看到下图表明php服务及daemon启动成功 6)选择你刚才所配置的ip,点击启动,如果看到下图...
安装完成后,可以直接启动 Visual Studio 2012。 #### 四、环境配置 安装完成后,你可以根据自己的需求进行环境配置,以提高工作效率: 1. **创建新项目**:打开 Visual Studio 2012 后,在主界面上选择“文件”>...
在Java中,我们可以使用Apache Commons Daemon项目中的`jsvc`或`procrun`工具,或者使用微软的`sc`命令来创建和管理服务。这里我们主要介绍使用`procrun`的方法,因为它是专为在Windows上运行Java应用程序而设计的。...
【描述】:Tomcat6是Apache软件基金会的Jakarta项目中的一个核心项目,是一款开源的、免费的、基于Java Servlet和JavaServer Pages(JSP)技术的Web应用服务器。它实现了Java EE的Web容器部分,用于部署和运行Java ...
1. **Tomcat的介绍**:Tomcat是Apache软件基金会下的Jakarta项目的一部分,是一个轻量级的Web服务器和应用服务器,特别适合小型到中型的应用。它不仅能处理HTTP请求,还能运行基于Java的Web应用程序,如Servlet和JSP...
**正文** `mod_wsgi` 是一个用于在Apache Web服务器上部署和运行Python应用程序的模块,特别是对于Django这样的Web框架。...通过理解其工作原理和正确配置,你可以更好地管理和优化你的Python Web项目。
启动和停止 XAMPP 的服务可以通过提供的 `start-stop-daemon` 脚本或直接运行 `xampp-control` 程序来实现。 **安全注意事项** 在生产环境中使用 XAMPP 时,需要特别注意安全设置。默认情况下,XAMPP 的所有服务都...
用户可以直接运行该文件启动NStats服务。初次运行可能需要进行一些基本的配置,例如指定监听端口、设定更新间隔等。启动后,通过浏览器访问配置的HTTP地址,即可查看和分析网络统计数据。 总的来说,NStats作为一款...
MySQL的自动化启动可以在系统启动时设置,这通常涉及到编辑`/etc/rc.local`或使用`systemctl enable mysql`(取决于Linux发行版)。 理解这些基础知识对于在Linux环境中管理和操作MySQL数据库至关重要,它可以帮助...
在Windows环境下,使用Apache和mod_wsgi来部署Django项目是一种常见的实践,因为它们提供了稳定性和灵活性。以下是对这个主题的详细解释。 1. **Apache**:Apache HTTP Server是一个开源的Web服务器软件,支持多种...
如果你的项目是目录结构,直接将其放入webapps目录也可自动部署。若需配置特定的部署属性,可以创建一个名为META-INF/context.xml的文件放入应用目录,以提供额外的上下文配置。 安全管理在Tomcat7中也是重要的一环...
Transmission的配置文件通常位于/root/.config/transmission-daemon/settings.json路径下,用户可直接编辑此JSON格式的文件以调整其设置: 1. "alt-speed-up"和"alt-speed-down"用于设置上传和下载的限速。 2. "alt-...
Nginx项目一开始就非常关注高并发,高性能和低内存使用。它获得了两节式BSD许可,并在Linux,BSD变体,Mac OS X,Solaris,AIX,HP-UX以及其他* nix版本上运行。它还具有用于Microsoft Windows的概念证明端口。 ...
在命令行中,使用`start orbd`启动ORBD,并指定主机名和端口号。对于OmniORB,还需要在注册表中配置Naming Service的初始引用。 8. **ORB Initial References**: 在Windows注册表的`HKEY_LOCAL_MACHINE\SOFTWARE\...
这款爬虫软件分为两个主要组件:一个是守护进程(Daemon),另一个是可配置的 Web 爬虫。这样的架构使得 Ex-Crawler 具有高度的稳定性和可扩展性,能够适应各种复杂的网页抓取需求。 守护进程是 Ex-Crawler 的核心...
- 使用命令行进入SVN服务启动目录,执行命令`svnserve --daemon --root D:\svn\svn_repository`来启动SVN服务。 - 其中`--daemon`表示以守护进程方式运行,`--root`参数指定了仓库根目录。 #### 六、客户端连接与...