Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / jaxws multithreading / 7 сообщений из 7, страница 1 из 1
16.11.2015, 10:14
    #39104151
ivanra
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
jaxws multithreading
Кто-нибудь разбирался, является ли standalone jax-ws сервис многопоточным? Имеется в виду сервис, публикуемый не на сервере приложений, а подобным образом:
Код: java
1.
Endpoint endpoint = Endpoint.publish(address, new MyMegaServiceImpl());
...
Рейтинг: 0 / 0
16.11.2015, 10:40
    #39104171
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
jaxws multithreading
А с фига ему бы быть однопоточным?
https://docs.oracle.com/javase/8/docs/jre/api/net/httpserver/spec/com/sun/net/httpserver/HttpServer.html
И научитесь же наконец читать исходники JSE.
...
Рейтинг: 0 / 0
16.11.2015, 10:41
    #39104172
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
jaxws multithreading
ivanra,

Если код исполнять внутри JEE сервера, то там через SPI публикация будет происходить в этот сервер, скорее всего, а не во внутренний HTTP сервер Java.
...
Рейтинг: 0 / 0
16.11.2015, 10:50
    #39104179
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
jaxws multithreading
Хотя, смотрю вот в sun.net.httpserver.ServerImpl. Похоже, что по-умолчанию там сервер вполне себе однопоточный.
...
Рейтинг: 0 / 0
16.11.2015, 11:39
    #39104240
ivanra
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
jaxws multithreading
Blazkowicz, про jee сервер речь не идет, вопрос про standalone публикацию сервиса.
Посмотрел спецификацию , пункт 5.2.7:
5.2.7 ExecutorEndpoint instances can be configured with a java.util.concurrent.Executor. The executor will
then be used to dispatch any incoming requests to the application. The setExecutor and getExecutor
methods of Endpoint can be used to modify and retrieve the executor configured for a service.
Conformance (Use of Executor): If an executor object is successfully set on an Endpoint via the set-
Executor method, then an implementation MUST use it to dispatch incoming requests upon publication of
the Endpoint by means of the publish(String address) method. If publishing is carried out using
the publish(Object serverContext)) method, an implementation MAY use the specified executor or
another one specific to the server context being used.

Conformance (Default Executor): If an executor has not been set on an Endpoint, an implementation
MUST use its own executor, a java.util.concurrent.ThreadPoolExecutor or analogous mechanism,
to dispatch incoming requests.

Понятно, что можно назначить простейший экзекутор, и сервис станет многопоточным
Код: java
1.
endpoint.setExecutor(Executors.newFixedThreadPool(5));


Но нас интересует последний пункт: Default Executor, где говориться, что в реализации по умолчанию должен использоваться свой экзекутор. Но, например, в этой книжке утверждается, что одновременно может исполняться только 1 запрос, то есть по умолчанию там пул из 1 потока.
Короче, для уверенности, видимо, придется использовать код, приведенный выше
...
Рейтинг: 0 / 0
16.11.2015, 11:47
    #39104250
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
jaxws multithreading
ivanra,

Вот такой вот он:

Код: java
1.
2.
3.
4.
5.
private static class DefaultExecutor implements Executor {
        public void execute (Runnable task) {
            task.run();
        }
}



Лучше явно передать свой Executor в Endpoint.
...
Рейтинг: 0 / 0
16.11.2015, 13:59
    #39104465
ivanra
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
jaxws multithreading
Blazkowicz, честно говоря, не знаю, как посмотреть некоторые классы jdk, например, реализацию com.sun.xml.internal.ws.transport.http.server.WSHttpHandler (в src.zip этого класса нет).
В OpenJdk, например, даже default executor-ом не стали заморачиваться, а просто выполняют код в основном потоке, если executor нулевой . Приведенный выше DefaultExecutor - это наверно из HTTPServer-а?
Впрочем, на вывод это не влияет - пулом действительно лучше управлять самостоятельно.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / jaxws multithreading / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]