Java-приложение внутри Tomcat? - PullRequest
       6

Java-приложение внутри Tomcat?

2 голосов
/ 15 февраля 2011

У меня есть отдельное Java-приложение, которое использует основанный на Java TCP NIO для сбора некоторой информации от различных клиентов (не через веб / HTTP, а через некоторое собственно разработанное промежуточное ПО). Теперь мне нужно разработать интерфейс для пользователей, чтобы выполнять множество запросов через HTTP. Так есть ли способ поместить это приложение в tomcat, чтобы сервлеты могли вызывать необходимые функции в этом приложении ??? Дело в том, что он тоже должен слушать это промежуточное программное обеспечение вне tomcat и в то же время обслуживать сервлеты внутри tomcat. Как это сделать ??

Размещение этого приложения вне tomcat и использование RMI - вариант, но я не хочу этого делать. Может ли встраивание tomcat в мое приложение - вариант ???

Ответы [ 8 ]

3 голосов
/ 15 февраля 2011

Совершенно новый Tomcat 7 имеет встроенную версию для загрузки .

1 голос
/ 15 февраля 2011

Я не знаю, как встроить Tomcat, но вы можете встроить контейнер сервлета в ваше приложение, используя встроенный Jetty . Если вы хотите добавить HTTP-интерфейс к существующему серверу, я думаю, что это путь.

Это также должно быть вполне работоспособным для запуска прослушивающих TCP-компонентов вашего сервера из стандартного сервлета в Tomcat. Затем сервлет может напрямую вызывать методы в существующем приложении, в то время как он продолжает прослушивать свои обычные порты TCP.

Третий вариант - написать сервлет, который просто общается с вашим существующим сервером так же, как другие клиенты.

1 голос
/ 15 февраля 2011

Tomcat большой.Вы должны попытаться внедрить Jetty, что предназначено, чтобы сделать это возможным.

http://jetty.codehaus.org/jetty/

0 голосов
/ 17 февраля 2011

Я не уверен, что понимаю ваш комментарий относительно памяти.

На базовом уровне у вас есть два варианта:

  1. Запустите приложение и Интернет приложение в того же виртуального машина .

  2. Запустите ваше приложение и веб-приложение в другое виртуальная машина

Если вы выберете подход 1, вы сможете получать экземпляры классов ваших приложений из сервлетов и вызывать их методы.

  1. Вставить кота / молу в ваше приложение. Вы будете запускать ваше приложение в обычном режиме с помощью основного метода. После запуска приложения вам необходимо создать экземпляры классов tomcat / jetty, которые будут запускать свои собственные потоки.
  2. Вставьте ваше приложение в файл war для развертывания на tomcat / jetty. Вместо этого, как и в предыдущем варианте, вам нужно будет запустить приложение из слушателя контекста .

Если вы предпочитаете подход 2; запустите tomcat / jetty, разверните веб-приложение и разверните приложение отдельно. Теперь у вас будет два запущенных jvms. Для связи между этими двумя процессами вам нужно использовать некую форму сокетного взаимодействия: OutputStream / InputStream over sockets; RMI; JMX; JMS и т. Д.

0 голосов
/ 15 февраля 2011

Если вам нужно использовать Tomcat, лучше всего сделать ваше приложение в виде файла .war, который при запуске Tomcat развернет ваш код. Затем он может общаться с любым RMI / промежуточным ПО, которое вам нравится.

0 голосов
/ 15 февраля 2011

Рассматривали ли вы пойти другим путем?Что означает встраивание вашего приложения в веб-приложение?

С помощью Spring вы можете создать экземпляр своего веб-приложения и затем добавить его в соответствующие веб-классы (например, действия struts2).

Таким образом, вы можете развернутьваше веб-приложение на любой веб-сервер, который предварительно настроен отдельно от вашего приложения.

0 голосов
/ 15 февраля 2011

Как сказал Трарот, встраивание Jetty - гораздо лучший вариант, чем то же самое с Tomcat.У вас есть пример и небольшое руководство на веб-сайте Jetty: http://docs.codehaus.org/display/JETTY/Embedding+Jetty

Вы всегда можете открыть порты и прослушать их вручную, если запросы не сложны.

0 голосов
/ 15 февраля 2011

Вы хотите, чтобы встроенный веб-сервер существовал в вашем приложении, поскольку вам просто нужно немного веб-функциональности.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...