簡體   English   中英

Jetty Servlet網址和端口

[英]Jetty servlet url and port

調用Jetty Servlet的URL和端口是什么的方法調用是什么? 這樣我就可以在屏幕上打印它,並在客戶端中使用它進行連接:

url = new URL("trying to figure this out");

我在本地運行客戶端和服務器,日食,這是一個學校項目。

相關代碼:

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();
        }
    }
}

由於您正在執行此嵌入式操作,因此有兩種選擇。

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

這將在端口8080上啟動服務器,如果這是您想要的端口,那很好,但是在單元測試中,您通常希望它是一個隨機端口,以避免諸如CI或並行測試相互跳閘之類的問題。

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

這將在隨機端口上啟動連接器,但是如何獲得該端口?

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

該端口實際上來自連接器,通常您僅在此處設置一個連接器,因此可以使用該端口。

現在,localhost可以很好地進行測試,但是如果您想要連接器所在的主機的名稱,則可以使用以下命令:

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

將這些東西鏈接起來,您將了解到我們如何在碼頭本身中完成大部分單元測試,旋轉服務器本身,連接所需的任何處理程序或Web應用程序,然后斷言行為,請求,響應等。

我們這里有許多嵌入式示例,您可以查看以各種方式在代碼內連接jetty,並且jetty.xml格式只是java上xml的一薄層,因此您可以通過代碼輕松地映射jetty的啟動。通過戴着Java帽子閱讀xml文件。 如果您想將配置保留在那里,這里還有一個嵌入式示例,用於基於該xml格式引導碼頭。

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

默認情況下,碼頭服務器最有可能在8080上運行。 如果不是,則可以檢查server.xml文件,該文件應告訴您端口配置是什么。

我不確定您在這里要問什么,但是您是否有一些servlet,例如Hello:

public final class Hello extends HttpServlet {

    public void doGet(HttpServletRequest request,
                      HttpServletResponse response)
      throws IOException, ServletException {

        response.setContentType("text/html");
        PrintWriter writer = response.getWriter();        
        writer.println("URL is " + request.getRequestURL() + " port is " request.getServerPort());
    }
} 

此外,如果這不是您要查找的信息,請參見:

http://docs.oracle.com/javaee/1.4/api/javax/servlet/http/HttpServletRequest.html

http://docs.oracle.com/cd/E17802_01/webservices/webservices/docs/1.6/api/javax/servlet/http/HttpServletRequest.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM