web-services - paso - soap web service java
¿Los clientes de JAX-WS están seguros? (1)
Debido a que la inicialización del puerto del cliente WS es tan costosa, nos gustaría reutilizar 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:
MyService service = new MyService(wsdlURL, name);
MyPort myPort = service .getMyServicePort();
luego, antes de cada llamada, haz esto:
Map requestContext = ((BindingProvider)myPort ).getRequestContext();
requestContext.put(BindingProvider.USERNAME_PROPERTY, uName);
requestContext.put(BindingProvider.PASSWORD_PROPERTY, pWord);
myPort.someFunctionCall();
Mi pregunta es, ¿este hilo de código es seguro? La documentación de JAX-WS parece indicar que no es segura para subprocesos. Sin embargo, CXF parece ser así si toma precauciones . Si JAX-WS y Metro en particular, no son seguros para subprocesos, ¿hay alguna forma de garantizar la seguridad de subprocesos sin sincronizar el acceso a las operaciones de puertos o ws?
Para JAX-WS / Metro, definitivamente no es seguro para subprocesos. La mejor opción es crear un grupo de proxies y, cuando sea necesario, extraer un proxy del grupo, configurarlo, usarlo, borrar los valores establecidos y volver al grupo.
O usa CXF.