< prev index next >

src/java.base/share/classes/java/net/InetAddress.java

Print this page




 253     InetAddressHolder holder() {
 254         return holder;
 255     }
 256 
 257     /* Used to store the name service provider */
 258     private static List<NameService> nameServices = null;
 259 
 260     /* Used to store the best available hostname */
 261     private transient String canonicalHostName = null;
 262 
 263     /** use serialVersionUID from JDK 1.0.2 for interoperability */
 264     private static final long serialVersionUID = 3286316764910316507L;
 265 
 266     /*
 267      * Load net library into runtime, and perform initializations.
 268      */
 269     static {
 270         preferIPv6Address = java.security.AccessController.doPrivileged(
 271             new GetBooleanAction("java.net.preferIPv6Addresses")).booleanValue();
 272         AccessController.doPrivileged(
 273             new java.security.PrivilegedAction<Void>() {
 274                 public Void run() {
 275                     System.loadLibrary("net");
 276                     return null;
 277                 }
 278             });
 279         init();
 280     }
 281 
 282     /**
 283      * Constructor for the Socket.accept() method.
 284      * This creates an empty InetAddress, which is filled in by
 285      * the accept() method.  This InetAddress, however, is not
 286      * put in the address cache, since it is not created by name.
 287      */
 288     InetAddress() {
 289         holder = new InetAddressHolder();
 290     }
 291 
 292     /**
 293      * Replaces the de-serialized object with an Inet4Address object.


 835         if (provider == null)
 836             return null;
 837 
 838         NameService nameService = null;
 839         if (provider.equals("default")) {
 840             // initialize the default name service
 841             nameService = new NameService() {
 842                 public InetAddress[] lookupAllHostAddr(String host)
 843                     throws UnknownHostException {
 844                     return impl.lookupAllHostAddr(host);
 845                 }
 846                 public String getHostByAddr(byte[] addr)
 847                     throws UnknownHostException {
 848                     return impl.getHostByAddr(addr);
 849                 }
 850             };
 851         } else {
 852             final String providerName = provider;
 853             try {
 854                 nameService = java.security.AccessController.doPrivileged(
 855                     new java.security.PrivilegedExceptionAction<NameService>() {
 856                         public NameService run() {
 857                             Iterator<NameServiceDescriptor> itr =
 858                                 ServiceLoader.load(NameServiceDescriptor.class)
 859                                     .iterator();
 860                             while (itr.hasNext()) {
 861                                 NameServiceDescriptor nsd = itr.next();
 862                                 if (providerName.
 863                                     equalsIgnoreCase(nsd.getType()+","
 864                                         +nsd.getProviderName())) {
 865                                     try {
 866                                         return nsd.createNameService();
 867                                     } catch (Exception e) {
 868                                         e.printStackTrace();
 869                                         System.err.println(
 870                                             "Cannot create name service:"
 871                                              +providerName+": " + e);
 872                                     }
 873                                 }
 874                             }
 875 
 876                             return null;
 877                         }
 878                     }
 879                 );
 880             } catch (java.security.PrivilegedActionException e) {
 881             }
 882         }
 883 
 884         return nameService;
 885     }
 886 
 887     static {
 888         // create the impl
 889         impl = InetAddressImplFactory.create();
 890 
 891         // get name service if provided and requested
 892         String provider = null;;
 893         String propPrefix = "sun.net.spi.nameservice.provider.";
 894         int n = 1;
 895         nameServices = new ArrayList<NameService>();
 896         provider = AccessController.doPrivileged(
 897                 new GetPropertyAction(propPrefix + n));
 898         while (provider != null) {
 899             NameService ns = createNSProvider(provider);
 900             if (ns != null)
 901                 nameServices.add(ns);
 902 
 903             n++;
 904             provider = AccessController.doPrivileged(
 905                     new GetPropertyAction(propPrefix + n));
 906         }
 907 
 908         // if not designate any name services provider,
 909         // create a default one
 910         if (nameServices.size() == 0) {
 911             NameService ns = createNSProvider("default");
 912             nameServices.add(ns);
 913         }
 914     }
 915 




 253     InetAddressHolder holder() {
 254         return holder;
 255     }
 256 
 257     /* Used to store the name service provider */
 258     private static List<NameService> nameServices = null;
 259 
 260     /* Used to store the best available hostname */
 261     private transient String canonicalHostName = null;
 262 
 263     /** use serialVersionUID from JDK 1.0.2 for interoperability */
 264     private static final long serialVersionUID = 3286316764910316507L;
 265 
 266     /*
 267      * Load net library into runtime, and perform initializations.
 268      */
 269     static {
 270         preferIPv6Address = java.security.AccessController.doPrivileged(
 271             new GetBooleanAction("java.net.preferIPv6Addresses")).booleanValue();
 272         AccessController.doPrivileged(
 273             new java.security.PrivilegedAction<>() {
 274                 public Void run() {
 275                     System.loadLibrary("net");
 276                     return null;
 277                 }
 278             });
 279         init();
 280     }
 281 
 282     /**
 283      * Constructor for the Socket.accept() method.
 284      * This creates an empty InetAddress, which is filled in by
 285      * the accept() method.  This InetAddress, however, is not
 286      * put in the address cache, since it is not created by name.
 287      */
 288     InetAddress() {
 289         holder = new InetAddressHolder();
 290     }
 291 
 292     /**
 293      * Replaces the de-serialized object with an Inet4Address object.


 835         if (provider == null)
 836             return null;
 837 
 838         NameService nameService = null;
 839         if (provider.equals("default")) {
 840             // initialize the default name service
 841             nameService = new NameService() {
 842                 public InetAddress[] lookupAllHostAddr(String host)
 843                     throws UnknownHostException {
 844                     return impl.lookupAllHostAddr(host);
 845                 }
 846                 public String getHostByAddr(byte[] addr)
 847                     throws UnknownHostException {
 848                     return impl.getHostByAddr(addr);
 849                 }
 850             };
 851         } else {
 852             final String providerName = provider;
 853             try {
 854                 nameService = java.security.AccessController.doPrivileged(
 855                     new java.security.PrivilegedExceptionAction<>() {
 856                         public NameService run() {
 857                             Iterator<NameServiceDescriptor> itr =
 858                                 ServiceLoader.load(NameServiceDescriptor.class)
 859                                     .iterator();
 860                             while (itr.hasNext()) {
 861                                 NameServiceDescriptor nsd = itr.next();
 862                                 if (providerName.
 863                                     equalsIgnoreCase(nsd.getType()+","
 864                                         +nsd.getProviderName())) {
 865                                     try {
 866                                         return nsd.createNameService();
 867                                     } catch (Exception e) {
 868                                         e.printStackTrace();
 869                                         System.err.println(
 870                                             "Cannot create name service:"
 871                                              +providerName+": " + e);
 872                                     }
 873                                 }
 874                             }
 875 
 876                             return null;
 877                         }
 878                     }
 879                 );
 880             } catch (java.security.PrivilegedActionException e) {
 881             }
 882         }
 883 
 884         return nameService;
 885     }
 886 
 887     static {
 888         // create the impl
 889         impl = InetAddressImplFactory.create();
 890 
 891         // get name service if provided and requested
 892         String provider = null;;
 893         String propPrefix = "sun.net.spi.nameservice.provider.";
 894         int n = 1;
 895         nameServices = new ArrayList<>();
 896         provider = AccessController.doPrivileged(
 897                 new GetPropertyAction(propPrefix + n));
 898         while (provider != null) {
 899             NameService ns = createNSProvider(provider);
 900             if (ns != null)
 901                 nameServices.add(ns);
 902 
 903             n++;
 904             provider = AccessController.doPrivileged(
 905                     new GetPropertyAction(propPrefix + n));
 906         }
 907 
 908         // if not designate any name services provider,
 909         // create a default one
 910         if (nameServices.size() == 0) {
 911             NameService ns = createNSProvider("default");
 912             nameServices.add(ns);
 913         }
 914     }
 915 


< prev index next >