8146086: Publishing two webservices on same port fails with "java.net.BindException: Address already in use"
Reviewed-by: chegar
This commit is contained in:
parent
07b44796c2
commit
3a492834aa
@ -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.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* 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.ExecutorService;
|
||||||
import java.util.concurrent.Executors;
|
import java.util.concurrent.Executors;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Manages all the WebService HTTP servers created by JAXWS runtime.
|
* Manages all the WebService HTTP servers created by JAXWS runtime.
|
||||||
@ -81,6 +83,19 @@ final class ServerMgr {
|
|||||||
synchronized(servers) {
|
synchronized(servers) {
|
||||||
state = servers.get(inetAddress);
|
state = servers.get(inetAddress);
|
||||||
if (state == null) {
|
if (state == null) {
|
||||||
|
final int finalPortNum = port;
|
||||||
|
Optional<ServerState> stateOpt =
|
||||||
|
servers.values()
|
||||||
|
.stream()
|
||||||
|
.filter(s -> s.getServer()
|
||||||
|
.getAddress()
|
||||||
|
.getPort() == finalPortNum)
|
||||||
|
.findAny();
|
||||||
|
|
||||||
|
if (inetAddress.getAddress().isAnyLocalAddress() &&
|
||||||
|
stateOpt.isPresent()) {
|
||||||
|
state = stateOpt.get();
|
||||||
|
} else {
|
||||||
logger.fine("Creating new HTTP Server at "+inetAddress);
|
logger.fine("Creating new HTTP Server at "+inetAddress);
|
||||||
// Creates server with default socket backlog
|
// Creates server with default socket backlog
|
||||||
server = HttpServer.create(inetAddress, 0);
|
server = HttpServer.create(inetAddress, 0);
|
||||||
@ -101,6 +116,7 @@ final class ServerMgr {
|
|||||||
return context;
|
return context;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
server = state.getServer();
|
server = state.getServer();
|
||||||
|
|
||||||
if (state.getPaths().contains(url.getPath())) {
|
if (state.getPaths().contains(url.getPath())) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user