Как заставить работать Conscrypt SSL Provider с HttpClient 5 в веб-приложении Tomcat - PullRequest
0 голосов
/ 18 декабря 2018

Я использую Apache HttpClient 5 вместе с Conscrypt для одновременных запросов HTTP 2.0 по SSL, как показано ниже:

final SSLContext sslContext;
    try {
        sslContext = SSLContexts.custom()
                .setProvider(Conscrypt.newProvider())
                .build();
    } catch (Exception e) {
         // ... omitted for brevity
    }

    final PoolingAsyncClientConnectionManager cm = PoolingAsyncClientConnectionManagerBuilder.create()
            .setTlsStrategy(new ConscriptClientTlsStrategy(sslContext))
            .build();

    final CloseableHttpAsyncClient httpclient = HttpAsyncClients.custom()
            .setVersionPolicy(HttpVersionPolicy.NEGOTIATE)
            .setConnectionManager(cm)
            .build();

    try {
        httpclient.start();
        HttpHost host = new HttpHost("www.wikidata.org");
        final HttpClientContext clientContext = HttpClientContext.create();

        final SimpleHttpRequest request = SimpleHttpRequests.GET.create(host, "/w/api.php?action=wbsearchentities&search=Washington");
            request.addHeader("Accept-Charset", charset);
            FutureCallback<SimpleHttpResponse> callback = // ... omitted for brevity
            httpclient.execute(SimpleRequestProducer.create(request),
                    SimpleResponseConsumer.create(),
                    clientContext,
                    callback);
     }
     catch (Exception e) {
         // ... omitted for brevity
     }

Запуск кода вмодульное тестирование прошло успешно.Однако, если он запускается как часть веб-приложения, работающего в Tomcat v8, он вызывает следующее исключение при вызове Conscrypt.newProvider(): message: java.lang.UnsatisfiedLinkError: Failed creating temp file (null).Это похоже на проблему привилегий.Кто-то может указать, что в этом контексте я должен настроить, чтобы решить проблему?

1 Ответ

0 голосов
/ 28 января 2019

В * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *1004* * * * * * * * * * *1004* * * * * * * * * * 1004uber jar будет иметь все зависимости, необходимые для concerypt.

Также используйте Http2AsyncClientBuilder вместо HttpAsyncClients для создания мультиплексирования http2.

...