Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Как разместить Java-код на AppServ-е? / 10 сообщений из 10, страница 1 из 1
10.10.2012, 09:52:42
    #37991131
pulp
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как разместить Java-код на AppServ-е?
Добрый день!

Изучаю Java (IDE Eclipse) + AppServ (WebSphere AS).
Задача: при появлении в каталоге TXT-файла нужно его отправить на Web-сервис параметром метода.
Код Java написал, который в цикле с паузой мониторит каталог и обнаруживает файлы. Но сломал голову, как этот код разместить на сервере, чтобы он начал крутиться при запуске сервиса и крутился постоянно, пока не остановят. Пока с вызовом Web-сервиса ещё и не заморачивался, хотя отдельно сделать и клиент и сервер получалось.
1. Скажите пож., в каком направлении копать. Начал смотреть в сторону EJB, но пока дебри...
2. Может есть какие-нибудь таймеры, которые позволяют размещенный сервис запускать с какой-то периодичность?

Спасибо за любую помощь!
...
Рейтинг: 0 / 0
10.10.2012, 10:20:28
    #37991183
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как разместить Java-код на AppServ-е?
pulpКод Java написал, который в цикле с паузой мониторит каталог и обнаруживает файлы.

В Java 7 вроде есть готовый API для мониторинга. Он прям из OS события получает. Ничего в цикле проверять не нужно.

pulpНо сломал голову, как этот код разместить на сервере, чтобы он начал крутиться при запуске сервиса и крутился постоянно, пока не остановят. Пока с вызовом Web-сервиса ещё и не заморачивался, хотя отдельно сделать и клиент и сервер получалось.

Вы как-то сильно сразу на JEE замахнулись. Уж слишком много там нюансов и с потоками и с упаковкой в war/jar модули. Объясните задачу целиком. WAS свежей версии? Какой JEE поддерживает?

pulp1. Скажите пож., в каком направлении копать. Начал смотреть в сторону EJB, но пока дебри...

Смотреть в направлении упаковки и деплоймента модулей war и ejb-jar.

pulp2. Может есть какие-нибудь таймеры, которые позволяют размещенный сервис запускать с какой-то периодичность?

Объясните задачу, чем больше вы уточнений делаете, тем меньше становиться понятно. Да в JEE есть таймеры, но что за "сервис" вы хотите ими запускать?
...
Рейтинг: 0 / 0
10.10.2012, 11:19:23
    #37991289
pulp
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как разместить Java-код на AppServ-е?
> Задача: при появлении в каталоге TXT-файла нужно его отправить на Web-сервис параметром метода.
Есть система А, которая выплёвывает ТХТ-файл в каталог PathA при создании клиента с его реквизитами. Нужно, чтобы этот клиент как можно быстрее появился в системе Б. Система Б имеет Web-сервис с опубликованным интерфейсом по созданию клиента. Метод, грубо говоря, такой: int AddClient(String txt_file_str).

Решение, которое я вижу: написать сервис, который мониторит каталог PathA, и при появлении там файла вызывает Web-сервис системы Б, после получения успешного ответа удаляет (переименовывает) файл.

Чтобы реализовать это решение, написал на Java класс, который мониторит каталог. Вопрос - как его разместить на сервере приложений, чтобы при его деплое сразу стартанул какой-нибудь метод, например void main() класса?
...
Рейтинг: 0 / 0
10.10.2012, 11:23:55
    #37991299
pulp
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как разместить Java-код на AppServ-е?
pulp> при создании клиента с его реквизитами

Под клиентом понимается сущность в базе данных - физ. лицо, напр. Иванов И.И.
...
Рейтинг: 0 / 0
10.10.2012, 11:26:56
    #37991307
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как разместить Java-код на AppServ-е?
pulpСистема Б имеет Web-сервис с опубликованным интерфейсом по созданию клиента. Метод, грубо говоря, такой: int AddClient(String txt_file_str).
Надеюсь вы не планируете вызывать из системы Б вызывать внешний Web-сервис? Лучше же вызвать метод напрямую.

pulpРешение, которое я вижу: написать сервис, который мониторит каталог PathA, и при появлении там файла вызывает Web-сервис системы Б, после получения успешного ответа удаляет (переименовывает) файл.
Чет много у вас всяких "сервисов". Нельзя ли мониторинг просто в систему Б добавить?

pulpЧтобы реализовать это решение, написал на Java класс, который мониторит каталог. Вопрос - как его разместить на сервере приложений, чтобы при его деплое сразу стартанул какой-нибудь метод, например void main() класса?
Проблема в том что лучше всего использовать JEE таймер и по нему проверять каталог. В противном случае, если вы будете использовать какой-нибудь слушатель, то вы просто отберёте поток у сервера и завернете в свой цикл. Тогда будут проблемы с остановкой сервера. Контейнер будет думать что поток всё ещё занят чем-то важным и будет ждать завершения потока.
Какая версия JEE поддерживается вашей сферой? Можно ли использовать Java 7?
http://docs.oracle.com/javase/7/docs/api/java/nio/file/WatchService.html
...
Рейтинг: 0 / 0
10.10.2012, 11:36:59
    #37991325
pulp
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как разместить Java-код на AppServ-е?
BlazkowiczНадеюсь вы не планируете вызывать из системы Б вызывать внешний Web-сервис? Лучше же вызвать метод напрямую.
Напрямую нельзя, опубликован только Web-сервис с указанной сигнатурой.

BlazkowiczЧет много у вас всяких "сервисов". Нельзя ли мониторинг просто в систему Б добавить?
Как раз нужно сделать это на AppServ-е (читайте шине). В систему Б вносить изменения возможности нет (очень дорого). Но у системы Б есть торчащий наружу описанный Web-сервис создания клиента.

BlazkowiczПроблема в том что лучше всего использовать JEE таймер и по нему проверять каталог. В противном случае, если вы будете использовать какой-нибудь слушатель, то вы просто отберёте поток у сервера и завернете в свой цикл. Тогда будут проблемы с остановкой сервера. Контейнер будет думать что поток всё ещё занят чем-то важным и будет ждать завершения потока.
А как это сделать? Может есть событие onStart - там старт потока, onStop - там прерывание. Просто есть опыт разработки служб под Windows, там это примерно так делается.

BlazkowiczКакая версия JEE поддерживается вашей сферой? Можно ли использовать Java 7?

Похоже 1.6:
Open standards based Application Server

Java Enterprise Edition (Java EE) 6 support
Java Standard Edition (Java SE) 6 support
Supports the Java Developer Kit 6 (JDK) from IBM and Sun.
An enterprise OSGi application programming model.
Supports the Java Developer Kit 7 (JDK) from IBM and Sun with Java EE 6 web profile technologies
.
...
Рейтинг: 0 / 0
10.10.2012, 11:48:26
    #37991350
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как разместить Java-код на AppServ-е?
pulpНапрямую нельзя, опубликован только Web-сервис с указанной сигнатурой.

Это странно. Даже EJB интерфейса нет? Просто если этот модуль крутиться в той же JVM, какой смысл заниматься сериализацией-десериализацией данных, если метод можно дернуть напрямую. Проблема только в том чтобы найти ссылку на нужный сервис в JNDI. Обычно это всё делается через Local EJB интерфейс.

pulpКак раз нужно сделать это на AppServ-е (читайте шине).

Шина это совсем другое. Это единый интерфейс куда можно всё скидывать, а она уж доставит до адресата. Нет ничего общего с JEE контейнером.

pulp В систему Б вносить изменения возможности нет (очень дорого). Но у системы Б есть торчащий наружу описанный Web-сервис создания клиента.

Откройте web консоль и найдите там JNDI. Поищите нет ли там в пути где-то этого сервиса в котором нужный метод. Если найдёте, то можно попробовать именно из JNDI получить ссылку и вызвать метод напрямую.

pulpА как это сделать? Может есть событие onStart - там старт потока, onStop - там прерывание. Просто есть опыт разработки служб под Windows, там это примерно так делается.
Windows Service и JEE модуль это совсем не одно и то же.
Сделайте вот такой таймер и упакуйте в jar. Задеплойте jar в WebSphere через web-консоль. WAS по аннотации должна сама нащупать таймер и запускать его с заданным периодом.
http://docs.oracle.com/javaee/6/tutorial/doc/bnboy.html
...
Рейтинг: 0 / 0
10.10.2012, 12:12:39
    #37991402
pulp
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как разместить Java-код на AppServ-е?
Попробую. Спасибо за ответы!
...
Рейтинг: 0 / 0
10.10.2012, 17:58:00
    #37992307
Kachalov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как разместить Java-код на AppServ-е?
BlazkowiczВ Java 7 вроде есть готовый API для мониторинга. Он прям из OS события получает. Ничего в цикле проверять не нужно.

- не очень удобно (отсутствует фильтр по маске/типу файла) и, не помню точно, но вроде есть глючок под виндой, когда в папку льется большой файл, событие о том что файл в папке происходит при начале копирования, а конец копирования никак не отмечается, т. е. непонятно когда с файлом можно начинать что-то делать.
...
Рейтинг: 0 / 0
10.10.2012, 18:50:52
    #37992411
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как разместить Java-код на AppServ-е?
Kachalovт. е. непонятно когда с файлом можно начинать что-то делать.
М-да. Остаётся write lock в цикле проверять, пока не снимется. Но всё равно проще чем самостоятельно по дате-размеру сверять.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Как разместить Java-код на AppServ-е? / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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