|
|
|
jaxws multithreading
|
|||
|---|---|---|---|
|
#18+
Кто-нибудь разбирался, является ли standalone jax-ws сервис многопоточным? Имеется в виду сервис, публикуемый не на сервере приложений, а подобным образом: Код: java 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2015, 10:14 |
|
||
|
jaxws multithreading
|
|||
|---|---|---|---|
|
#18+
А с фига ему бы быть однопоточным? https://docs.oracle.com/javase/8/docs/jre/api/net/httpserver/spec/com/sun/net/httpserver/HttpServer.html И научитесь же наконец читать исходники JSE. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2015, 10:40 |
|
||
|
jaxws multithreading
|
|||
|---|---|---|---|
|
#18+
ivanra, Если код исполнять внутри JEE сервера, то там через SPI публикация будет происходить в этот сервер, скорее всего, а не во внутренний HTTP сервер Java. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2015, 10:41 |
|
||
|
jaxws multithreading
|
|||
|---|---|---|---|
|
#18+
Хотя, смотрю вот в sun.net.httpserver.ServerImpl. Похоже, что по-умолчанию там сервер вполне себе однопоточный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2015, 10:50 |
|
||
|
jaxws multithreading
|
|||
|---|---|---|---|
|
#18+
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. Но нас интересует последний пункт: Default Executor, где говориться, что в реализации по умолчанию должен использоваться свой экзекутор. Но, например, в этой книжке утверждается, что одновременно может исполняться только 1 запрос, то есть по умолчанию там пул из 1 потока. Короче, для уверенности, видимо, придется использовать код, приведенный выше ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2015, 11:39 |
|
||
|
jaxws multithreading
|
|||
|---|---|---|---|
|
#18+
ivanra, Вот такой вот он: Код: java 1. 2. 3. 4. 5. Лучше явно передать свой Executor в Endpoint. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2015, 11:47 |
|
||
|
jaxws multithreading
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, честно говоря, не знаю, как посмотреть некоторые классы jdk, например, реализацию com.sun.xml.internal.ws.transport.http.server.WSHttpHandler (в src.zip этого класса нет). В OpenJdk, например, даже default executor-ом не стали заморачиваться, а просто выполняют код в основном потоке, если executor нулевой . Приведенный выше DefaultExecutor - это наверно из HTTPServer-а? Впрочем, на вывод это не влияет - пулом действительно лучше управлять самостоятельно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2015, 13:59 |
|
||
|
|

start [/forum/topic.php?fid=59&gotonew=1&tid=2124669]: |
0ms |
get settings: |
12ms |
get forum list: |
22ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
229ms |
get topic data: |
9ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
2ms |
| others: | 292ms |
| total: | 624ms |

| 0 / 0 |
