用什么方法调用来确定jetty servlet运行的url和端口是什么?这样我就可以在屏幕上打印它,并在客户端中使用它来连接:
url = new URL("trying to figure this out");
我在本地运行客户端和服务器,在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();
}
}
}
答案 0 :(得分:9)
由于您正在执行此嵌入式操作,因此您有几个选项。
服务器服务器=新服务器(8080);
这将在端口8080上启动服务器,如果这是您想要的,这很好,但在单元测试中,您通常希望这是一个随机端口,以避免CI或并行测试相互绊倒等问题。< / p>
服务器服务器=新服务器(0);
这会在随机端口上启动连接器,但如何获取该端口?
server.getConnectors()[0] .getLocalPort();
该端口实际上来自连接器,通常您只在这里设置一个连接器,因此这将为您提供该端口。
现在localhost可以很好地进行测试,但是如果你想要连接器所在的主机名,你可以使用它:
server.getConnectors()[0] .getHost();
链接那些东西,你得到我们如何在jetty本身进行大部分单元测试,旋转服务器本身,连接我们想要的任何处理程序或webapps,然后断言行为,请求,响应等。
我们在这里有一些嵌入式示例,您可以查看在代码中连接jetty的不同方法,而jetty.xml格式只是java上的一小块xml,因此您可以轻松映射jetty的启动通过使用java hat读取xml文件来通过代码。这里有一个嵌入式示例,用于基于xml格式引导jetty,如果你想保留配置那么。
有关嵌入码头的好页面,请查看此处:http://www.eclipse.org/jetty/documentation/current/embedding-jetty.html
答案 1 :(得分:1)
默认情况下,jetty服务器很可能在8080上运行。如果没有,您可以去检查server.xml文件,该文件应该告诉您端口配置是什么。
答案 2 :(得分:0)
我不确定你在这里问的是什么,但如果你有一些servlet,你好:
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 击>