

While working with multiple spring boot application, It’s difficult to identify spring boot application PID so spring boot provide ways to write application PID to file while application will startup. Here is example of write Spring boot application process id to separate file using ApplicationPidFileWriter
.
Table of Contents
SpringBootConfig
org.springframework.boot.system.ApplicationPidFileWriter
is listener which is responsible to write PID to specified configuration.
package com.javadeveloperzone; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.system.ApplicationPidFileWriter; import org.springframework.context.annotation.ComponentScan; /** * Created by JavaDeveloperZone on 19-07-2017. */ @SpringBootApplication @ComponentScan // Using a root package also allows the @ComponentScan annotation to be used without needing to specify a basePackage attribute public class SpringBootConfig { public static void main(String[] args) throws Exception { SpringApplication springApplication = new SpringApplication(SpringBootConfig.class); springApplication.addListeners(new ApplicationPidFileWriter()); // register PID write to spring boot. It will write PID to file springApplication.run(args); } }
application.properties
When spring boot application will start, It will write process id to specified file at spring.pid.file
configuration. spring.pid.file
is optional, If this properties is not not specified then spring boot will create application.pid
file at root location of spring boot application jar.
spring.pid.file=e:\\spring-boot-pid\\pid.txt #Location of the PID file to write
Output:
. ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v1.5.4.RELEASE) 2017-09-23 13:35:55.387 INFO 74672 --- [ main] com.javadeveloperzone.SpringBootConfig : Starting SpringBootConfig on Mahesh with PID 74672 (F:\extrawork\spring-boot\spring-boot-pid-example\target\classes started by Lenovo in F:\extrawork\spring-boot\spring-boot-pid-example) 2017-09-23 13:35:55.391 INFO 74672 --- [ main] com.javadeveloperzone.SpringBootConfig : No active profile set, falling back to default profiles: default 2017-09-23 13:35:55.479 INFO 74672 --- [ main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@37883b97: startup date [Sat Sep 23 13:35:55 IST 2017]; root of context hierarchy 2017-09-23 13:35:58.768 INFO 74672 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialized with port(s): 8080 (http) 2017-09-23 13:35:58.789 INFO 74672 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat] 2017-09-23 13:35:58.792 INFO 74672 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/8.5.15 2017-09-23 13:35:58.921 INFO 74672 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 2017-09-23 13:35:58.922 INFO 74672 --- [ost-startStop-1] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 3448 ms 2017-09-23 13:35:59.135 INFO 74672 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean : Mapping servlet: 'dispatcherServlet' to [/] 2017-09-23 13:35:59.140 INFO 74672 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'characterEncodingFilter' to: [/*] 2017-09-23 13:35:59.141 INFO 74672 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'hiddenHttpMethodFilter' to: [/*] 2017-09-23 13:35:59.141 INFO 74672 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'httpPutFormContentFilter' to: [/*] 2017-09-23 13:35:59.141 INFO 74672 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'requestContextFilter' to: [/*] 2017-09-23 13:35:59.546 INFO 74672 --- [ main] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@37883b97: startup date [Sat Sep 23 13:35:55 IST 2017]; root of context hierarchy 2017-09-23 13:35:59.634 INFO 74672 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[]}" onto public java.lang.String com.javadeveloperzone.controller.SpringBootExampleController.hello() 2017-09-23 13:35:59.642 INFO 74672 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest) 2017-09-23 13:35:59.642 INFO 74672 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) 2017-09-23 13:35:59.698 INFO 74672 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 2017-09-23 13:35:59.698 INFO 74672 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 2017-09-23 13:35:59.754 INFO 74672 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 2017-09-23 13:36:00.082 INFO 74672 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Registering beans for JMX exposure on startup 2017-09-23 13:36:00.206 INFO 74672 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http) 2017-09-23 13:36:00.214 INFO 74672 --- [ main] com.javadeveloperzone.SpringBootConfig : Started SpringBootConfig in 5.317 seconds (JVM running for 5.979)
It will create file and write application pid to file, We can refer this PID for future references:
If spring.pid.file is specified:

Spring boot ApplicationPidFileWriter Example – Process ID writer example
If spring.pid.file is not specified:

Spring boot ApplicationPidFileWriter Example application.pid
References :
Spring Boot Document – Process monitor