Guest

Why is inet:/0.0.0.0 interpreted as inet:/0:0:0:0:0:0:0:0 by com.sun.net.httpserver.HttpServer

By: a guest on Feb 23rd, 2012  |  syntax: None  |  size: 2.97 KB  |  hits: 8  |  expires: Never
download  |  raw  |  embed  |  report abuse
Copied
  1. import javax.xml.ws.Endpoint;
  2.  .
  3.  .
  4.  //Implementor is the corresponding implementation object for the WS
  5.  Endpoint receiver = Endpoint.create(new Implementor());
  6.  .
  7.  receiver.setExecutor(threadPoolExecutor);
  8.  receiver.publish ("http://0.0.0.0:9545/context");
  9.        
  10. java.lang.NullPointerException
  11.     at com.sun.xml.ws.transport.http.server.ServerMgr.removeContext(ServerMgr.java:123)
  12.     at com.sun.xml.ws.transport.http.server.HttpEndpoint.stop(HttpEndpoint.java:110)
  13.     at com.sun.xml.ws.transport.http.server.EndpointImpl.stop(EndpointImpl.java:167
  14.        
  15. import com.sun.net.httpserver.HttpContext;
  16. import com.sun.net.httpserver.HttpServer;
  17. import java.io.IOException;
  18. import java.net.InetSocketAddress;
  19. import java.net.MalformedURLException;
  20. import java.net.URISyntaxException;
  21. import java.net.URL;
  22. import java.util.HashMap;
  23. import java.util.Map;
  24. import java.util.logging.Level;
  25. import java.util.logging.Logger;
  26.  
  27. public class Main {
  28. static final String URL_1 = "http://0.0.0.0:9545/context";
  29.  
  30. static final String URL_2 = "http://127.0.0.1:9548/context";
  31. static final String URL_3 = "http://10.226.90.217:9549/context";
  32.  
  33. public void testUrl(String address){
  34.     try {
  35.         URL url = new URL(address);
  36.         Map<InetSocketAddress, Integer> map = new HashMap<InetSocketAddress, Integer>();
  37.  
  38.         InetSocketAddress iaddr = new InetSocketAddress(url.getHost(), url.getPort());
  39.         map.put(iaddr, 1);
  40.  
  41.         HttpServer server = HttpServer.create(iaddr, 5);
  42.         HttpContext context = server.createContext(url.toURI().getPath());
  43.         server.start();
  44.         System.out.println("original inet:"+iaddr+" and final inet:"+context.getServer().getAddress());
  45.         if(iaddr.equals(context.getServer().getAddress())){
  46.             System.out.println("equal");
  47.             Integer t = map.get(context.getServer().getAddress());
  48.             if( t == null){
  49.                 System.out.println("You won");
  50.             }else{
  51.                 System.out.println("You lose "+t);
  52.             }
  53.         }else{
  54.             System.out.println("not-equal");
  55.         }
  56.         server.stop(0);
  57.         map.clear();
  58.  
  59.     } catch (URISyntaxException ex) {
  60.         Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
  61.     } catch (IOException ex) {
  62.         Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
  63.     }
  64. }
  65. public static void main(String[] args)
  66.  {
  67.  
  68.   Main d = new Main();
  69.   d.testUrl(Main.URL_1);
  70.   d.testUrl(Main.URL_2);
  71.   d.testUrl(Main.URL_3);
  72.  
  73.  
  74.  }
  75.  
  76. }
  77.        
  78. equal--
  79. original inet:/0.0.0.0:9545 and final inet:/0.0.0.0:9545
  80. equal
  81. You lose 1
  82. equal--
  83. original inet:/127.0.0.1:9548 and final inet:/127.0.0.1:9548
  84. equal
  85. You lose 1
  86. equal--
  87. original inet:/10.226.92.47:9549 and final inet:/10.226.92.47:9549
  88. equal
  89. You lose 1
  90.        
  91. run:
  92. original inet:/0.0.0.0:9545 and final inet:/0:0:0:0:0:0:0:0:9545
  93. not-equal
  94. original inet:/127.0.0.1:9548 and final inet:/127.0.0.1:9548
  95. equal
  96. You lose 1
  97. original inet:/10.226.90.217:9549 and final inet:/10.226.90.217:9549
  98. equal
  99. You lose 1
  100.        
  101. -Djava.net.preferIPv4Stack=true