用Jetty从主班上部署战争文件



我确实想运行一个主类,该类用我的vaadin应用程序的内容部署码头服务器。

final Server server = new Server();
     final Connector connector = new ServerConnector( server );
     (( AbstractNetworkConnector ) connector).setPort( 3131 );
     server.setConnectors( new Connector[] { connector } ); //
     final WebAppContext webappcontext = new WebAppContext();
     final File warFile = new File( "target/avx-gcms-1.0.war" );
     webappcontext.setClassLoader( Thread.currentThread().getContextClassLoader() );
     webappcontext.setContextPath( "/" );
     webappcontext.setWar( warFile.getAbsolutePath() );
     server.setHandler( webappcontext );
     server.start();
     System.out.println( "Jetty started, please go to http://localhost:" + 3131 + "/" );

这是我的主要方法代码

这是我的工作区

我已经看到了一些相关问题,但它们并不是很有帮助。谢谢您提前提供帮助。

您可能想以相反的方式进行:而不是战争文件,将应用程序直接作为可运行的jar。

您需要将此主要类与您的Vaadin UI类一起参加该项目,然后将其直接连接到Jetty:

public static void main(String[] args) {
    Server server = new Server(3131);
    ServletContextHandler contextHandler
            = new ServletContextHandler(ServletContextHandler.SESSIONS);
    contextHandler.setContextPath("/");
    ServletHolder sh = new ServletHolder(new VaadinServlet());
    contextHandler.addServlet(sh, "/*");
    contextHandler.setInitParameter("ui", HelloWorldUI.class.getCanonicalName());
    server.setHandler(contextHandler);
    try {
        server.start();
        server.join();
    } catch (Exception ex) {
        Logger.getLogger(App.class.getName()).log(Level.SEVERE, null, ex);
    }
}

然后在pom.xml中配置maven-shade-pluginexec-maven-plugin,以创建一个可运行的JAR文件。

查看该项目以获取完整示例,但是请注意,外部化静态资源(WidgetSet和CSS(的设置有点不同,但是您可以在情况下跳过该配置。

最新更新