2016-08-24 4 views
2

Мы написали javaagent, чтобы помочь разработчикам отладить. Но перед выпуском этого инструмента у нас все еще есть некоторые вопросы о развертывании java-агента.Как развернуть javaagent с зависимостями сторонних библиотек

Пользователь может использовать этот агент с некоторыми приложениями tomcat. Агент использует метод Premain для преобразования классов. Мы используем javassist 3.18.2-GA для вставки кодов. В настоящее время мы добавляем javassist.jar в Boot-Class-Path в MANIFEST.MF. И мы помещаем агент и javassist.jar в каталог lib tomcat.

Вопросов:

  1. Ну, как минимум, это работает. Но является ли это правильным способом развертывания агентов и зависимостей для приложений tomcat?
  2. Потому что большинство приложений tomcat используют hibernate, которые также используют javassist 3.18.2-GA, так что все в порядке. Но, как я понимаю, 3.20 не полностью совместим с 3.18.2. Предложите, чтобы кто-то обновил javassist до более высокой версии, вызвал бы агент или приложение из-за конфликта между двумя разными javassist's.

ответ

2

Добавлен javaagent и запускается по пути класса VM. Таким образом, у вас есть следующие возможности:

  1. Добавить зависимости от пути к классам при запуске виртуальной машины, например, при развертывании обычного приложения. Для контейнера приложения, такого как Tomcat, это будет подходящий каталог для таких зависимостей.
  2. Связать зависимости с агентом с помощью инструмента, такого как fatjar. При этом вы можете использовать плагин Maven Shade для переноса зависимостей в другое пространство имен, чтобы избежать конфликтов версий.
  3. Используйте Instrumentation API, чтобы вручную добавить зависимости перед запуском приложения реального агента.
Смежные вопросы