Sont JAX-WS clients thread-safe?
Parce que l'initialisation de la WS côté client port est si coûteux nous tenons à réutiliser la même instance. Nous tenons également à définir des valeurs différentes dans les BindingProvider/RequestContext avant chaque appel. D'abord, nous tenons à ce faire:
MyService service = new MyService(wsdlURL, name);
MyPort myPort = service .getMyServicePort();
puis, plus tard, avant chaque appel ce faire:
Map requestContext = ((BindingProvider)myPort ).getRequestContext();
requestContext.put(BindingProvider.USERNAME_PROPERTY, uName);
requestContext.put(BindingProvider.PASSWORD_PROPERTY, pWord);
myPort.someFunctionCall();
Ma question est, est-ce code thread-safe? JAX-WS documentation semble indiquer que c'est pas thread-safe. Cependant, CXF semble donc, si vous prenez des précautions. Si JAX-WS et Métro en particulier n'est pas thread-safe, est-il un moyen d'assurer la sécurité des threads sans la synchronisation des accès au port ou ws opérations?
- Ce n'est pas clair à partir de spécifications. Vérifier ceci par exemple:community.jboss.org/message/526321
Vous devez vous connecter pour publier un commentaire.
Pour JAX-WS/Métro, ce n'est certainement pas thread-safe. Le meilleur pari est de créer un Pool de procurations et, si nécessaire, tirez un proxy de la piscine, configurer, utiliser, claire l'ensemble des valeurs, de retour à la piscine.
Ou de l'utilisation CXF.