Jetty Server not starting: Unable to establish loopback connection

匿名 (未验证) 提交于 2019-12-03 00:59:01

问题:

so I am trying to setup an embedded jetty 9 server. However when I try:

mvn clean compile exec:java

The execution halts at :

INFO:oejs.Server:com.main.SimpleServer.main(): jetty-9.0.0.RC2

After a while I get exceptions like:

WARN:oejuc.AbstractLifeCycle:com.main.SimpleServer.main(): FAILED org.eclipse.jetty.io.SelectorManager$ManagedSelector@45a0110e keys=-1 selected=-1: java.io.IOException: Unable to establish loopback connection

java.io.IOException: Unable to establish loopback connection java.net.ConnectException: Connection refused: connect

My code looks like this:

public class HelloHandler extends AbstractHandler {     final String _greeting;      final String _body;      public HelloHandler() {         _greeting = "Hello World";         _body = null;     }      public HelloHandler(String greeting) {         _greeting = greeting;         _body = null;     }      public HelloHandler(String greeting, String body) {         _greeting = greeting;         _body = body;     }      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>" + _greeting + "</h1>");         if (_body != null) response.getWriter().println(_body);     } } 

and

public class SimpleServer {      public static void main(String[] args) throws Exception {             Server server = new Server(8080);             server.setHandler(new HelloHandler());             server.start();             server.join();         } } 

my pom.xml looks like:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">     <modelVersion>4.0.0</modelVersion>     <groupId>TestJetty</groupId>     <artifactId>TestJetty</artifactId>     <version>0.0.1-SNAPSHOT</version>      <properties>     <jettyVersion>9.0.0.RC2</jettyVersion>   </properties>      <dependencies>         <dependency>             <groupId>org.eclipse.jetty</groupId>             <artifactId>jetty-server</artifactId>             <version>${jettyVersion}</version>         </dependency>         <dependency>             <groupId>org.eclipse.jetty</groupId>             <artifactId>jetty-websocket</artifactId>             <version>7.4.4.v20110707</version>         </dependency>         <dependency>             <groupId>org.eclipse.jetty</groupId>             <artifactId>jetty-util</artifactId>             <version>${jettyVersion}</version>         </dependency>         <dependency>             <groupId>javax.servlet</groupId>             <artifactId>servlet-api</artifactId>             <version>3.0-alpha-1</version>         </dependency>      </dependencies>      <build>     <plugins>       <plugin>         <groupId>org.eclipse.jetty</groupId>         <artifactId>jetty-maven-plugin</artifactId>         <version>${jettyVersion}</version>       </plugin>       <plugin>         <groupId>org.codehaus.mojo</groupId>         <artifactId>exec-maven-plugin</artifactId>         <version>1.1</version>         <executions>           <execution><goals><goal>java</goal></goals></execution>         </executions>         <configuration>           <mainClass>com.main.SimpleServer</mainClass>         </configuration>       </plugin>      </plugins>   </build> </project> 

回答1:

This means something about your localhost loopback is either misconfigured (such as reporting as a non loopback IP address), or being prevented from being used by something (most common cause being microsoft windows policy decisions and firewall rules).

Less common is a machine that does not have IPv4 available (only IPv6).

Try compiling and running this...

package stackoverflow.jetty;  import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.NetworkInterface; import java.net.SocketException; import java.util.Collections; import java.util.Enumeration; import java.util.List;  public class AddrList {     public static void main(String[] args)     {         try         {             InetAddress loopback = InetAddress.getLoopbackAddress();             dump("Loopback",loopback);         }         catch (Throwable t)         {             System.out.println("Unable to getLoopbackAddress()");             t.printStackTrace();         }          try         {             InetAddress localhost = InetAddress.getLocalHost();             dump("LocalHost",localhost);         }         catch (Throwable t)         {             System.out.println("Unable to getLocalHost()");             t.printStackTrace();         }          try         {             InetAddress alladdr = InetAddress.getByName("0.0.0.0");             dump("0.0.0.0",alladdr);         }         catch (Throwable t)         {             System.out.println("Unable to getLocalHost()");             t.printStackTrace();         }          try         {             Enumeration<NetworkInterface> nets = NetworkInterface.getNetworkInterfaces();             for (NetworkInterface iface : Collections.list(nets))             {                 try                 {                     System.out.println("DisplayName = " + iface.getDisplayName());                     System.out.println("Name = " + iface.getName());                      List<InetAddress> addrs = Collections.list(iface.getInetAddresses());                     int i = 0;                     for (InetAddress addr : addrs)                     {                         dump(Integer.toString(i++),addr);                     }                 }                 catch (Throwable t)                 {                     System.out.println("Unable to InetAddress for NetworkInterface: " + iface.getDisplayName());                     t.printStackTrace();                 }             }         }         catch (SocketException e)         {             System.out.print("Unable to get all network interfaces");             e.printStackTrace();         }     }      public static void dump(String type, InetAddress addr)     {         String header = String.format("[%s] InetAddress",type);         try         {             System.out.println(header + " = " + addr);             System.out.println(header + ".isAnyLocalAddress = " + addr.isAnyLocalAddress());             System.out.println(header + ".isLinkLocalAddress = " + addr.isLinkLocalAddress());             System.out.println(header + ".isLoopbackAddress = " + addr.isLoopbackAddress());         }         catch (Throwable t)         {             System.out.printf("[%s] Failed to list InetAddress details%n",type);             t.printStackTrace();         }          try         {             header = String.format("[%s] InetSocketAddress",type);             InetSocketAddress isockaddr = new InetSocketAddress(addr,8080);             System.out.println(header + " = " + isockaddr);             System.out.println(header + ".isUnresolved = " + isockaddr.isUnresolved());         }         catch (Throwable e)         {             e.printStackTrace();         }     } } 

This should list all variations of Network Interfaces on your machine. If you have an error or exception you will need to address that first, before you can start Jetty on that machine.

On a normal machine you see the following output:

[Loopback] InetAddress = localhost/127.0.0.1 [Loopback] InetAddress.isAnyLocalAddress = false [Loopback] InetAddress.isLinkLocalAddress = false [Loopback] InetAddress.isLoopbackAddress = true [Loopback] InetSocketAddress = localhost/127.0.0.1:8080 [Loopback] InetSocketAddress.isUnresolved = false [LocalHost] InetAddress = lapetus/127.0.1.1 [LocalHost] InetAddress.isAnyLocalAddress = false [LocalHost] InetAddress.isLinkLocalAddress = false [LocalHost] InetAddress.isLoopbackAddress = true [LocalHost] InetSocketAddress = lapetus/127.0.1.1:8080 [LocalHost] InetSocketAddress.isUnresolved = false [0.0.0.0] InetAddress = /0.0.0.0 [0.0.0.0] InetAddress.isAnyLocalAddress = true [0.0.0.0] InetAddress.isLinkLocalAddress = false [0.0.0.0] InetAddress.isLoopbackAddress = false [0.0.0.0] InetSocketAddress = /0.0.0.0:8080 [0.0.0.0] InetSocketAddress.isUnresolved = false (snip ... long list of other interfaces) 

This shows me that all 3 choices: loopback, localhost, and 0.0.0.0 (any interface) work as possible listeners for Jetty.

Lastly, upgrade to final non-RC Jetty 9.0.0.v20130308.



回答2:

Jetty server was configured and working for me. on one fine day it start giving "Unable to establish loopback connection" error. I have restated my machine and it starts working again .So I think this error is totally related to windows operating system.



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!