В моем проекте Leiningen У меня есть следующие конфигурации:Leiningen Java-агенты не работают в uberjar
:java-agents [[com.newrelic.agent.java/newrelic-agent "3.19.2"]]
Когда работает мое приложение, как в lein repl
агент запустить, но когда я создаю uberjar и запустить его :
java -jar target/proclodo-spa-server-rendering.jar
Агент не начат. Я мог бы включить newrelic-agent.jar в свой uberjar и передать аргумент -javaagent, но я стараюсь избегать наличия большого двоичного blob в моем репозитории, который не будет автоматически обновляться (почему New Relic даже рекомендует это?). Я попытался добавить:
:bootclasspath true
из-за этот комментарий:
;; Java agents can instrument and intercept certain VM features. Include
;; :bootclasspath true to place the agent jar on the bootstrap classpath.
, но это не имело никакого значения. Как должен быть помещен контейнер-агент в CLASSPATH, чтобы я мог проверить его работу?
Я использую Jetty, который, как говорят, вмешивается в bootclasspath
, но я не уверен, как это должно мешать. Кажется, все работает нормально, только агент не запускается.
Что делает: bootclasspath? Кажется, что банка внутри моего убержара. Как передать аргумент без использования jar в моем репо? что плохо – Pablo
@Pablo Это действительно два новых вопроса, а не последующие действия на этом. Но, кратко: как только вы используете leiningen для создания банки, у вас есть банка, как и любая другая java-баночка, и вы можете посмотреть, как установить агент при запуске фляги; он больше не специфичен для clojure. Если вы хотите, чтобы агент использовался в вашей среде развертывания, вам необходимо организовать наличие там jar-агента, и вам нужно также принять аргумент java-agent. – amalloy
Например, поскольку вы используете newrelic, https://docs.newrelic.com/docs/agents/java-agent/installation/java-agent-manual-installation, похоже, достаточно подробное объяснение того, как его использовать при запуске банку. – amalloy