Jetty servlet网址和端口

Tru*_*rup 1 java servlets jetty

什么是方法调用来确定运行jetty servlet的url和端口是什么?这样我就可以在屏幕上打印它,并在客户端中使用它来连接:

url = new URL("trying to figure this out");
Run Code Online (Sandbox Code Playgroud)

我在本地运行客户端和服务器,在eclipse中,这是一个学校项目.

相关代码:

import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.servlet.DefaultServlet;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;

public class ServerMain {

    public static void main(String[] args){
        Server server = new Server();
        ServletContextHandler context = 
                new ServletContextHandler(ServletContextHandler.SESSIONS);
        context.setContextPath("Servlet");

        context.setResourceBase("etc/docroot");

        server.setHandler(context);
        context.addServlet(new ServletHolder(new MyServer()), "/game");
        DefaultServlet staticFileServlet = new DefaultServlet();
        context.addServlet(new ServletHolder(staticFileServlet), "/*");
        System.out.println("context: " +  context.getContextPath());
        //System.out.println("One valid Port = "
                  + context.getServer().getConnectors()[0].getPort());
        try {
            server.start();
            server.join();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

jes*_*ell 9

由于您正在执行此嵌入式操作,因此您有几个选项.

服务器服务器=新服务器(8080);

这将在端口8080上启动服务器,如果这是您想要的,这很好,但在单元测试中,您通常希望这是一个随机端口,以避免CI或并行测试相互绊倒等问题.

服务器服务器=新服务器(0);

这将在随机端口上启动连接器,但如何获取该端口?

server.getConnectors()[0] .getLocalPort();

该端口实际上来自连接器,通常您只在这里设置一个连接器,因此这将获得该端口.

现在localhost可以很好地进行测试,但是如果你想要连接器所在的主机名,你可以使用:

server.getConnectors()[0] .getHost();

填充的链条,你得到我们在jetty本身进行大部分单元测试的方式,启动服务器本身,连接我们想要的任何处理程序或webapps,然后断言行为,请求,响应等.

我们在这里有一些嵌入式示例,你可以看一下在代码中连接jetty的不同方法,而jetty.xml格式只是java上的一小块xml,所以你可以通过代码轻松映射jetty的启动通过读取带有Java帽子的xml文件.这里有一个嵌入式示例,用于基于xml格式引导jetty,如果你想在那里保留配置.

http://git.eclipse.org/c/jetty/org.eclipse.jetty.project.git/tree/example-jetty-embedded/src/main/java/org/eclipse/jetty/embedded

有关嵌入码头的好页面,请查看:http://www.eclipse.org/jetty/documentation/current/embedding-jetty.html