2014-09-14 5 views
1

Я создал приложение Socket Server, которое будет принимать клиентские соединения с других компьютеров в локальной сети. Это приложение запускается из общего метода static static void. и является очень стандартным java-приложением.Запуск приложения Java для запуска на tomcat sever

Я также создал веб-сервис, который работает на tomcat, он также использует java. Веб-сервис будет отправлять HTTP-сообщение с любого подключенного к Интернету устройства.

После того как веб-служба получит запрос, я хотел бы, чтобы он отправлял инструкции через сервер сокетов и отправлял некоторые данные подключенному клиенту.

Я хотел бы запустить приложение сервера сокетов в веб-службе, чтобы веб-служба имела доступ к серверу сокетов без необходимости подключения в качестве клиента.

Каков наилучший способ запуска стандартного приложения Java, чтобы сервер tomcat запустил приложение при его запуске? должен ли я запускать его в качестве сервлета или есть лучший способ доступа веб-службы к сокету?

ответ

1

Приложение, открывающее свой собственный серверный сокет в пределах, надлежащий сервер приложений бессмыслен и, возможно, обеспечивает обратную продуктивность ИМО.

Подумайте об этом: Tomcat, вероятно, работает на порту 8080. Ваше приложение гипотетически будет работать на порту 9080. Каким портом, по вашему мнению, клиенты должны будут подключиться, чтобы использовать ваши услуги? И если вы правильно ответили, какая услуга/вы хотите, то вы ожидаете, что Tomcat предоставит вам, если ваши клиенты на самом деле не будут вообще взаимодействовать с tomcat?

Вам не нужен (полный) сервер приложений для запуска вашего личного сервера. У вас есть возможность:

  1. Java web service without a web application server, который позволяет развернуть полный JAX-WS веб-сервиса в ванильным JSE, ни один сервер приложений не требуется

  2. Использование jdk's embedded HTTP server для обработки ваших запросов

  3. Развертывание отдельное приложение as a windows (or other OS) service

+0

Я не мог объяснять мое чувство собственного кор rectly. У меня есть два отдельных клиента. Клиент A - это устройство Android, которое вызывает веб-службу REST (на основе Джерси). Клиент B является автономным Java-клиентом, работающим под Linux, подключающимся к серверному приложению сокета. Если устройство android вызывает веб-службу REST, я хотел бы, чтобы ответ веб-службы был для клиента A, а также для нажатия команды через сервер сокетов на клиент B. –

+0

@ RussMilburn - да, вы не объясняли это явно раньше. Вы не можете форсировать сообщение на клиенте, если только ваш клиент не выполняет свою собственную службу (по любой технологии: веб-сервисы, веб-службы, конечные точки jms и т. Д.), Которые будут прослушивать сообщения. – kolossus

+0

Мне удалось разобраться с этим. Мне пришлось запускать мой сервер сокетов в качестве отдельного приложения. веб-сервер имеет экземпляр, который настроен и доступ к файлу контекста, и я могу отправить сообщение клиенту B, спасибо Kolossus за вашу помощь –

Смежные вопросы