Множественная точка входа (основной класс) для jar клиента приложения

Как настроить несколько точек входа в банке клиента приложения?

Я использую сервер приложений Glassfish. Я могу захватить клиента, используя

 asadmin get-client-stubs --appname APPLICATION_NAME .

В настоящее время я могу запустить основной класс по умолчанию, указанный в MANIFEST.MF. Однако я хочу иметь возможность указать другой основной класс во время выполнения.

ie

appclient -client MYJAR.jar -mainclass com.mystuff.Main1
and
appclient -client MYJAR.jar -mainclass com.mystuff.Main2

И Main1, и Main2 имеют точки входа «public static void main».

Если я укажу основной класс, которого нет в MANIFEST.MF, я получу следующее исключение:

Exception in thread "main" java.lang.RuntimeException: java.lang.IllegalArgumentException: Could not locate an embedded app client matching the main class name

Нужно ли мне вносить какие-либо изменения, чтобы appclient ссылался на другие основные классы?


person Tazzy531    schedule 12.08.2009    source источник


Ответы (1)


http://forums.java.net/jive/thread.jspa?threadID=65549&tstart=0 ‹-- Я разместил здесь тот же вопрос, и кто-то дал ответ...

Hi.

Контейнер клиента приложения GlassFish использует параметр -mainclass, чтобы различать несколько клиентов, упакованных в один и тот же EAR, поэтому во время запуска пользователь может выбрать, какой из этих нескольких клиентов, упакованных вместе, запустить. Как вы обнаружили, он не позволяет пользователю переопределить намерение разработчика относительно запуска основного класса в данном клиенте.

Вы можете делать то, что хотите, используя альтернативный синтаксис appclient, доступный в v3:

http://docs.sun.com/app/docs/doc/820-7701/appclient-1m?a=view

Для v2 вы, безусловно, могли бы написать свой единственный основной класс, чтобы он принимал аргумент, указывающий класс для запуска, а затем динамически загружал этот класс и вызывал его основной метод.

-Тим

person Tazzy531    schedule 13.08.2009