Enable APM for springboot running on windows

Hello ,

I want to enable APM for java application running on tomcat server(windows). I’ve followed the steps mentioned in the setup-tomcat-windows . I have restarted the tomcat service running on windows but it was not working. I don’t know how to configure the environment variables in windows . I know we can set up these variables in tomcat9w.exe file but i don’t want to touch the any .exe file . Below is the output of setenv.bat present in C:/tomcat9/bin/

set CATALINA_OPTS=%CATALINA_OPTS% -javaagent:C:\APM\elastic-apm-agent.jar
set CATALINA_OPTS=%CATALINA_OPTS% -Delastic.apm.service_name=my-cool-service
set CATALINA_OPTS=%CATALINA_OPTS% -Delastic.apm.server_url=https://apm-url
set CATALINA_OPTS=%CATALINA_OPTS% -Delastic.apm.environment=Development
set CATALINA_OPTS=%CATALINA_OPTS% -Delastic.apm.secret_token=secret_token

How can we load the environment variable by creating .bat file in tomcat ?

Hi !

First I would suggest to add quotes to be sure that the values are the ones we expect, you should also be able to use / instead of \ for file path to prevent any unexpected escape sequence.

set CATALINA_OPTS=""
set CATALINA_OPTS="%CATALINA_OPTS% -javaagent:C:/APM/lastic-apm-agent.jar"
set CATALINA_OPTS="%CATALINA_OPTS% -Delastic.apm.service_name=my-cool-service"
set CATALINA_OPTS="%CATALINA_OPTS% -Delastic.apm.server_url=https://apm-url"
set CATALINA_OPTS="%CATALINA_OPTS% -Delastic.apm.environment=Development"
set CATALINA_OPTS="%CATALINA_OPTS% -Delastic.apm.secret_token=secret_token"

Then, when tomcat starts, you should have some or all of those values printed in the tomcat log, do you have anything there ?

Also, if the `-javaagent` argument does not point to a valid instrumentation agent, the JVM will fail to start with an explicit log message.

Hi @Sylvain_Juge ,

I have modified setenv.bat , but still i am not able to get the data.


set CATALINA_OPTS=""
set CATALINA_OPTS="%CATALINA_OPTS% -javaagent:C:/APM/elastic-apm-agent.jar"
set CATALINA_OPTS="%CATALINA_OPTS% -Delastic.apm.service_name=my-cool-service"
set CATALINA_OPTS="%CATALINA_OPTS% -Delastic.apm.server_url=https://apm-server:443"
set CATALINA_OPTS="%CATALINA_OPTS% -Delastic.apm.environment=Development"
set CATALINA_OPTS="%CATALINA_OPTS% -Delastic.apm.secret_token=secret_token"

The first thing to check is that the JVM options like `-javaagent` are properly passed to the JVM.

To do that, the simplest solution is to use `jps -lv` with CLI, or to use `jconsole`, then look at the parameters of the running JVMs.

Then, once you are sure the parameters are properly added to the JVM arguments, in CLI you should try to run tomcat with `bin/catalina.bat run` , if everything is setup properly the `Starting Elastic APM` message will be visible in the logs on the standard output, with the agent version.

If everything is working as expected, the next step is to trigger a few HTTP requests on your application/tomcat server, then wait for the data to be sent to the APM backend. If there are any communication issues this should be visible in the standard output as well.

Hi @Sylvain_Juge ,

I run jps -lv command on cmd and below is the output

C:\Program Files\Java\jdk-25\bin>jps.exe -lv
880 jdk.jcmd/sun.tools.jps.Jps -Dapplication.home=C:\Program Files\Java\jdk-25 -Xms8m -Djdk.module.main=jdk.jcmd

Output of catalina.bat

C:\apache-tomcat-9\bin>catalina.bat run
Using CATALINA_BASE:   "C:\apache-tomcat-9"
Using CATALINA_HOME:   "C:\apache-tomcat-9"
Using CATALINA_TMPDIR: "C:\apache-tomcat-9\temp"
Using JRE_HOME:        "C:\Program Files\Java\jdk-25\"
Using CLASSPATH:       "C:\apache-tomcat-9\bin\bootstrap.jar;C:\apache-tomcat-9\bin\tomcat-juli.jar"
Using CATALINA_OPTS:   """""""" -javaagent:C:/APM/elastic-apm-agent.jar" -Delastic.apm.service_name=my-cool-service" -Delastic.apm.server_url=https://50657be900ce43f2bd5c58af83ae4733.centralindia.azure.elastic-cloud.com:443" -Delastic.apm.environment=Development" -Delastic.apm.secret_token=gJYP5lxGQx0tnIniMH""
NOTE: Picked up JDK_JAVA_OPTIONS:  --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
Error: Could not find or load main class """ -javaagent:C:.APM.elastic-apm-agent.jar
Caused by: java.lang.ClassNotFoundException: """ -javaagent:C:.APM.elastic-apm-agent.jar

I don’t know why it is not setting environment variables properly

Hello @Aniket_Pant

As per the documentation we do not see the quotes can that be causing issue? also in your output we do see the error :

Error: Could not find or load main class """ -javaagent:C:.APM.elastic-apm-agent.jar
Caused by: java.lang.ClassNotFoundException: """ -javaagent:C:.APM.elastic-apm-agent.jar

Could you please try without the quotes?

set CATALINA_OPTS=%CATALINA_OPTS% -javaagent:C:/path/to/elastic-apm-agent-<version>.jar
set CATALINA_OPTS=%CATALINA_OPTS% -Delastic.apm.service_name=my-cool-service
set CATALINA_OPTS=%CATALINA_OPTS% -Delastic.apm.application_packages=org.example,org.another.example
set CATALINA_OPTS=%CATALINA_OPTS% -Delastic.apm.server_url=http://127.0.0.1:8200

I think like below and see what is the error ?

set CATALINA_OPTS=
set CATALINA_OPTS=%CATALINA_OPTS% -javaagent:C:/APM/elastic-apm-agent.jar
set CATALINA_OPTS=%CATALINA_OPTS% -Delastic.apm.service_name=my-cool-service
set CATALINA_OPTS=%CATALINA_OPTS% -Delastic.apm.server_url=https://50657be900ce43f2bd5c58af83ae4733.centralindia.azure.elastic-cloud.com:443
set CATALINA_OPTS=%CATALINA_OPTS% -Delastic.apm.environment=Development
set CATALINA_OPTS=%CATALINA_OPTS% -Delastic.apm.secret_token=gJYP5lxGQx0tnIniMH

Thanks!!

Hi @Tortoise ,

Now i am using below environment variable.

set CATALINA_OPTS=
set CATALINA_OPTS=%CATALINA_OPTS% -javaagent:C:\APM\elastic-apm-agent.jar
set CATALINA_OPTS=%CATALINA_OPTS% -Delastic.apm.service_name=Login_UI
set CATALINA_OPTS=%CATALINA_OPTS% -Delastic.apm.server_url=https://50657be900ce43f2bd5c58af83ae4733.centralindia.azure.elastic-cloud.com:443
set CATALINA_OPTS=%CATALINA_OPTS% -Delastic.apm.environment=Development
set CATALINA_OPTS=%CATALINA_OPTS% -Delastic.apm.secret_token=gJYP5lxGQx0tnIniMH

After that i run catalina.bat run and i got my application performance metrics.

C:\apache-tomcat-9\bin>catalina.bat run
Using CATALINA_BASE:   "C:\apache-tomcat-9"
Using CATALINA_HOME:   "C:\apache-tomcat-9"
Using CATALINA_TMPDIR: "C:\apache-tomcat-9\temp"
Using JRE_HOME:        "C:\Program Files\Java\jdk-25\"
Using CLASSPATH:       "C:\apache-tomcat-9\bin\bootstrap.jar;C:\apache-tomcat-9\bin\tomcat-juli.jar"
Using CATALINA_OPTS:   " -javaagent:C:\APM\elastic-apm-agent.jar -Delastic.apm.service_name=Login_UI -Delastic.apm.server_url=https://50657be900ce43f2bd5c58af83ae4733.centralindia.azure.elastic-cloud.com:443 -Delastic.apm.environment=Development -Delastic.apm.secret_token=gJYP5lxGQx0tnIniMH"
NOTE: Picked up JDK_JAVA_OPTIONS:  --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
WARNING: A terminally deprecated method in sun.misc.Unsafe has been called
WARNING: sun.misc.Unsafe::arrayBaseOffset has been called by com.lmax.disruptor.RingBufferFields (file:/C:/APM/elastic-apm-agent.jar)
WARNING: Please consider reporting this to the maintainers of class com.lmax.disruptor.RingBufferFields
WARNING: sun.misc.Unsafe::arrayBaseOffset will be removed in a future release
2025-11-22 13:00:39,258 [main] INFO  co.elastic.apm.agent.util.JmxUtils - Found JVM-specific OperatingSystemMXBean interface: com.sun.management.OperatingSystemMXBean
2025-11-22 13:00:39,278 [main] INFO  co.elastic.apm.agent.util.JmxUtils - Found JVM-specific ThreadMXBean interface: com.sun.management.ThreadMXBean
2025-11-22 13:00:39,314 [main] INFO  co.elastic.apm.agent.configuration.StartupInfo - Starting Elastic APM 1.54.0 as Login_UI on Java 25.0.1 Runtime version: 25.0.1+8-LTS-27 VM version: 25.0.1+8-LTS-27 (Oracle Corporation) Windows 10 10.0
2025-11-22 13:00:39,318 [main] INFO  co.elastic.apm.agent.configuration.StartupInfo - service_name: 'Login_UI' (source: Java System Properties)
2025-11-22 13:00:39,321 [main] INFO  co.elastic.apm.agent.configuration.StartupInfo - environment: 'Development' (source: Java System Properties)
2025-11-22 13:00:39,324 [main] INFO  co.elastic.apm.agent.configuration.StartupInfo - secret_token: 'XXXX' (source: Java System Properties)
2025-11-22 13:00:39,326 [main] INFO  co.elastic.apm.agent.configuration.StartupInfo - server_url: 'https://50657be900ce43f2bd5c58af83ae4733.centralindia.azure.elastic-cloud.com:443' (source: Java System Properties)
2025-11-22 13:00:39,334 [main] WARN  co.elastic.apm.agent.configuration.StartupInfo - To enable all features and decrease startup time, please configure application_packages
2025-11-22 13:00:40,251 [elastic-apm-metadata-0] INFO  co.elastic.apm.agent.impl.metadata.SystemInfo - Failed to execute command "powershell.exe -NoLogo -NonInteractive -NoProfile -ExecutionPolicy Bypass -Command [System.Net.Dns]::GetHostEntry($env:computerName).HostName" with exit code 1
2025-11-22 13:00:42,417 [main] INFO  co.elastic.apm.agent.impl.ElasticApmTracer - Tracer switched to RUNNING state
2025-11-22 13:00:43,289 [elastic-apm-server-healthcheck] INFO  co.elastic.apm.agent.report.ApmServerHealthChecker - Elastic APM server is available: {  "build_date": "2025-11-06T16:40:45Z",  "build_sha": "08b07c99f47ff927eec5b2c0d8c560d8ff95086d",  "publish_ready": true,  "version": "8.19.7"}
2025-11-22 13:00:43,343 [elastic-apm-remote-config-poller] INFO  co.elastic.apm.agent.configuration.ApmServerConfigurationSource - Received new configuration from APM Server: {}
22-Nov-2025 13:00:43.246 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version name:   Apache Tomcat/9.0.112
22-Nov-2025 13:00:43.398 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built:          Nov 6 2025 07:46:18 UTC
22-Nov-2025 13:00:43.401 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version number: 9.0.112.0
22-Nov-2025 13:00:43.402 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name:               Windows 10
22-Nov-2025 13:00:43.403 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version:            10.0
22-Nov-2025 13:00:43.405 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture:          amd64
22-Nov-2025 13:00:43.406 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home:             C:\Program Files\Java\jdk-25
22-Nov-2025 13:00:43.407 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version:           25.0.1+8-LTS-27
22-Nov-2025 13:00:43.409 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor:            Oracle Corporation
22-Nov-2025 13:00:43.410 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE:         C:\apache-tomcat-9
22-Nov-2025 13:00:43.412 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME:         C:\apache-tomcat-9
22-Nov-2025 13:00:43.413 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.lang=ALL-UNNAMED
22-Nov-2025 13:00:43.420 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.lang.invoke=ALL-UNNAMED
22-Nov-2025 13:00:43.422 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.lang.reflect=ALL-UNNAMED
22-Nov-2025 13:00:43.424 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.io=ALL-UNNAMED
22-Nov-2025 13:00:43.425 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.util=ALL-UNNAMED
22-Nov-2025 13:00:43.427 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.util.concurrent=ALL-UNNAMED
22-Nov-2025 13:00:43.428 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
22-Nov-2025 13:00:43.429 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=C:\apache-tomcat-9\conf\logging.properties
22-Nov-2025 13:00:43.430 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
22-Nov-2025 13:00:43.434 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djdk.tls.ephemeralDHKeySize=2048
22-Nov-2025 13:00:43.436 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.protocol.handler.pkgs=org.apache.catalina.webresources
22-Nov-2025 13:00:43.438 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dsun.io.useCanonCaches=false
22-Nov-2025 13:00:43.440 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -javaagent:C:\APM\elastic-apm-agent.jar
22-Nov-2025 13:00:43.441 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Delastic.apm.service_name=Login_UI
22-Nov-2025 13:00:43.442 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Delastic.apm.server_url=https://50657be900ce43f2bd5c58af83ae4733.centralindia.azure.elastic-cloud.com:443
22-Nov-2025 13:00:43.444 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Delastic.apm.environment=Development
22-Nov-2025 13:00:43.445 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Delastic.apm.secret_token=gJYP5lxGQx0tnIniMH
22-Nov-2025 13:00:43.450 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dignore.endorsed.dirs=
22-Nov-2025 13:00:43.451 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=C:\apache-tomcat-9
22-Nov-2025 13:00:43.454 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=C:\apache-tomcat-9
22-Nov-2025 13:00:43.455 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=C:\apache-tomcat-9\temp
WARNING: A restricted method in java.lang.System has been called
WARNING: java.lang.System::load has been called by org.apache.tomcat.jni.Library in an unnamed module (file:/C:/apache-tomcat-9/lib/tomcat-jni.jar)
WARNING: Use --enable-native-access=ALL-UNNAMED to avoid a warning for callers in this module
WARNING: Restricted methods will be blocked in a future release unless native access is enabled

22-Nov-2025 13:00:43.476 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent Loaded Apache Tomcat Native library [1.3.1] using APR version [1.7.4].
22-Nov-2025 13:00:43.477 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true], UDS [true].
22-Nov-2025 13:00:43.478 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR/OpenSSL configuration: useAprConnector [false], useOpenSSL [true]
22-Nov-2025 13:00:43.493 INFO [main] org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL successfully initialized [OpenSSL 3.0.14 4 Jun 2024]
22-Nov-2025 13:00:43.980 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8080"]
22-Nov-2025 13:00:44.014 INFO [main] org.apache.catalina.startup.Catalina.load Server initialization in [1296] milliseconds
22-Nov-2025 13:00:44.088 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service [Catalina]
22-Nov-2025 13:00:44.091 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet engine: [Apache Tomcat/9.0.112]
22-Nov-2025 13:00:44.131 INFO [main] org.apache.catalina.startup.HostConfig.deployWAR Deploying web application archive [C:\apache-tomcat-9\webapps\ROOT.war]
22-Nov-2025 13:00:47.450 INFO [main] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::               (v2.7.18)

2025-11-22 13:00:49.789  INFO 9016 --- [           main] com.example.loginapp.LoginApplication    : Starting LoginApplication v1.0.0 using Java 25.0.1 on DESKTOP-9LCF4FQ with PID 9016 (C:\apache-tomcat-9\webapps\ROOT\WEB-INF\classes started by panta in C:\apache-tomcat-9\bin)
2025-11-22 13:00:49.799  INFO 9016 --- [           main] com.example.loginapp.LoginApplication    : No active profile set, falling back to 1 default profile: "default"
2025-11-22 13:00:52.669  INFO 9016 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 2780 ms
2025-11-22 13:00:54.321  INFO 9016 --- [           main] o.s.s.web.DefaultSecurityFilterChain     : Will secure any request with [org.springframework.security.web.session.DisableEncodeUrlFilter@2b79945f, org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@596eebdb, org.springframework.security.web.context.SecurityContextPersistenceFilter@1d45c571, org.springframework.security.web.header.HeaderWriterFilter@618ffc7a, org.springframework.security.web.csrf.CsrfFilter@4df62e64, org.springframework.security.web.authentication.logout.LogoutFilter@50ed196f, org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter@2feaa16c, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@3ecf69eb, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@1545b9da, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@4ed507b0, org.springframework.security.web.session.SessionManagementFilter@3c4c595e, org.springframework.security.web.access.ExceptionTranslationFilter@394c61cb, org.springframework.security.web.access.intercept.AuthorizationFilter@4da1d61b]
2025-11-22 13:00:55.543  INFO 9016 --- [           main] com.example.loginapp.LoginApplication    : Started LoginApplication in 7.212 seconds (JVM running for 17.662)
2025-11-22 13:00:55,630 [main] INFO  co.elastic.apm.agent.servlet.ServletVersionInstrumentation - Servlet container info = Apache Tomcat/9.0.112
22-Nov-2025 13:00:55.657 INFO [main] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive [C:\apache-tomcat-9\webapps\ROOT.war] has finished in [11,526] ms
22-Nov-2025 13:00:55.661 INFO [main] org.apache.catalina.startup.HostConfig.deployWAR Deploying web application archive [C:\apache-tomcat-9\webapps\spring-login-app-1.0.0.war]
22-Nov-2025 13:00:55.824 WARNING [main] org.apache.tomcat.util.descriptor.web.WebXml.setVersion Unknown version string [5.0]. Default version will be used.
22-Nov-2025 13:00:58.208 INFO [main] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
22-Nov-2025 13:00:58.224 INFO [main] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive [C:\apache-tomcat-9\webapps\spring-login-app-1.0.0.war] has finished in [2,563] ms
22-Nov-2025 13:00:58.226 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [C:\apache-tomcat-9\webapps\docs]
22-Nov-2025 13:00:58.278 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [C:\apache-tomcat-9\webapps\docs] has finished in [52] ms
22-Nov-2025 13:00:58.279 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [C:\apache-tomcat-9\webapps\examples]
22-Nov-2025 13:00:58.948 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [C:\apache-tomcat-9\webapps\examples] has finished in [668] ms
22-Nov-2025 13:00:58.949 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [C:\apache-tomcat-9\webapps\host-manager]
22-Nov-2025 13:00:59.030 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [C:\apache-tomcat-9\webapps\host-manager] has finished in [81] ms
22-Nov-2025 13:00:59.032 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [C:\apache-tomcat-9\webapps\manager]
22-Nov-2025 13:00:59.092 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [C:\apache-tomcat-9\webapps\manager] has finished in [61] ms
22-Nov-2025 13:00:59.103 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
22-Nov-2025 13:00:59.133 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in [15116] milliseconds

Next i do close the terminal and run the tomcat as service from service.msc then it is not working and in the logs no apm related logs are showing and even apm variable is not there.

Hello @Aniket_Pant

As Sylvian suggested now you are able to see the below message in the log which means the configuration is correct :

2025-11-22 13:00:39,314 [main] INFO  co.elastic.apm.agent.configuration.StartupInfo - Starting Elastic APM 1.54.0 as Login_UI on Java 25.0.1 Runtime version: 25.0.1+8-LTS-27 VM version: 25.0.1+8-LTS-27 (Oracle Corporation) Windows 10 10.0

Next maybe you should try below :

If everything is working as expected, the next step is to trigger a few HTTP requests on your application/tomcat server, then wait for the data to be sent to the APM backend. If there are any communication issues this should be visible in the standard output as well.

Thanks!!

Hi @Tortoise

It is working when i am running tomcat by using startup.bat and catalina.bat , however if i run tomcat as tomcat9 service then it is not working. The service file is not taking up the environment variable. I have pasted the logs below for your reference.

22-Nov-2025 18:55:22.280 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version name:   Apache Tomcat/9.0.112
22-Nov-2025 18:55:22.285 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built:          Nov 6 2025 07:46:18 UTC
22-Nov-2025 18:55:22.286 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version number: 9.0.112.0
22-Nov-2025 18:55:22.286 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name:               Windows 10
22-Nov-2025 18:55:22.286 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version:            10.0
22-Nov-2025 18:55:22.287 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture:          amd64
22-Nov-2025 18:55:22.287 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home:             C:\Program Files\Java\jdk-25
22-Nov-2025 18:55:22.287 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version:           25.0.1+8-LTS-27
22-Nov-2025 18:55:22.288 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor:            Oracle Corporation
22-Nov-2025 18:55:22.288 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE:         C:\apache-tomcat-9
22-Nov-2025 18:55:22.288 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME:         C:\apache-tomcat-9
22-Nov-2025 18:55:22.300 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=C:\apache-tomcat-9
22-Nov-2025 18:55:22.300 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=C:\apache-tomcat-9
22-Nov-2025 18:55:22.301 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dignore.endorsed.dirs=C:\apache-tomcat-9\endorsed
22-Nov-2025 18:55:22.301 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=C:\apache-tomcat-9\temp
22-Nov-2025 18:55:22.301 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
22-Nov-2025 18:55:22.301 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=C:\apache-tomcat-9\conf\logging.properties
22-Nov-2025 18:55:22.302 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dsun.io.useCanonCaches=false
22-Nov-2025 18:55:22.302 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.lang=ALL-UNNAMED
22-Nov-2025 18:55:22.302 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.lang.invoke=ALL-UNNAMED
22-Nov-2025 18:55:22.302 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.lang.reflect=ALL-UNNAMED
22-Nov-2025 18:55:22.302 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.io=ALL-UNNAMED
22-Nov-2025 18:55:22.303 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.util=ALL-UNNAMED
22-Nov-2025 18:55:22.303 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.util.concurrent=ALL-UNNAMED
22-Nov-2025 18:55:22.303 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
22-Nov-2025 18:55:22.303 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: exit
22-Nov-2025 18:55:22.303 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: abort
22-Nov-2025 18:55:22.304 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xms512m
22-Nov-2025 18:55:22.304 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xmx1024m
22-Nov-2025 18:55:22.446 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent Loaded Apache Tomcat Native library [1.3.1] using APR version [1.7.4].
22-Nov-2025 18:55:22.446 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true], UDS [true].
22-Nov-2025 18:55:22.447 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR/OpenSSL configuration: useAprConnector [false], useOpenSSL [true]
22-Nov-2025 18:55:22.460 INFO [main] org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL successfully initialized [OpenSSL 3.0.14 4 Jun 2024]
22-Nov-2025 18:55:23.042 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8080"]
22-Nov-2025 18:55:23.082 INFO [main] org.apache.catalina.startup.Catalina.load Server initialization in [1124] milliseconds
22-Nov-2025 18:55:23.162 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service [Catalina]
22-Nov-2025 18:55:23.162 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet engine: [Apache Tomcat/9.0.112]
22-Nov-2025 18:55:23.217 INFO [main] org.apache.catalina.startup.HostConfig.deployWAR Deploying web application archive [C:\apache-tomcat-9\webapps\ROOT.war]
22-Nov-2025 18:55:29.453 INFO [main] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
22-Nov-2025 18:55:35.205 INFO [main] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive [C:\apache-tomcat-9\webapps\ROOT.war] has finished in [11,985] ms
22-Nov-2025 18:55:35.234 INFO [main] org.apache.catalina.startup.HostConfig.deployWAR Deploying web application archive [C:\apache-tomcat-9\webapps\spring-login-app-1.0.0.war]
22-Nov-2025 18:55:37.874 WARNING [main] org.apache.tomcat.util.descriptor.web.WebXml.setVersion Unknown version string [5.0]. Default version will be used.
22-Nov-2025 18:55:40.699 INFO [main] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
22-Nov-2025 18:55:40.710 INFO [main] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive [C:\apache-tomcat-9\webapps\spring-login-app-1.0.0.war] has finished in [5,476] ms
22-Nov-2025 18:55:40.711 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [C:\apache-tomcat-9\webapps\docs]
22-Nov-2025 18:55:40.803 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [C:\apache-tomcat-9\webapps\docs] has finished in [92] ms
22-Nov-2025 18:55:40.804 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [C:\apache-tomcat-9\webapps\examples]
22-Nov-2025 18:55:43.186 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [C:\apache-tomcat-9\webapps\examples] has finished in [2,382] ms
22-Nov-2025 18:55:43.187 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [C:\apache-tomcat-9\webapps\host-manager]
22-Nov-2025 18:55:43.310 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [C:\apache-tomcat-9\webapps\host-manager] has finished in [122] ms
22-Nov-2025 18:55:43.310 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [C:\apache-tomcat-9\webapps\manager]
22-Nov-2025 18:55:43.409 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [C:\apache-tomcat-9\webapps\manager] has finished in [99] ms
22-Nov-2025 18:55:43.416 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
22-Nov-2025 18:55:43.464 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in [20379] milliseconds
22-Nov-2025 19:01:09.853 INFO [Thread-3] org.apache.coyote.AbstractProtocol.pause Pausing ProtocolHandler ["http-nio-8080"]
22-Nov-2025 19:01:09.872 INFO [Thread-3] org.apache.catalina.core.StandardService.stopInternal Stopping service [Catalina]
22-Nov-2025 19:01:09.950 INFO [Thread-3] org.apache.coyote.AbstractProtocol.stop Stopping ProtocolHandler ["http-nio-8080"]
22-Nov-2025 19:01:09.965 INFO [Thread-3] org.apache.coyote.AbstractProtocol.destroy Destroying ProtocolHandler ["http-nio-8080"]
22-Nov-2025 19:01:11.929 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version name:   Apache Tomcat/9.0.112
22-Nov-2025 19:01:11.934 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built:          Nov 6 2025 07:46:18 UTC
22-Nov-2025 19:01:11.934 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version number: 9.0.112.0
22-Nov-2025 19:01:11.934 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name:               Windows 10
22-Nov-2025 19:01:11.934 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version:            10.0
22-Nov-2025 19:01:11.935 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture:          amd64
22-Nov-2025 19:01:11.935 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home:             C:\Program Files\Java\jdk-25
22-Nov-2025 19:01:11.935 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version:           25.0.1+8-LTS-27
22-Nov-2025 19:01:11.936 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor:            Oracle Corporation
22-Nov-2025 19:01:11.936 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE:         C:\apache-tomcat-9
22-Nov-2025 19:01:11.936 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME:         C:\apache-tomcat-9
22-Nov-2025 19:01:11.949 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=C:\apache-tomcat-9
22-Nov-2025 19:01:11.949 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=C:\apache-tomcat-9
22-Nov-2025 19:01:11.949 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dignore.endorsed.dirs=C:\apache-tomcat-9\endorsed
22-Nov-2025 19:01:11.949 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=C:\apache-tomcat-9\temp
22-Nov-2025 19:01:11.949 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
22-Nov-2025 19:01:11.950 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=C:\apache-tomcat-9\conf\logging.properties
22-Nov-2025 19:01:11.950 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dsun.io.useCanonCaches=false
22-Nov-2025 19:01:11.950 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.lang=ALL-UNNAMED
22-Nov-2025 19:01:11.950 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.lang.invoke=ALL-UNNAMED
22-Nov-2025 19:01:11.951 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.lang.reflect=ALL-UNNAMED
22-Nov-2025 19:01:11.951 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.io=ALL-UNNAMED
22-Nov-2025 19:01:11.951 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.util=ALL-UNNAMED
22-Nov-2025 19:01:11.951 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.util.concurrent=ALL-UNNAMED
22-Nov-2025 19:01:11.951 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
22-Nov-2025 19:01:11.952 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: exit
22-Nov-2025 19:01:11.952 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: abort
22-Nov-2025 19:01:11.952 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xms512m
22-Nov-2025 19:01:11.952 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xmx1024m
22-Nov-2025 19:01:11.959 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent Loaded Apache Tomcat Native library [1.3.1] using APR version [1.7.4].
22-Nov-2025 19:01:11.959 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true], UDS [true].
22-Nov-2025 19:01:11.959 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR/OpenSSL configuration: useAprConnector [false], useOpenSSL [true]
22-Nov-2025 19:01:11.973 INFO [main] org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL successfully initialized [OpenSSL 3.0.14 4 Jun 2024]
22-Nov-2025 19:01:12.529 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8080"]
22-Nov-2025 19:01:12.569 INFO [main] org.apache.catalina.startup.Catalina.load Server initialization in [949] milliseconds
22-Nov-2025 19:01:12.635 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service [Catalina]
22-Nov-2025 19:01:12.635 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet engine: [Apache Tomcat/9.0.112]
22-Nov-2025 19:01:12.661 INFO [main] org.apache.catalina.startup.HostConfig.deployWAR Deploying web application archive [C:\apache-tomcat-9\webapps\ROOT.war]
22-Nov-2025 19:01:16.526 INFO [main] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
22-Nov-2025 19:01:22.471 INFO [main] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive [C:\apache-tomcat-9\webapps\ROOT.war] has finished in [9,807] ms
22-Nov-2025 19:01:22.474 INFO [main] org.apache.catalina.startup.HostConfig.deployWAR Deploying web application archive [C:\apache-tomcat-9\webapps\spring-login-app-1.0.0.war]
22-Nov-2025 19:01:22.668 WARNING [main] org.apache.tomcat.util.descriptor.web.WebXml.setVersion Unknown version string [5.0]. Default version will be used.
22-Nov-2025 19:01:25.481 INFO [main] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
22-Nov-2025 19:01:25.495 INFO [main] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive [C:\apache-tomcat-9\webapps\spring-login-app-1.0.0.war] has finished in [3,022] ms
22-Nov-2025 19:01:25.496 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [C:\apache-tomcat-9\webapps\docs]
22-Nov-2025 19:01:25.559 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [C:\apache-tomcat-9\webapps\docs] has finished in [62] ms
22-Nov-2025 19:01:25.560 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [C:\apache-tomcat-9\webapps\examples]
22-Nov-2025 19:01:26.113 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [C:\apache-tomcat-9\webapps\examples] has finished in [553] ms
22-Nov-2025 19:01:26.113 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [C:\apache-tomcat-9\webapps\host-manager]
22-Nov-2025 19:01:26.173 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [C:\apache-tomcat-9\webapps\host-manager] has finished in [59] ms
22-Nov-2025 19:01:26.173 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [C:\apache-tomcat-9\webapps\manager]
22-Nov-2025 19:01:26.230 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [C:\apache-tomcat-9\webapps\manager] has finished in [56] ms
22-Nov-2025 19:01:26.238 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
22-Nov-2025 19:01:26.263 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in [13692] milliseconds

Hello @Aniket_Pant

From the below post i believe the location of setenv.bat can be causing issue ?

In your case we see below :

As per the logs shared it should be available in path C:\apache-tomcat-9\bin :

22-Nov-2025 18:55:22.288 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE:         C:\apache-tomcat-9
22-Nov-2025 18:55:22.288 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME:         C:\apache-tomcat-9

Thanks!!

Sorry i mentioned wrong path.

setenv.bat is present only in C:\apache-tomcat-9\bin


 Directory of C:\apache-tomcat-9\bin

11/23/2025  11:33 AM    <DIR>          .
11/23/2025  11:33 AM    <DIR>          ..
11/21/2025  11:15 PM    <DIR>          ${catalina.base}
11/06/2025  07:46 AM            35,756 bootstrap.jar
11/06/2025  07:46 AM             1,703 catalina-tasks.xml
11/06/2025  07:46 AM            17,521 catalina.bat
11/06/2025  07:46 AM            25,909 catalina.sh
11/06/2025  07:46 AM             2,123 ciphers.bat
11/06/2025  07:46 AM             1,997 ciphers.sh
11/06/2025  07:46 AM            26,670 commons-daemon.jar
11/06/2025  07:46 AM             2,040 configtest.bat
11/06/2025  07:46 AM             1,922 configtest.sh
11/06/2025  07:46 AM             9,100 daemon.sh
11/06/2025  07:46 AM             2,091 digest.bat
11/06/2025  07:46 AM             1,965 digest.sh
11/06/2025  07:46 AM             3,606 makebase.bat
11/06/2025  07:46 AM             3,382 makebase.sh
11/06/2025  07:46 AM             9,637 service.bat
11/06/2025  07:46 AM             3,814 setclasspath.bat
11/06/2025  07:46 AM             4,317 setclasspath.sh
11/23/2025  11:27 AM               460 setenv.bat
11/06/2025  07:46 AM             2,020 shutdown.bat
11/06/2025  07:46 AM             1,902 shutdown.sh
11/06/2025  07:46 AM             2,022 startup.bat
11/06/2025  07:46 AM             1,904 startup.sh
11/06/2025  07:46 AM         3,586,048 tcnative-1.dll
11/06/2025  07:46 AM            53,445 tomcat-juli.jar
11/06/2025  07:46 AM           152,944 tomcat9.exe
11/06/2025  07:46 AM           136,048 tomcat9w.exe
11/06/2025  07:46 AM             4,576 tool-wrapper.bat
11/06/2025  07:46 AM             5,540 tool-wrapper.sh
11/06/2025  07:46 AM             2,026 version.bat
11/06/2025  07:46 AM             1,908 version.sh
              30 File(s)      4,104,396 bytes
               3 Dir(s)  113,566,490,624 bytes free

C:\apache-tomcat-9\bin>

When running as a Windows service, it is likely that the environment variables set through the usual `setenv.bat` are ignored, you should use the `tomcat9w` executable to edit the service configuration: Apache Tomcat 9 (9.0.112) - Windows Service How-To

@Sylvain_Juge yesterday i research on this that when tomcat is running as service on windows(don’t know about linux) it won’t read setenv.bat file , we have to configure in tomcat9w.exe . I did it.
I think elastic has to document below advise also .

When running as a Windows service, it is likely that the environment variables set through the usual setenv.bat are ignored, you should use the tomcat9w executable to edit the service configuration: Apache Tomcat 9 (9.0.112) - Windows Service How-To

Thanks,

1 Like

Thanks @Tortoise @Sylvain_Juge for your support.

1 Like

I am sorry i am asking another question . Whatever i did is testing one java app (running on tomcat) on my system. I want to test in client system , so i have javaagent parameter , restart the tomcat service and on kibana service inventory i was able to see the service name but not getting transactions data .

In this case this is probably because the client application is not using one for the supported technologies.

In this case, you should try with the EDOT Java agent instead, as it has broader support.

Hi @Sylvain_Juge ,

How can we get to know the client app is using this java technology not this. The application team told me that they are using java and tomcat.

Now in tomcat9w.ext i have otel parameters.

-Dotel.exporter.otlp.endpoint=https://50657be900ce43f2bd5c58af83ae4733.centralindia.azure.elastic-cloud.com:443
-Dotel.resource.attributes=service.name=Login_UI,deployment.environment=Development
-Dotel.exporter.otlp.headers=Authorization=Bearer <token>
-Dotel.metric.exporter=otlp
-Dotel.logs.exporter=otlp

But in transactions i am getting weird APIs.POST /* , GET /**

These are fallback names when the instrumentation can’t find a more useful name. Your application is now instrumented and producing transactions. One thing you should do is remove or redact your otel.exporter.otlp.headers line above, as this is a public forum

I was using elastic cloud free trail. It is expired already.

As i mentioned earlier, in kibana > observability> Services. I am able to see app service name and infra metrics(cpu,memory,heap etc).

I have restarted the app and in tomcatstdout . I found below warnings.

2025-11-26 13:22:00,536 [elastic-apm-metadata-0] INFO  co.elastic.apm.agent.impl.metadata.SystemInfo - Failed to execute command "powershell.exe -NoLogo -NonInteractive -NoProfile -ExecutionPolicy Bypass -Command [System.Net.Dns]::GetHostEntry($env:computerName).HostName" with exit code 0
2025-11-26 13:22:10,443 [elastic-apm-tracer-initializer] INFO  co.elastic.apm.agent.impl.ElasticApmTracer - Delaying initialization of tracer for 5000ms
2025-11-26 13:22:15,448 [elastic-apm-tracer-initializer] INFO  co.elastic.apm.agent.impl.ElasticApmTracer - end wait
2025-11-26 13:22:17,895 [elastic-apm-server-healthcheck] INFO  co.elastic.apm.agent.report.ApmServerHealthChecker - Elastic APM server is available: {  "build_date": "2025-02-06T20:29:22Z",  "build_sha": "xxxxxxxxxxx",  "publish_ready": true,  "version": "8.16.4"}
2025-11-26 13:22:18,047 [elastic-apm-remote-config-poller] INFO  co.elastic.apm.agent.configuration.ApmServerConfigurationSource - Received new configuration from APM Server: {capture_body=all, transaction_max_spans=500, transaction_sample_rate=1}
2025-11-26 13:22:18,454 [elastic-apm-tracer-initializer] INFO  co.elastic.apm.agent.impl.ElasticApmTracer - Tracer switched to RUNNING state
2025-11-26 13:22:40,972 [main] INFO  co.elastic.apm.agent.servlet.ServletVersionInstrumentation - Servlet container info = Apache Tomcat/9.0.105
2025-11-26 13:22:40,988 [main] INFO  co.elastic.apm.agent.servlet.ServletVersionInstrumentation - Servlet container info = Apache Tomcat/9.0.105
2025-11-26 13:22:41,154 [main] WARN  co.elastic.apm.agent.bci.bytebuddy.ErrorLoggingListener - org.apache.log4j.Category uses an unsupported class file version (pre Java 4)) and can't be instrumented. You may try setting the 'instrument_ancient_bytecode' config option to 'true', but notice that it may cause VerificationErrors or other issues.
2025-11-26 13:22:42,145 [main] WARN  co.elastic.apm.agent.bci.bytebuddy.ErrorLoggingListener - org.apache.log4j.WriterAppender uses an unsupported class file version (pre Java 4)) and can't be instrumented. You may try setting the 'instrument_ancient_bytecode' config option to 'true', but notice that it may cause VerificationErrors or other issues.

This app is COTS product and this app is used for scheduling the jobs.

I wanted to know if i set `elastic.apm.instrument_ancient_bytecode=true` , will this work ? or it impact app performance ?