Нужно ли закрывать порт JAX-WS? - PullRequest
3 голосов
/ 27 сентября 2010

В некоторых руководствах (например, здесь , здесь и здесь ) предлагается закрыть порт JAX-WS, приведя его к com.sun.xml.ws.Closeable, например

MyPortType port = MyService.getMyPort();
... do some operations on WS proxy ...
((com.sun.xml.ws.Closeable) port).close();

Этот подход не будет работать для прокси, возвращаемых JaxWsPortProxyFactoryBean, так как он поддерживает только целевой интерфейс WS и javax.xml.ws.BindingProvider.

Итак, мой вопрос: необходимо ли закрывать порт (принимая во внимание, что он повторно используется в приложении)? Если лучше закрыть порт (и, возможно, обнулить его?), Как правильно организовать жизненный цикл портов (при реализации созданные прокси Spring всегда будут одиночными)?

Ответы [ 2 ]

4 голосов
/ 28 сентября 2010

JavaDoc для com.sun.xml.ws.Closeable читает:

This signals the implementation of certain specs (like WS-ReliableMessaging and
WS-SecureConversation) to terminate sessions that they create during the life
time of a proxy object. This is not a mandatory operation, so the application
does not have to call this method.

Также Закрытие соединений надежного обмена сообщениями WSIT Примечание читает:

Calling close() method provides a way for WSIT components, such as Reliable
Messaging and Secure Conversations to do clean-up activities related to client
instance. Sometimes calling close() can be avoided without harmful effects.
2 голосов
/ 27 сентября 2010

Нет, я не верю, что это необходимо.Именно подсистема JAX-WS может управлять своим собственным жизненным циклом, порты не нужно закрывать.

Это состоит в поведении JaxWsPortProxyFactoryBean, если вы посмотрите на исходный код.Он не пытается ничего сделать с портом при закрытии контекста, что обычно делает Spring FactoryBeans.

...