Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot 作为守护程序服务的Spring启动应用程序?_Spring Boot_Apache Kafka_Daemon_Apache Commons Daemon - Fatal编程技术网

Spring boot 作为守护程序服务的Spring启动应用程序?

Spring boot 作为守护程序服务的Spring启动应用程序?,spring-boot,apache-kafka,daemon,apache-commons-daemon,Spring Boot,Apache Kafka,Daemon,Apache Commons Daemon,我是一个刚开始学习Spring Boot的新手。我觉得这是一个非常有用的工具,可以轻松地开发Java应用程序 另一方面,我正在考虑开发一个守护进程服务,该服务通过Kafka使用者API从ApacheKafka收集数据/消息,并对检索到的数据进行一些处理。当然,整个过程都是定期进行的 因此,我一直在使用ApacheCommons守护程序作为守护程序开发应用程序。然而,我现在想用SpringBoot来代替它 是否有可能通过Spring Boot实现这样的服务应用程序?如果可能,请告诉我如何实施。提前

我是一个刚开始学习Spring Boot的新手。我觉得这是一个非常有用的工具,可以轻松地开发Java应用程序

另一方面,我正在考虑开发一个守护进程服务,该服务通过Kafka使用者API从ApacheKafka收集数据/消息,并对检索到的数据进行一些处理。当然,整个过程都是定期进行的

因此,我一直在使用ApacheCommons守护程序作为守护程序开发应用程序。然而,我现在想用SpringBoot来代替它


是否有可能通过Spring Boot实现这样的服务应用程序?如果可能,请告诉我如何实施。提前谢谢

我在某个地方发现了这一点,因此向最初的所有者表示歉意,但我创建了一个项目,在其中添加了spring引导加载程序依赖项


org.springframework.boot
弹簧引导加载程序
假如
因为需要扩展JarLauncher类。 SpringBoot提供了一个特殊的启动器,用于更改java行为类装入器。类org.springframework.boot.loader.JarLauncher创建一个特殊的类加载器并提升应用程序

因为我想以窗口服务的形式启动应用程序,所以我选择Procrun作为服务管理器。 PROCUN需要两个start和stop方法或一个带有字符串数组参数的方法(有关详细信息,请参阅PROCUN项目)。因此,我创建了一个Bootsrap类来扩展JarLauncher并实现Procrun需要的方法

public类引导程序扩展了JarLauncher{
私有静态类加载器ClassLoader=null;
私有静态引导引导=null;
受保护的无效启动(字符串[]args、字符串mainClass、类加载器类加载器、布尔等待)
抛出异常{
Runnable runner=createMainMethodRunner(mainClass、args、classLoader);
螺纹流道螺纹=新螺纹(流道);
setContextClassLoader(classLoader);
setName(Thread.currentThread().getName());
runnerThread.start();
if(wait==true){
runnerThread.join();
}
}
公共静态无效开始(字符串[]args){
bootstrap=newbootstrap();
试一试{
registerUrlProtocolHandler();
classLoader=bootstrap.createClassLoader(bootstrap.getClassPathArchives());
launch(args,bootstrap.getMainClass(),classLoader,true);
}
捕获(例外情况除外){
例如printStackTrace();
系统出口(1);
}
}
公共静态无效停止(字符串[]args){
试一试{
if(引导!=null){
launch(args,bootstrap.getMainClass(),classLoader,true);
bootstrap=null;
classLoader=null;
}
}
捕获(例外情况除外){
例如printStackTrace();
系统出口(1);
}
}
公共静态void main(字符串[]args){
字符串模式=args!=null&&args.length>0?args[0]:null;
如果(“开始”。等于(模式)){
启动(args);
}
否则,如果(“停止”。等于(模式)){
引导停止(args);
}
}
}
在spring boot应用程序类中,我使用以下方法更改了主方法:

private static ApplicationContext ApplicationContext=null;
公共静态void main(字符串[]args){
字符串模式=args!=null&&args.length>0?args[0]:null;
if(logger.isDebugEnabled()){
logger.debug(“PID:+ManagementFactory.getRuntimeMXBean().getName()+
“应用程序模式:“+mode+”上下文:“+applicationContext”);
}
if(applicationContext!=null&&mode!=null&&stop.equals(mode)){
System.exit(SpringApplication.exit(applicationContext,新的ExitCodeGenerator()){
@凌驾
public int getExitCode(){
返回0;
}
}));
}
否则{
SpringApplication app=新的SpringApplication(testProcUnapplication.class);
applicationContext=app.run(args);
if(logger.isDebugEnabled()){
logger.debug(“PID:+ManagementFactory.getRuntimeMXBean().getName()+
“应用程序启动上下文:”+applicationContext);
}
}
}
然后,我用
prunsrv.exe
安装了该服务:

prunsrv.exe//IS//test-proclun--DisplayName=“test-proclun”--Description=“test-proclun”--Startup=auto--Install=%CD%\prunsrv.exe--Jvm=auto--Classpath=%CD%..\target\test-procrun-0.0.1-SNAPSHOT.jar--StartMode=Jvm--StartClass=it.test.procrun.Bootstrap--StartMethod=start--StartParams=Jvm--StopClass=it.test procrun.Bootstrap--StopMethod=StopMethod=auto----stlogror--path=%CD%--日志级别=调试


谢谢你的帮助!顺便说一句,很抱歉我忘了提到我正在寻找Linux环境下的守护进程服务,特别是CentOS 7。你能给我一些建议吗?我想你是从:,hth-adym那里得到的