Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Управление GlassFish из другой java-програмы / 5 сообщений из 5, страница 1 из 1
13.08.2013, 10:59:30
    #38364315
denis111111
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Управление GlassFish из другой java-програмы
Добрый день.
Хочу написать java-програму, которая может управлять сервером GlassFish, тобто дублировать команды GlassFish из командной строки.

GlassFish и java-програма будут работать на одной JVM.

Что я думаю:
1)
Код: java
1.
2.
3.
Runtime rt = Runtime.getRuntime();
Process p = rt.exec("java -jar C:/glassfish3/glassfish/modules/admin-cli.jar start-domain domain1");
// p.destroy();


Работает, не не так как надо. Домен Сервер начал запускаться, но моя програма так ы не узнеет запкстился он или нет... нет зворотной связи.

2) Думаю как-то поэсперементировать с Java Reflection API.
Если в двух словах, то вызиваю здесь метод main главного класа с параметром "start-domain domain1"
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
 File file = new File("C:/glassfish3/glassfish/modules/admin-cli.jar");
 URL url = file.toURI().toURL();
Poligon p = new Poligon();
 URL[] mass = {url};
 URLClassLoader cl = new URLClassLoader(mass, p.getClass().getClassLoader());
 Class myClass = Class.forName("com.sun.enterprise.admin.cli.AsadminMain", true, cl);
Object o = myClass.newInstance();
        Class[] paramTypes = new Class[]{String[].class};
        Method method = myClass.getMethod("main", paramTypes);
        String[] args = {"start-domain domain1"};
        method.invoke(o, (Object) args);



уже лучше, выводит хотяб в консоль:
Код: xml
1.
2.
Illegal command name: start-domain domain1
Command start-domain domain1 failed.


Правда в меня такое чуство, что надо грузить все класы указаные в manifest, а не только com.sun.enterprise.admin.cli.AsadminMain.
Я иду в правильном направлении хотя бы?
...
Рейтинг: 0 / 0
13.08.2013, 11:44:27
    #38364404
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Управление GlassFish из другой java-програмы
- При использовании Process нужно вычитывать Out и Err потоки запущеного процесса.
- Задлянафига тут рефлексия, если можно просто подключить jar и использовать указанный класс?
- CLI это command line interface. Он транслирует команды в запуск каких-то методов. GlassFish - opensource проект. Исходники можно свободно скачать или посмотреть в инете. Посмотрите какие именно классы использует cli и используйте их напрямую.
...
Рейтинг: 0 / 0
13.08.2013, 11:59:41
    #38364428
denis111111
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Управление GlassFish из другой java-програмы
Blazkowicz

Что то я не понял с OutputStream, это как с него вычитывать?

А не счет рефлексии...
Если я беру и загружаю jar через URLClassLoader, то загрузятся все класы внутри этой jar. А загрузятся ли те класы и jar, которые указаны в manifest(параметр ClassPath)? Или их надо вручную загружать?
...
Рейтинг: 0 / 0
13.08.2013, 12:05:00
    #38364442
denis111111
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Управление GlassFish из другой java-програмы
Ага, есть метод waitFor(), это хорошо).

И даже через InputStream смог считать ответ.
...
Рейтинг: 0 / 0
13.08.2013, 12:58:27
    #38364518
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Управление GlassFish из другой java-програмы
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Управление GlassFish из другой java-програмы / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]