Являются ли клиенты JAX-WS потокобезопасными?

Поскольку инициализация порта на стороне клиента WS слишком затратна, мы хотели бы повторно использовать один и тот же экземпляр. Мы также хотели бы установить разные значения в BindingProvider / RequestContext перед каждым вызовом. Сначала мы хотели бы сделать это:

MyService service = new MyService(wsdlURL, name); 
MyPort myPort = service .getMyServicePort(); 

, затем позже, перед каждым вызовом, сделайте это:

Map requestContext = ((BindingProvider)myPort ).getRequestContext(); 
requestContext.put(BindingProvider.USERNAME_PROPERTY, uName); 
requestContext.put(BindingProvider.PASSWORD_PROPERTY, pWord); 
myPort.someFunctionCall();

Мой вопрос: является ли этот код потокобезопасным? Документация JAX-WS, кажется, указывает, что он не потокобезопасен. Однако CXF кажется таковым, если принять меры . Если JAX-WS и Metro , в частности, не являются потокобезопасными, есть ли способ обеспечить безопасность потоков без синхронизации доступа к порту или операций ws?

20
задан PålOliver 8 December 2010 в 07:42
поделиться