|
|
|
Как разместить Java-код на AppServ-е?
|
|||
|---|---|---|---|
|
#18+
Добрый день! Изучаю Java (IDE Eclipse) + AppServ (WebSphere AS). Задача: при появлении в каталоге TXT-файла нужно его отправить на Web-сервис параметром метода. Код Java написал, который в цикле с паузой мониторит каталог и обнаруживает файлы. Но сломал голову, как этот код разместить на сервере, чтобы он начал крутиться при запуске сервиса и крутился постоянно, пока не остановят. Пока с вызовом Web-сервиса ещё и не заморачивался, хотя отдельно сделать и клиент и сервер получалось. 1. Скажите пож., в каком направлении копать. Начал смотреть в сторону EJB, но пока дебри... 2. Может есть какие-нибудь таймеры, которые позволяют размещенный сервис запускать с какой-то периодичность? Спасибо за любую помощь! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2012, 09:52:42 |
|
||
|
Как разместить Java-код на AppServ-е?
|
|||
|---|---|---|---|
|
#18+
pulpКод Java написал, который в цикле с паузой мониторит каталог и обнаруживает файлы. В Java 7 вроде есть готовый API для мониторинга. Он прям из OS события получает. Ничего в цикле проверять не нужно. pulpНо сломал голову, как этот код разместить на сервере, чтобы он начал крутиться при запуске сервиса и крутился постоянно, пока не остановят. Пока с вызовом Web-сервиса ещё и не заморачивался, хотя отдельно сделать и клиент и сервер получалось. Вы как-то сильно сразу на JEE замахнулись. Уж слишком много там нюансов и с потоками и с упаковкой в war/jar модули. Объясните задачу целиком. WAS свежей версии? Какой JEE поддерживает? pulp1. Скажите пож., в каком направлении копать. Начал смотреть в сторону EJB, но пока дебри... Смотреть в направлении упаковки и деплоймента модулей war и ejb-jar. pulp2. Может есть какие-нибудь таймеры, которые позволяют размещенный сервис запускать с какой-то периодичность? Объясните задачу, чем больше вы уточнений делаете, тем меньше становиться понятно. Да в JEE есть таймеры, но что за "сервис" вы хотите ими запускать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2012, 10:20:28 |
|
||
|
Как разместить Java-код на AppServ-е?
|
|||
|---|---|---|---|
|
#18+
> Задача: при появлении в каталоге TXT-файла нужно его отправить на Web-сервис параметром метода. Есть система А, которая выплёвывает ТХТ-файл в каталог PathA при создании клиента с его реквизитами. Нужно, чтобы этот клиент как можно быстрее появился в системе Б. Система Б имеет Web-сервис с опубликованным интерфейсом по созданию клиента. Метод, грубо говоря, такой: int AddClient(String txt_file_str). Решение, которое я вижу: написать сервис, который мониторит каталог PathA, и при появлении там файла вызывает Web-сервис системы Б, после получения успешного ответа удаляет (переименовывает) файл. Чтобы реализовать это решение, написал на Java класс, который мониторит каталог. Вопрос - как его разместить на сервере приложений, чтобы при его деплое сразу стартанул какой-нибудь метод, например void main() класса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2012, 11:19:23 |
|
||
|
Как разместить Java-код на AppServ-е?
|
|||
|---|---|---|---|
|
#18+
pulp> при создании клиента с его реквизитами Под клиентом понимается сущность в базе данных - физ. лицо, напр. Иванов И.И. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2012, 11:23:55 |
|
||
|
Как разместить Java-код на AppServ-е?
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2012, 11:26:56 |
|
||
|
Как разместить Java-код на AppServ-е?
|
|||
|---|---|---|---|
|
#18+
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 . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2012, 11:36:59 |
|
||
|
Как разместить Java-код на AppServ-е?
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2012, 11:48:26 |
|
||
|
Как разместить Java-код на AppServ-е?
|
|||
|---|---|---|---|
|
#18+
Попробую. Спасибо за ответы! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2012, 12:12:39 |
|
||
|
Как разместить Java-код на AppServ-е?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczВ Java 7 вроде есть готовый API для мониторинга. Он прям из OS события получает. Ничего в цикле проверять не нужно. - не очень удобно (отсутствует фильтр по маске/типу файла) и, не помню точно, но вроде есть глючок под виндой, когда в папку льется большой файл, событие о том что файл в папке происходит при начале копирования, а конец копирования никак не отмечается, т. е. непонятно когда с файлом можно начинать что-то делать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2012, 17:58:00 |
|
||
|
Как разместить Java-код на AppServ-е?
|
|||
|---|---|---|---|
|
#18+
Kachalovт. е. непонятно когда с файлом можно начинать что-то делать. М-да. Остаётся write lock в цикле проверять, пока не снимется. Но всё равно проще чем самостоятельно по дате-размеру сверять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2012, 18:50:52 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=265&tid=2130800]: |
0ms |
get settings: |
10ms |
get forum list: |
21ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
38ms |
get topic data: |
15ms |
get forum data: |
4ms |
get page messages: |
65ms |
get tp. blocked users: |
2ms |
| others: | 277ms |
| total: | 442ms |

| 0 / 0 |
