Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用jetty从主类部署war文件_Java_Server_Jetty_Vaadin - Fatal编程技术网

Java 使用jetty从主类部署war文件

Java 使用jetty从主类部署war文件,java,server,jetty,vaadin,Java,Server,Jetty,Vaadin,我确实希望运行一个主类,该类使用我的vaadin应用程序的内容部署jetty服务器 final Server server = new Server(); final Connector connector = new ServerConnector( server ); (( AbstractNetworkConnector ) connector).setPort( 3131 ); server.setConnectors( new Connector[] {

我确实希望运行一个主类,该类使用我的vaadin应用程序的内容部署jetty服务器

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 + "/" );
这是我的main方法代码,但是当我运行它时,它不会出错,但是

这是我的


我已经看到了一些与此相关的问题,但这些问题并不是很有帮助。如果您提前提供帮助,谢谢您。

您可能希望以另一种方式来完成此操作:直接将应用程序设置为可运行jar,而不是war文件

您需要将此主类与您的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 plugin
exec maven plugin
,以创建一个可运行的jar文件


查看完整示例,但请注意,外部化静态资源(widgetset和css)的设置有点不同,但您可以跳过该配置。

如何部署jetty服务器?在完整的jetty包中包含您的war,而不是在以后推动它,不是更简单吗?我使用目标jetty:run进行maven构建,这就是我现在运行它的方式。我想创建一个像.bat或.launch这样的文件,触发运行jetty的主类。恐怕我不明白我怎么能把我的战争包含在完整的码头包装中@AndréSchildPossible使用了
ServletContextHandler
,这是一种非常常见的技术,可以避免
WebAppContext
的复杂性。有关另一个uber jar示例,请参阅