2010-09-27 3 views
3

Dans certains didacticiels (par exemple here, here et here), il est suggéré de fermer le port JAX-WS en le transformant en com.sun.xml.ws.Closeable par exemple.Est-il nécessaire de fermer le port JAX-WS?

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

Cette approche ne fonctionnera pas pour les procurations, renvoyés par JaxWsPortProxyFactoryBean, car il conseille seule interface WS cible et javax.xml.ws.BindingProvider.

Donc, ma question est la suivante: est-il nécessaire de fermer le port (en tenant compte du fait que il est réutilisable en application)? S'il est préférable de fermer le port (et probablement de l'annuler?), Comment organiser correctement le cycle de vie des ports (par l'implémentation les proxies Spring créés seront toujours des singletons)?

Répondre

2

Non, je ne crois pas que cela est nécessaire. Il appartient au sous-système JAX-WS de gérer son propre cycle de vie, les ports n'ont pas besoin d'être fermés.

C'est constitué par le comportement de JaxWsPortProxyFactoryBean, si vous regardez le code source. Il ne tente pas de faire quoi que ce soit avec le Port lors de l'arrêt du contexte, ce que fera généralement Spring FactoryBeans.

+0

Merci pour la réponse. Après avoir navigué encore plus, j'ai trouvé plus de conseils. Ce serait bien, si vous pouvez dire quels pourraient être les effets secondaires de ** ne pas ** fermer un proxy. –

+0

@dma_k: Aucun, à ma connaissance. – skaffman

4

Le JavaDoc pour com.sun.xml.ws.Closeable lit:

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. 

également Closing WSIT Reliable Messaging Connections Note se lit:

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. 
Questions connexes