2015-09-01 3 views
1

Теперь вот беспорядок для вас ...Deploy Struts2 WebApp внутри Eclipse RCP приложения через Jetty

В настоящее время я работаю над плагином приложений Eclipse RCP. Цель этого плагина состоит в том, чтобы обслуживать веб-приложение для взаимодействия с пользователями в среде просмотра Eclipse ViewPart (управление браузером SWT).

Я хотел бы, чтобы этот webapp работал на Struts2, и у меня уже есть Jetty в моем распоряжении для обслуживания вещей.

Есть ли вообще способ развертывания Struts2 WebApp таким образом? Если вам нужна дополнительная информация, пожалуйста, спросите!

EDIT # 1:

Некоторые более подробно. Единственный способ, которым я знаю, как развернуть приложение struts2 в настоящее время, - это военный файл (хостинг на tomcat, то есть). В этом случае я не могу этого сделать. Мне нужно как-то развернуть struts2 внутренне встроенным способом, используя сервер Jetty, снабженный инфраструктурой Eclipse RCP.

РЕЗУЛЬТАТ:

Как оказывается, можно развернуть WAR-файл (Struts2 приложение в данном случае) со встроенным Jetty. Я обнаружил, что Joakim Erdfelt делает это здесь: Embedding Jetty as a Servlet Container

+0

Непонятно, как бы вы хотели развернуть его и что произошло, когда вы пытались это сделать. Также расскажите, что вы пытались лучше понять. –

+0

@RomanC Я сделал правку, чтобы сделать мою проблему более ясной. Я довольно долго оглядывался, чтобы найти несколько указателей на то, как сделать это, не повезло, прежде чем я спросил здесь. Я надеюсь, что кто-то там попытается это сделать и может указать мне в правильном направлении. Мне просто нужно запустить Struts2 с встроенным сервером Jetty, который поставляется с Eclipse RCP. –

ответ

1

Веб-приложение Struts2 может работать в контейнере сервлетов, таком как Jetty. Jetty также имеет встроенный вариант. Eclipse RCP использует платформу Eclipse для расширения и настройки с помощью плагинов. Существует статья using Eclipse RCP with embedded Jetty server:

Прежде всего, давайте добавим плагин причала к нашим зависимостям. Откройте вкладку Зависимости в вашей конфигурации плагина. Затем добавьте эти шесть плагинов к подключаемые модули:

javax.servlet 
org.eclipse.equinox.http.jetty 
org.eclipse.equinox.http.regstry 
org.eclipse.equinox.http.servlet 
org.mortbay.jetty.server 
org.mortbay.jetty.util 

В списке плагинов, включенных в запуске приложения вам нужно изменить Auto-Start значение для трех плагинов к истинным (если вы ленивы, вы можете включить поведение по умолчанию для автоматического запуска, но это другой вопрос):

org.eclipse.equinox.http.jetty 
org.eclipse.equinox.http.regstry 
org.eclipse.equinox.http.servlet 

Теперь, если вы запустите приложение, вы можете проверить, ваш сервер правильно работает, обратившись к http://localhost. Это должно работать безупречно, за исключением, может быть, если вы не можете запустить сервер в порту 80 или уже есть сервер, работающий в порту 80.

Вы можете изменить порт, добавив аргумент аргументов VM в Запуск конфигураций. Добавьте это значение: -Dorg.eclipse.equinox.http.jetty.http.port=8888. Измените 8888 на любой порт, который вы хотите, чтобы сервер работал.

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

Следующей задачей является определение одного (или нескольких) сервлетов, которые будут обслуживать любой запрос, который получает сервер. Для этого вам нужно открыть вкладку «» «Расширения» из вашей конфигурации плагина и добавить новое расширение с именем org.eclipse.equinox.http.registry.servlets. После , которые добавляют новый servlet. Вы должны указать имя класса сервлета и псевдоним для этого. Одно замечание здесь - вам нужно добавить косую черту перед псевдонимом. Например, если вы хотите сделать сервлет доступным из http://localhost:8888/webserviceInterface, то значение псевдонима равно /webserviceInterface. Конечно, вам нужно, чтобы реализовал сервлет, который будет выполнять нужную работу.

+0

Это, безусловно, указывало мне в правильном направлении! Спасибо! Я проделал еще несколько исследований после прочтения вашего сообщения, а также нашел этот ответ: http://stackoverflow.com/questions/17246512/embedding-jetty-as-a-servlet-container Я полагаю, что можно просто указать Причал в WAR-файл и пусть он работает именно так! –

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