2014-12-05 55 views
1

我与创造的最基本的运行码头应用程序,在同一时间推出的.war包的例子挣扎。我找到的所有东西都只是说将.war放在“$ JETTY_HOME/webapps”中,但我不确定如何验证“$ JETTY_HOME”是什么。我试图扩展在https://github.com/heroku/java-getting-started.git发现的简单heroku默认应用程序。我的目录结构:运行的.war文件与码头

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.war中包含的Workbench应用程序。

+0

该示例根本不使用war文件,它使用直接的Servlet定义。 – 2014-12-05 20:49:32

+0

我想扩展这个“例子”,所以它可以做到这一点。 – 2014-12-06 14:45:27

+0

围绕Web应用程序的“上下文”意味着您需要拥有该上下文中的所有内容,否则它将成为不同的上下文。记住当你决定你想要做什么时。将自动构建的战争上下文与其自动加载的描述符和一些手动servlet混合在一起很困难(但并非不可能)。 – 2014-12-08 12:42:06

回答

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

这看起来很有前途 - 这将允许我运行战争并听取其他路线吗? – 2014-12-06 14:49:51

相关问题