Como la inicialización del puerto del cliente WS es tan costosa, nos gustaría volver a utilizar la misma instancia. También nos gustaría establecer diferentes valores en el BindingProvider/RequestContext antes de cada llamada. Inicialmente nos gustaría hacer esto:¿Están seguros los clientes de JAX-WS?
MyService service = new MyService(wsdlURL, name);
MyPort myPort = service .getMyServicePort();
luego más tarde, antes de cada llamada hacer esto:
Map requestContext = ((BindingProvider)myPort).getRequestContext();
requestContext.put(BindingProvider.USERNAME_PROPERTY, uName);
requestContext.put(BindingProvider.PASSWORD_PROPERTY, pWord);
myPort.someFunctionCall();
Mi pregunta es, ¿es este hilo código de seguridad? La documentación de JAX-WS parece indicar que es no hilo seguro. Sin embargo, CXF seems to be so if you take precautions. Si JAX-WS y Metro en particular no son seguros para subprocesos, ¿hay alguna manera de garantizar la seguridad del subproceso sin sincronizar el acceso a las operaciones de puerto o ws?
Esto no está claro en las especificaciones. Verifique esto, por ejemplo: http: //community.jboss.org/message/526321 – Cratylus