title: should i call ProcessEngines.getDefaultProcessEngine(); every time?
body: <p>i'm coding to develop REST backend server with activiti7.<br />
  i tried to initialize RepositoryService field by @Autowired annotation.<br />
  when i execute below code i got this error</p>
  <blockquote>
  <p>java.lang.NullPointerException: Cannot invoke
  &quot;org.activiti.engine.impl.interceptor.CommandContext.getProcessDefinitionEntityManager()&quot;
  because &quot;commandContext&quot; is null  at
  org.activiti.engine.impl.ProcessDefinitionQueryImpl.executeList(ProcessDefinitionQueryImpl.java:343)
  ~[activiti-engine-7.1.0.M2.jar:na]    at
  org.activiti.engine.impl.AbstractQuery.list(AbstractQuery.java:139)
  ~[activiti-engine-7.1.0.M2.jar:na]    at
  com.sapa.service.impl.ProcessServiceImpl.getAvailableProcesses(ProcessServiceImpl.java:31)
  ~[main/:na]   at
  com.sapa.controller.activiti.ProcessController.getAvailableProcesses(ProcessController.java:33)
  ~[main/:na]   at
  java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
  Method) ~[na:na]  at
  java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
  ~[na:na]  at
  java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  ~[na:na]  at
  java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]
  at
  org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
  ~[spring-web-5.3.12.jar:5.3.12]   at
  org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150)
  ~[spring-web-5.3.12.jar:5.3.12]   at
  org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)
  ~[spring-webmvc-5.3.12.jar:5.3.12]    at
  org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)
  ~[spring-webmvc-5.3.12.jar:5.3.12]    at
  org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)
  ~[spring-webmvc-5.3.12.jar:5.3.12]    at
  org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
  ~[spring-webmvc-5.3.12.jar:5.3.12]    at
  org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1067)
  ~[spring-webmvc-5.3.12.jar:5.3.12]    at
  org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963)
  ~[spring-webmvc-5.3.12.jar:5.3.12]    at
  org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
  ~[spring-webmvc-5.3.12.jar:5.3.12]    at
  org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
  ~[spring-webmvc-5.3.12.jar:5.3.12]    at
  javax.servlet.http.HttpServlet.service(HttpServlet.java:681)
  ~[tomcat-embed-core-9.0.54.jar:4.0.FR]    at
  org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
  ~[spring-webmvc-5.3.12.jar:5.3.12]    at
  javax.servlet.http.HttpServlet.service(HttpServlet.java:764)
  ~[tomcat-embed-core-9.0.54.jar:4.0.FR]    at
  org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)
  ~[tomcat-embed-core-9.0.54.jar:9.0.54]    at
  org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
  ~[tomcat-embed-core-9.0.54.jar:9.0.54]    at
  org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
  ~[tomcat-embed-websocket-9.0.54.jar:9.0.54]   at
  org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
  ~[tomcat-embed-core-9.0.54.jar:9.0.54]    at
  org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
  ~[tomcat-embed-core-9.0.54.jar:9.0.54]    at
  org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:327)
  ~[spring-security-web-5.5.3.jar:5.5.3]    at
  org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115)
  ~[spring-security-web-5.5.3.jar:5.5.3]    at
  org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81)
  ~[spring-security-web-5.5.3.jar:5.5.3]    at
  org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
  ~[spring-security-web-5.5.3.jar:5.5.3]    at
  org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:121)
  ~[spring-security-web-5.5.3.jar:5.5.3]    at
  org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:115)
  ~[spring-security-web-5.5.3.jar:5.5.3]    at
  org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
  ~[spring-security-web-5.5.3.jar:5.5.3]    at
  org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126)
  ~[spring-security-web-5.5.3.jar:5.5.3]    at
  org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81)
  ~[spring-security-web-5.5.3.jar:5.5.3]    at
  org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
  ~[spring-security-web-5.5.3.jar:5.5.3]    at
  org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:105)
  ~[spring-security-web-5.5.3.jar:5.5.3]    at
  org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
  ~[spring-security-web-5.5.3.jar:5.5.3]    at
  org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149)
  ~[spring-security-web-5.5.3.jar:5.5.3]    at
  org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
  ~[spring-security-web-5.5.3.jar:5.5.3]    at
  org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)
  ~[spring-security-web-5.5.3.jar:5.5.3]    at
  org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
  ~[spring-security-web-5.5.3.jar:5.5.3]    at
  com.sapa.config.security.JwtAuthenticationFilter.doFilterInternal(JwtAuthenticationFilter.java:38)
  ~[main/:na]   at
  org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
  ~[spring-web-5.3.12.jar:5.3.12]   at
  org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
  ~[spring-security-web-5.5.3.jar:5.5.3]    at
  org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103)
  ~[spring-security-web-5.5.3.jar:5.5.3]    at
  org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89)
  ~[spring-security-web-5.5.3.jar:5.5.3]    at
  org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
  ~[spring-security-web-5.5.3.jar:5.5.3]    at
  org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)
  ~[spring-security-web-5.5.3.jar:5.5.3]    at
  org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)
  ~[spring-security-web-5.5.3.jar:5.5.3]    at
  org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
  ~[spring-web-5.3.12.jar:5.3.12]   at
  org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
  ~[spring-security-web-5.5.3.jar:5.5.3]    at
  org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110)
  ~[spring-security-web-5.5.3.jar:5.5.3]    at
  org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)
  ~[spring-security-web-5.5.3.jar:5.5.3]    at
  org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
  ~[spring-security-web-5.5.3.jar:5.5.3]    at
  org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55)
  ~[spring-security-web-5.5.3.jar:5.5.3]    at
  org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
  ~[spring-web-5.3.12.jar:5.3.12]   at
  org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
  ~[spring-security-web-5.5.3.jar:5.5.3]    at
  org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:211)
  ~[spring-security-web-5.5.3.jar:5.5.3]    at
  org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183)
  ~[spring-security-web-5.5.3.jar:5.5.3]    at
  org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358)
  ~[spring-web-5.3.12.jar:5.3.12]   at
  org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271)
  ~[spring-web-5.3.12.jar:5.3.12]   at
  org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
  ~[tomcat-embed-core-9.0.54.jar:9.0.54]    at
  org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
  ~[tomcat-embed-core-9.0.54.jar:9.0.54]    at
  org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
  ~[spring-web-5.3.12.jar:5.3.12]   at
  org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
  ~[spring-web-5.3.12.jar:5.3.12]   at
  org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
  ~[tomcat-embed-core-9.0.54.jar:9.0.54]    at
  org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
  ~[tomcat-embed-core-9.0.54.jar:9.0.54]    at
  org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
  ~[spring-web-5.3.12.jar:5.3.12]   at
  org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
  ~[spring-web-5.3.12.jar:5.3.12]   at
  org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
  ~[tomcat-embed-core-9.0.54.jar:9.0.54]    at
  org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
  ~[tomcat-embed-core-9.0.54.jar:9.0.54]    at
  org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
  ~[spring-web-5.3.12.jar:5.3.12]   at
  org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
  ~[spring-web-5.3.12.jar:5.3.12]   at
  org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
  ~[tomcat-embed-core-9.0.54.jar:9.0.54]    at
  org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
  ~[tomcat-embed-core-9.0.54.jar:9.0.54]    at
  org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197)
  ~[tomcat-embed-core-9.0.54.jar:9.0.54]    at
  org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
  ~[tomcat-embed-core-9.0.54.jar:9.0.54]    at
  org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:540)
  ~[tomcat-embed-core-9.0.54.jar:9.0.54]    at
  org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)
  ~[tomcat-embed-core-9.0.54.jar:9.0.54]    at
  org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
  ~[tomcat-embed-core-9.0.54.jar:9.0.54]    at
  org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
  ~[tomcat-embed-core-9.0.54.jar:9.0.54]    at
  org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)
  ~[tomcat-embed-core-9.0.54.jar:9.0.54]    at
  org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:382)
  ~[tomcat-embed-core-9.0.54.jar:9.0.54]    at
  org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
  ~[tomcat-embed-core-9.0.54.jar:9.0.54]    at
  org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:895)
  ~[tomcat-embed-core-9.0.54.jar:9.0.54]    at
  org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1722)
  ~[tomcat-embed-core-9.0.54.jar:9.0.54]    at
  org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
  ~[tomcat-embed-core-9.0.54.jar:9.0.54]    at
  org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
  ~[tomcat-embed-core-9.0.54.jar:9.0.54]    at
  org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
  ~[tomcat-embed-core-9.0.54.jar:9.0.54]    at
  org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
  ~[tomcat-embed-core-9.0.54.jar:9.0.54]    at
  java.base/java.lang.Thread.run(Thread.java:833) ~[na:na]</p>
  </blockquote>
  <pre><code>@Service
  public class ProcessServiceImpl implements ProcessService {
      private RepositoryService repositoryService;
  
      @Autowired
      public void ProcessServiceImpl(RepositoryService repositoryService){
          this.repositoryService = repositoryService;
      }
  
      @Override
      public void deployProcess() {
          repositoryService.createDeployment().addClasspathResource(&quot;processes/test.bpmn20.xml&quot;).deploy();
      }
  
      @Override
      public List&lt;ProcessDefinition&gt; getAvailableProcesses() {
          return repositoryService.createProcessDefinitionQuery().list();
      }
  }
  </code></pre>
  <p>when i get repositoryService by processEngine. the error is gone and works fine.
  but getting repositoryService by processEngine is looks like redundant.
  should i write this 2 line code in every method i want to use RepositoryService?
  <code>ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();</code><br />
  <code>RepositoryService repositoryService = processEngine.getRepositoryService();</code></p>
  <pre><code>    //this code is working but unnecessary duplication is exist
      @Service
      public class ProcessServiceImpl implements ProcessService {
      
          @Override
          public void deployProcess() {
              //if i have 100 methods should i call it 100 times?
              ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
              RepositoryService repositoryService = processEngine.getRepositoryService();
              repositoryService.createDeployment().addClasspathResource(&quot;processes/test.bpmn20.xml&quot;).deploy();
          }
      
          @Override
          public List&lt;ProcessDefinition&gt; getAvailableProcesses() {
              //if i have 100 methods should i call it 100 times?
              ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
              RepositoryService repositoryService = processEngine.getRepositoryService();
              return repositoryService.createProcessDefinitionQuery().list();
          }
      }
  </code></pre>