services paso invocar desde crear consumir como web-services jax-ws java-metro-framework webservices-client

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.