-javaagent:/usr/share/tomcat7/webapps/ROOT/WEB-INF/lib/newrelic-3.9.0.jar
When working on updating the version, I wanted to change this so that- We could update the New Relic Agent whenever a new update is available
- We would not need to change the JVM command line each time the Agent was updated
maven-dependency-plugin
through a web search, but ran across a problem where my WAR file was being created before the JAR was downloaded and renamed (using maven-war-plugin
). All the examples I ran across used <phase>package</phase>
, and while that looked right, I figured that this was still happening in the wrong life cycle phase for what I wanted to do. I resorted to reading the documentation, and with some experimenting found that <phase>prepare-package</phase>
did this at the right part of the life cycle.
Here is the plugins section of the working pom.xml:
You do not need to include this dependency in your dependencies section, unless you are actually using it in your code.
We changed the server's JVM command line option to:
-javaagent:/usr/share/tomcat7/webapps/ROOT/WEB-INF/lib/newrelic.jar
And everything worked just great ... once I got the YAML file figured out 😉.
Bonus Notes
- If you have not worked with YAML before, you will find out quickly that indentation is important to keep the hierarchy of properties right
- The
newrelic.yml
file included as an example in thenewrelic-java.zip
file appears to have an error in it. Specifically, theclassloader_excludes
property values need to be a commented list on the same line. I got parse errors using the example as-is (i.e., the list is indented with each item on a separate line, and has an extra comma at the end). - If you are reading this and setting up a new configuration based on this article, you will also need the
newrelic.yml
file to end up in the same folder. To that end, place the file in/src/main/webapp/WEB-INF/lib
in your Maven-based folder structure.
No comments:
Post a Comment