Как опубликовать SOAP веб-сервис через HTTPS в Java - PullRequest
0 голосов
/ 21 июня 2019

Я пытаюсь опубликовать веб-сервис SOAP через HTTPS. Я могу заставить все работать должным образом, однако я не могу получить доступ к службе в своем браузере.

Ниже приведены мои настройки SSL и сервера, которые публикуются с конечной точкой. Я убедился, что сертификат из хранилища ключей находится в моем браузере и в хранилище доверенных сертификатов моего компьютера.

Сервис SOAP

@WebService(name = "TestService")
@SOAPBinding
public interface TestService {
    @WebMethod
    void test();
}

Внедрение услуги

@MTOM
@WebService(
        targetNamespace = "https://localhost",
        endpointInterface = "bootstrap.TestService",
        portName = "TestPort",
        serviceName = "TestService"
)
public class TestServiceImpl implements TestService {
    @Override
    public void test() {
        System.out.println("Hello");
    }
}

Настройка SSL

SSLContext sslContext = SSLContext.getInstance("SSL");

KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());

KeyStore store = KeyStore.getInstance(KeyStore.getDefaultType());
        store.load(EndpointPublisher.class.getResourceAsStream("KeyStore.ks"), "password".toCharArray());

System.setProperty("javax.net.ssl.keyStore", "/bootstrap/dev/KeyStore.ks");
System.setProperty("javax.net.ssl.keyStorePassword", "password");

keyManagerFactory.init(store, "password".toCharArray());
trustManagerFactory.init(store);

KeyManager[] keyManagers = keyManagerFactory.getKeyManagers();
TrustManager[] trustManagers = trustManagerFactory.getTrustManagers();

sslContext.init(keyManagers, trustManagers, new SecureRandom());

Настройка сервера

String host = "localhost";
int port = 8080;
String uri = "/test";
TestService service = new TestServiceImpl();

HttpsServer httpsServer = HttpsServer.create(new InetSocketAddress(host, port), port);
httpsServer.setHttpsConfigurator(new HttpsConfigurator(sslContext));

HttpContext context = httpsServer.createContext(uri);
httpsServer.start();

Endpoint endpoint = Endpoint.create(service);
endpoint.publish(context);

Я ожидаю увидеть wsdl при подключении к

https://localhost:8080/test?wsdl

однако я получаю

Этот сайт недоступен

localhost неожиданно закрыл соединение.

Попробуйте:

 Checking the connection

 Checking the proxy and the firewall

 Running Windows Network Diagnostics

 ERR_CONNECTION_CLOSED
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...