Merge
This commit is contained in:
commit
7f2475695e
@ -32,7 +32,7 @@ import java.util.Map;
|
||||
*
|
||||
* JAXBContextFactory can be located using {@link java.util.ServiceLoader#load(Class)}
|
||||
*
|
||||
* @since 1.9, JAXB 2.3
|
||||
* @since 9, JAXB 2.3
|
||||
*/
|
||||
public interface JAXBContextFactory {
|
||||
|
||||
@ -68,7 +68,7 @@ public interface JAXBContextFactory {
|
||||
* @throws IllegalArgumentException
|
||||
* if the parameter contains {@code null} (i.e., {@code newInstance(null,someMap);})
|
||||
*
|
||||
* @since 1.9, JAXB 2.3
|
||||
* @since 9, JAXB 2.3
|
||||
*/
|
||||
JAXBContext createContext(Class<?>[] classesToBeBound,
|
||||
Map<String, ?> properties ) throws JAXBException;
|
||||
@ -100,7 +100,7 @@ public interface JAXBContextFactory {
|
||||
* <li>failure to locate a value for the context factory provider property</li>
|
||||
* <li>mixing schema derived packages from different providers on the same contextPath</li>
|
||||
* </ol>
|
||||
* @since 1.9, JAXB 2.3
|
||||
* @since 9, JAXB 2.3
|
||||
*/
|
||||
JAXBContext createContext(String contextPath,
|
||||
ClassLoader classLoader,
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -38,6 +38,8 @@ import java.util.Set;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.logging.Logger;
|
||||
import java.util.Optional;
|
||||
|
||||
|
||||
/**
|
||||
* Manages all the WebService HTTP servers created by JAXWS runtime.
|
||||
@ -81,24 +83,38 @@ final class ServerMgr {
|
||||
synchronized(servers) {
|
||||
state = servers.get(inetAddress);
|
||||
if (state == null) {
|
||||
logger.fine("Creating new HTTP Server at "+inetAddress);
|
||||
// Creates server with default socket backlog
|
||||
server = HttpServer.create(inetAddress, 0);
|
||||
server.setExecutor(Executors.newCachedThreadPool());
|
||||
String path = url.toURI().getPath();
|
||||
logger.fine("Creating HTTP Context at = "+path);
|
||||
HttpContext context = server.createContext(path);
|
||||
server.start();
|
||||
final int finalPortNum = port;
|
||||
Optional<ServerState> stateOpt =
|
||||
servers.values()
|
||||
.stream()
|
||||
.filter(s -> s.getServer()
|
||||
.getAddress()
|
||||
.getPort() == finalPortNum)
|
||||
.findAny();
|
||||
|
||||
// we have to get actual inetAddress from server, which can differ from the original in some cases.
|
||||
// e.g. A port number of zero will let the system pick up an ephemeral port in a bind operation,
|
||||
// or IP: 0.0.0.0 - which is used to monitor network traffic from any valid IP address
|
||||
inetAddress = server.getAddress();
|
||||
if (inetAddress.getAddress().isAnyLocalAddress() &&
|
||||
stateOpt.isPresent()) {
|
||||
state = stateOpt.get();
|
||||
} else {
|
||||
logger.fine("Creating new HTTP Server at "+inetAddress);
|
||||
// Creates server with default socket backlog
|
||||
server = HttpServer.create(inetAddress, 0);
|
||||
server.setExecutor(Executors.newCachedThreadPool());
|
||||
String path = url.toURI().getPath();
|
||||
logger.fine("Creating HTTP Context at = "+path);
|
||||
HttpContext context = server.createContext(path);
|
||||
server.start();
|
||||
|
||||
logger.fine("HTTP server started = "+inetAddress);
|
||||
state = new ServerState(server, path);
|
||||
servers.put(inetAddress, state);
|
||||
return context;
|
||||
// we have to get actual inetAddress from server, which can differ from the original in some cases.
|
||||
// e.g. A port number of zero will let the system pick up an ephemeral port in a bind operation,
|
||||
// or IP: 0.0.0.0 - which is used to monitor network traffic from any valid IP address
|
||||
inetAddress = server.getAddress();
|
||||
|
||||
logger.fine("HTTP server started = "+inetAddress);
|
||||
state = new ServerState(server, path);
|
||||
servers.put(inetAddress, state);
|
||||
return context;
|
||||
}
|
||||
}
|
||||
}
|
||||
server = state.getServer();
|
||||
|
Loading…
Reference in New Issue
Block a user