Як запустити програму Java з кількома агентами Java?


82

Мені відомо про те, як запустити Java-програму з агентом Java:

java -javaagent:myAgent.jar MyJavaProgram

Але що, якщо я хочу додати 2 або більше агентів Java для інструментарію своєї програми? Я не хочу повторно викликати java -javaagent: ... для кожного агента, який я повинен завантажувати в JVM.

Я пробував щось подібне:

java -javaagent:agentA.jar, agentB.jar MyJavaProgram

або щось подібне:

java -javaagent:agentA.jar agentB.jar MyJavaProgram

Але не мають успіху.

Чи є відповідь, щоб вирішити мою проблему?

Дякую.

Відповіді:



57

Здається, ви можете зробити це, використовуючи кілька аргументів. З документації :

У реалізаціях з інтерфейсом командного рядка агент запускається додаванням цієї опції до командного рядка:

-javaagent:jarpath[=options] 

jarpath - шлях до файлу JAR агента. options - це параметри агента. Цей перемикач може використовуватися кілька разів в одному командному рядку, таким чином створюючи кілька агентів . Більше одного агента можуть використовувати один і той же шлях. Файл JAR агента повинен відповідати специфікації файлу JAR.

(мій акцент)


2

Додаючи до наведених вище відповідей, якщо ви використовуєте ant і хочете включити <jvmargs />більше ніж одну банку -javaagentдля запуску сервера, ось як я це зробив,

build.xml

<target name="blah">
...
    <jvmarg value="-javaagent:${jar1.path}" />
    <jvmarg value="-javaagent:${jar2.path}" />
...
</target>

1

Існує новий проект, метою якого є підтримка декількох агентів Java. В даний час він обмежений конкретними.

Агент Бонд - це супер-агент, який обгортає та відправляє кілька інших агентів. Таким чином, вам потрібно встановити лише один агент у вашій JVM з одним набором даних конфігурації (який містить кілька окремих частин).

Див https://github.com/fabric8io/agent-bond/blob/master/README.md подробиці

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.