Windows 8.1 Pro Launched and running tomcat (7.0.72.0 JVM 1.7.0_13-b20) on port 8080 Launched HelloWorld example on jetty:
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.ServletException; import java.io.IOException; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.Request; import org.eclipse.jetty.server.handler.AbstractHandler; public class WebServer extends AbstractHandler { public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html;charset=utf-8"); response.setStatus(HttpServletResponse.SC_OK); baseRequest.setHandled(true); response.getWriter().println("<h1>Hello World</h1>"); } public static void main(String[] args) throws Exception { Server server = new Server(8080); server.setHandler(new WebServer()); server.start(); server.join(); } }
Starts without errors:
2017-02-01 12:21:02.029:INFO::main: Logging initialized @132ms 2017-02-01 12:21:02.075:INFO:oejs.Server:main: jetty-9.2.20.v20161216 2017-02-01 12:21:02.116:INFO:oejs.ServerConnector:main: Started ServerConnector@2b6dd9c5{HTTP/1.1}{0.0.0.0:8080} 2017-02-01 12:21:02.117:INFO:oejs.Server:main: Started @222ms We see that the port has opened, but of course tomcat responds:
D: \> netstat -ano | find / i "8080" TCP 0.0.0.0:8080 0.0.0.0 Spy-Distance LISTENING 5536 TCP 0.0.0.0:8080 0.0.0.0 Sc LISTENING 2464 TCP [::]: 8080 [:: ]: 0 LISTENING 5536
D: \> tasklist | find / i "tom" tomcat7.exe 2464 Services 0 185 916 KB
D: \> tasklist | find / i "java" javaw.exe 5536 Console 1 26,864 KB
If you create a server exclusively on an IPv4 address:
server = new Server (new InetSocketAddress ("127.0.0.1", 8080));
Exception is thrown
but if you create it like this:
server = new Server (new InetSocketAddress ("0.0.0.0", 8080));
then Exception is not thrown and ports of both IPv4 and IPv6 are listened
Thus, the program cannot determine in time that the port is occupied by someone and notify the user.