`
godsend_jin
  • 浏览: 41781 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

使用daemon直接启动非web项目

阅读更多

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中配置启动,如图



 

 

  • 大小: 78.6 KB
分享到:
评论

相关推荐

    9.4: 部署Git版本控制系统 、 优化Web服务器 、 总结和答疑.docx

    在IT行业中,版本控制系统和Web服务器的优化是至关重要的任务,对于开发团队的协作效率和网站性能有着直接影响。本篇文档主要介绍了如何部署Git版本控制系统以及如何优化Linux环境下的Web服务器。 首先,我们来看...

    tomcat-7.0.35

    Commons Daemon是Apache软件基金会的一个项目,它提供了一组跨平台的服务程序,用于支持后台(守护)进程的启动和管理。在Tomcat中, Commons Daemon的Windows服务支持(如procrun)允许将Tomcat作为一个Windows服务...

    cpp-modwsgi是一个Apache模块实现了PythonWSGI接口服务

    对于更复杂的部署需求,例如使用daemon模式,你需要创建一个`mod_wsgi-express`的配置脚本,该脚本会启动一个独立的WSGI服务器实例。然后,你可以通过Apache反向代理到这个daemon进程,实现应用的隔离和管理。 在...

    mod_wsgi-3.3 - Binary Apache Module - (Win32/Apache 2.2/Python 2.7)

    `mod_wsgi`作为Apache模块,使得Python应用可以直接与Web服务器交互。它可以以两种模式运行:`Embedded Mode`和`Delegation Mode (Daemon Process)`。在`Embedded Mode`下,`mod_wsgi`内置于每个Apache工作进程中,...

    手游服务器框架Survive.zip

    这行命令会在你的机器上启动一个daemon进程用于启动/关闭和监控服务 5)在浏览器中输入ip/manage.php,如果看到下图表明php服务及daemon启动成功 6)选择你刚才所配置的ip,点击启动,如果看到下图...

    visual_studio_2012软件安装与环境配置

    安装完成后,可以直接启动 Visual Studio 2012。 #### 四、环境配置 安装完成后,你可以根据自己的需求进行环境配置,以提高工作效率: 1. **创建新项目**:打开 Visual Studio 2012 后,在主界面上选择“文件”&gt;...

    jar注册windows服务.rar

    在Java中,我们可以使用Apache Commons Daemon项目中的`jsvc`或`procrun`工具,或者使用微软的`sc`命令来创建和管理服务。这里我们主要介绍使用`procrun`的方法,因为它是专为在Windows上运行Java应用程序而设计的。...

    tomcat6服务器

    【描述】:Tomcat6是Apache软件基金会的Jakarta项目中的一个核心项目,是一款开源的、免费的、基于Java Servlet和JavaServer Pages(JSP)技术的Web应用服务器。它实现了Java EE的Web容器部分,用于部署和运行Java ...

    apache-tomcat7.085

    1. **Tomcat的介绍**:Tomcat是Apache软件基金会下的Jakarta项目的一部分,是一个轻量级的Web服务器和应用服务器,特别适合小型到中型的应用。它不仅能处理HTTP请求,还能运行基于Java的Web应用程序,如Servlet和JSP...

    mod_wsgi-windows

    **正文** `mod_wsgi` 是一个用于在Apache Web服务器上部署和运行Python应用程序的模块,特别是对于Django这样的Web框架。...通过理解其工作原理和正确配置,你可以更好地管理和优化你的Python Web项目。

    xampp-linux-1.7.1.tar.gz

    启动和停止 XAMPP 的服务可以通过提供的 `start-stop-daemon` 脚本或直接运行 `xampp-control` 程序来实现。 **安全注意事项** 在生产环境中使用 XAMPP 时,需要特别注意安全设置。默认情况下,XAMPP 的所有服务都...

    Network Statistics Daemon-开源

    用户可以直接运行该文件启动NStats服务。初次运行可能需要进行一些基本的配置,例如指定监听端口、设定更新间隔等。启动后,通过浏览器访问配置的HTTP地址,即可查看和分析网络统计数据。 总的来说,NStats作为一款...

    linux下MySQL安装登录及操作.docx

    MySQL的自动化启动可以在系统启动时设置,这通常涉及到编辑`/etc/rc.local`或使用`systemctl enable mysql`(取决于Linux发行版)。 理解这些基础知识对于在Linux环境中管理和操作MySQL数据库至关重要,它可以帮助...

    Apache安装包与mod_wsgi库

    在Windows环境下,使用Apache和mod_wsgi来部署Django项目是一种常见的实践,因为它们提供了稳定性和灵活性。以下是对这个主题的详细解释。 1. **Apache**:Apache HTTP Server是一个开源的Web服务器软件,支持多种...

    tomcat7.rar

    如果你的项目是目录结构,直接将其放入webapps目录也可自动部署。若需配置特定的部署属性,可以创建一个名为META-INF/context.xml的文件放入应用目录,以提供额外的上下文配置。 安全管理在Tomcat7中也是重要的一环...

    树莓派bt下载机.pdf

    Transmission的配置文件通常位于/root/.config/transmission-daemon/settings.json路径下,用户可直接编辑此JSON格式的文件以调整其设置: 1. "alt-speed-up"和"alt-speed-down"用于设置上传和下载的限速。 2. "alt-...

    nginx(1-9-8).syno.tar官方镜像

    Nginx项目一开始就非常关注高并发,高性能和低内存使用。它获得了两节式BSD许可,并在Linux,BSD变体,Mac OS X,Solaris,AIX,HP-UX以及其他* nix版本上运行。它还具有用于Microsoft Windows的概念证明端口。 ...

    JAVA与c++上分别的corba配置

    在命令行中,使用`start orbd`启动ORBD,并指定主机名和端口号。对于OmniORB,还需要在注册表中配置Naming Service的初始引用。 8. **ORB Initial References**: 在Windows注册表的`HKEY_LOCAL_MACHINE\SOFTWARE\...

    ex-crawler

    这款爬虫软件分为两个主要组件:一个是守护进程(Daemon),另一个是可配置的 Web 爬虫。这样的架构使得 Ex-Crawler 具有高度的稳定性和可扩展性,能够适应各种复杂的网页抓取需求。 守护进程是 Ex-Crawler 的核心...

    Windows下搭建SVN服务器

    - 使用命令行进入SVN服务启动目录,执行命令`svnserve --daemon --root D:\svn\svn_repository`来启动SVN服务。 - 其中`--daemon`表示以守护进程方式运行,`--root`参数指定了仓库根目录。 #### 六、客户端连接与...

Global site tag (gtag.js) - Google Analytics