20

WS istemci tarafı bağlantı noktasının başlatılması çok maliyetli olduğundan, aynı örneği yeniden kullanmak isteriz. Ayrıca her aramadan önce BindingProvider/RequestContext'te farklı değerler belirlemek isteriz. Başlangıçta bunu yapmak istiyorum:JAX-WS istemcileri iş parçacığı güvenli midir?

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

daha sonra, her çağrı bunu yapmadan önce:

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

Sorum şu, bu kod parçacığı güvenli? JAX-WS belgeleri, numaralı dişli güvenli olmadığını belirtmektedir. Bununla birlikte, CXF seems to be so if you take precautions. Eğer JAX-WS ve Metro özellikle diş ipliği güvenli değilse, port veya ws işlemlerine erişimi senkronize etmeden iplik güvenliğini sağlamanın herhangi bir yolu var mı?

+0

Bu, özelliklerden net değildir. Örneğin şunu kontrol edin: http: //community.jboss.org/message/526321 – Cratylus

cevap

14

JAX-WS/Metro için, bu kesinlikle dişli güvenli değildir. En iyi seçenek, bir proxy havuzunu oluşturmak ve gerektiğinde, havuzdan bir vekil çekin, onu yapılandırın, kullanın, ayarlanan değerleri temizleyin, havuza geri dönün. Veya CXF'yi kullanın.

+2

Teşekkürler Daniel, bu benim de şüphemdi, ancak bunu doğrulayan herhangi bir resmi referansınız var mı? –

+0

Eski bir şeye benziyorsun ... ama benim için çok gerçek. @ Daniel set değerlerini temizleyerek ne demek istiyorsun ... Bu soruna ilgi duyuyorum çünkü çok fazla başarıya gerek duymadan sordum: http: //stackoverflow.com/questions/6882528/weblogic-webservice-clients-clean-references – Cris

+0

JAX-WS/Metro için çok uzun bir zamandan beri kesinlikle güvenlidir. – rustyx

İlgili konular