2014-12-05 2 views
1

Я борюсь с созданием самых простых примеров запуска приложения Jetty и запуска пакета .war одновременно. Все, что я нахожу, просто говорит, чтобы положить .war в «$ JETTY_HOME/webapps», но я не уверен, как проверить, что такое «$ JETTY_HOME». Я пытаюсь распространить простую заявку по умолчанию для героику, найденную по адресу https://github.com/heroku/java-getting-started.git. Моя структура каталогов:Запуск .war файлов с Jetty

src/ 
-- main/ 
---- java/ 
------ Main.java 
target/ 
-- (lots of stuff in here) 
pom.xml 
Procfile 
webapps/ 
-- workbench.war 

Я бегу мое приложение с java -cp target/classes:target/dependency/* Main.

Main.java идентичен: https://raw.githubusercontent.com/heroku/java-getting-started/master/src/main/java/Main.java.

Как я могу заставить это приложение запускать файлы .war? Всякий раз, когда я посещаю localhost:5000/workbench, я просто вижу «Hello World», где я должен увидеть приложение Workbench, содержащееся в workbench.war.

+0

Этот пример вообще не использует военный файл, он использует прямые определения сервлета. –

+0

Я хочу расширить этот «пример», чтобы он мог сделать оба. –

+0

«Контекст» вокруг webapp означает, что вам нужно иметь все внутри этого контекста, иначе это будут разные контексты. Помните об этом, когда вы решаете, что вы хотите делать. Трудно (но не исключено) смешивать автосозданный военный контекст с его автоматической загрузкой дескрипторов и некоторых ручных сервлетов. –

ответ

1

Если это только одна война, сделайте это.

package org.eclipse.jetty.demo; 

import org.eclipse.jetty.annotations.AnnotationConfiguration; 
import org.eclipse.jetty.plus.webapp.EnvConfiguration; 
import org.eclipse.jetty.plus.webapp.PlusConfiguration; 
import org.eclipse.jetty.server.Server; 
import org.eclipse.jetty.webapp.Configuration; 
import org.eclipse.jetty.webapp.FragmentConfiguration; 
import org.eclipse.jetty.webapp.JettyWebXmlConfiguration; 
import org.eclipse.jetty.webapp.MetaInfConfiguration; 
import org.eclipse.jetty.webapp.TagLibConfiguration; 
import org.eclipse.jetty.webapp.WebAppContext; 
import org.eclipse.jetty.webapp.WebInfConfiguration; 
import org.eclipse.jetty.webapp.WebXmlConfiguration; 

public class EmbedMe 
{ 
    public static void main(String[] args) throws Exception 
    { 
     int port = 8080; 
     Server server = new Server(port); 

     String warpath = "webapps/workbench.war"; 

     WebAppContext context = new WebAppContext(); 
     context.setResourceBase(warpath); 
     context.setConfigurations(new Configuration[] 
     { 
      new AnnotationConfiguration(), 
      new WebInfConfiguration(), 
      new WebXmlConfiguration(), 
      new MetaInfConfiguration(), 
      new FragmentConfiguration(), 
      new EnvConfiguration(), 
      new PlusConfiguration(), 
      new JettyWebXmlConfiguration() 
     }); 

     context.setContextPath("/"); 
     context.setParentLoaderPriority(true); 
     server.setHandler(context); 
     server.start(); 
     server.join(); 
    } 
} 
+0

Это выглядит многообещающим - это позволит мне запустить войну и послушать другие маршруты? –