Несколько процессов Java из одной банки - PullRequest
2 голосов
/ 20 июля 2011

Представьте себе файл jar объемом 5 МБ, содержащий много «основных» классов, каждый из которых запускается как собственный процесс с чем-то вроде java -cp my_fat_deployment.jar net.example.MyMain15.Некоторые процессы работают в течение нескольких дней, другие - минут или секунд.Их может быть от 5 до 20 одновременно.

Я пытаюсь сравнить два способа его выполнения:

  1. Запустить каждый процессточно такой же файл:

    java -cp my_fat_deployment.jar net.example.MyMain15

  2. Запуск из копии:

    cp my_fat_deployment.jar my_copy_15.jar

    java -cp my_copy_15.jar net.example.MyMain15

Я говорю о Java от Sun на коробке Linux, на случай, если это имеет значение.

Какие плюсы и минусы есть у каждого подхода?У первого есть проблемы со стабильностью или безопасностью?Что быстрее и почему?

Ответы [ 4 ]

4 голосов
/ 20 июля 2011

первый быстрее, потому что вы избегаете копирования файла.Кроме этого, они точно такие же.

2 голосов
/ 20 июля 2011

Если вы не удаляете и не генерируете .jar file с различным содержимым каждый раз после исключения java, вы должны идти с первым

Второй шаг избыточен, так как имя jar не имеет значения.

2 голосов
/ 20 июля 2011

Оба способа идентичны. Между ними нет никакой разницы, за исключением того, что создание копии занимает больше места на диске.

Конечно, если позже вы захотите обновить каждый процесс независимо, вам нужно будет использовать отдельные JAR-файлы.

0 голосов
/ 20 июля 2011

Самый простой способ иметь несколько точек запуска в большой банке - это иметь дополнительную банку для каждой точки запуска, которая просто содержит манифест с

  1. Путь к классу, указывающий на большую банку
  2. Главный класс, указывающий на класс запуска.

(плюс все, что вам нужно для ведения учета).

Вы можете просто сделать

java -jar launchX.jar ...
java -jar launchY.jar ...

что спасет вас -cp вещи.

...