Eclipse 嵌入的Jetty挂起在join()上

Eclipse 嵌入的Jetty挂起在join()上,eclipse,web-services,jetty,Eclipse,Web Services,Jetty,我正在用JUnit4做实验,已经有一段时间了。我的单元测试的一部分要求部署一个公开某些web服务的war应用程序。我使用的是Eclipse Helios,我在项目的构建路径中添加了两个不同的JAR,它们是: 1-jetty-all-8.1.3.v20120416.jar 2-servlet-api-3.0.jar 现在在我的测试类中,我运行以下代码以启动jetty并部署包含公开web服务的axis2.war webapp: System.out.println("Initializing ser

我正在用JUnit4做实验,已经有一段时间了。我的单元测试的一部分要求部署一个公开某些web服务的war应用程序。我使用的是Eclipse Helios,我在项目的构建路径中添加了两个不同的JAR,它们是: 1-jetty-all-8.1.3.v20120416.jar 2-servlet-api-3.0.jar

现在在我的测试类中,我运行以下代码以启动jetty并部署包含公开web服务的axis2.war webapp:

System.out.println("Initializing server");
       Server server = new Server(8181);
       System.out.println("Server initialized");

        WebAppContext webapp = new WebAppContext();
        webapp.setContextPath("/");
        webapp.setParentLoaderPriority(true);
        webapp.setWar("C:\\axis2.war")

        server.setHandler(webapp);

        System.out.println("Starting server");
        server.start();

        System.out.println("Joining server");

        server.join();
        System.out.println("Finished starting Jetty...");
上述代码的输出如下:

Server initialized
Starting server
Joining server
尝试加入服务器正在无限期运行,它不会抛出任何异常

在另一次尝试中,我在我的机器上下载了jetty 8.1.3 web服务器,并将axis.war放在webapps目录下,然后从命令行使用start.jar启动jetty。从那时起,它工作得非常完美,我能够访问我公开的web服务方法

但是,我需要能够以编程方式启动和停止jetty,并以编程方式部署我的web应用程序。有人能告诉我问题出在哪里吗

提前感谢。

不要加入线程

请参阅:

不要加入线程


请参阅:

问题在于,我在加入服务器后立即运行测试用例,这是错误的。基于javadocs的连接将在线程上等待,直到线程死亡。然而,这并不是我希望的行为,因为我希望我的测试用例在jetty完成启动后立即运行。摆脱server.join实际上已经解决了我的问题。谢谢你的帮助。你也可以在一个单独的线程中调用server.start和server.join,将新线程设为守护进程threadsetDeamon->true并启动它。问题是,我在加入服务器后立即运行测试用例,这是错误的。基于javadocs的连接将在线程上等待,直到线程死亡。然而,这并不是我希望的行为,因为我希望我的测试用例在jetty完成启动后立即运行。摆脱server.join实际上已经解决了我的问题。感谢您的帮助。您还可以在单独的线程中调用server.start和server.join,并将新线程设为守护进程threadsetDeamon->true并启动它。为什么首先要加入呢???为什么一开始就加入???