2012-10-30 26 views
6

SOAP istemci sınıfları oluşturmak için CXF kullanıyorum. CXF documentation'da,CXF istemci proxy'leri iş parçacığı güvenli midir?

JAX-WS istemci proxy'leri iş parçacığı güvenli midir?

Resmi JAX-WS yanıtı: Hayır. JAX-WS özelliklerine göre, istemci proxy'leri iş parçacığı güvenli DEĞİLDİR. Portatif kod yazmak için, onları iş parçacığı olarak güvenli bir şekilde kullanmalı ve erişimi eşitlemeli ya da bir örnek veya benzer havuzu kullanmalısınız.

CXF yanıtı: CXF proxy'leri, MANY kullanım durumları için vida dişleridir. istisnalar şunlardır:

en "basit" kullanım durumları için

(Ben Bu örneklerden onların açıklamasını ihmal ediyorum), birden çok iş parçacığı üzerinde CXF vekilleri kullanabilirler. Yukarıdakiler, diğerlerinin geçici çözümlerini özetlemektedir.

Herhangi bir tersine deneyime sahip olan var mı? Sq'lerinde açıklanmayan çok iş parçacıklı sorunlar ile karşılaştı? Ya da açıklamaları doğrudur ve kullanımı temelde güvenli midir?

+0

Tam olarak ne anlama geliyor? Bu, CXF 'wsdl2java' ** tarafından üretilen Client Proxies ** 'in (çoğunlukla) thread-safe (güvenli) olduğunu veya istemci programınızda herhangi bir gerçek CXF API'sini kullanmanız gerektiği anlamına mı geliyor? –

+0

@MaartenBoekhold Oluşturulan istemci proxy'lerini kastettim. – Eyal

cevap

6

Son zamanlarda projemizde benzer bir tartışmaya girdik. SSS'de belirtildiği gibi, HTTP kanalını anında değiştiren özellikler dışında (örn: oturum yönetimi ve yük devretme özellikleri), CXF istemci proxy'si iş parçacığı için güvenlidir. Bu özellikleri kullanmazsanız, istemci proxy'sini iş parçacıkları arasında paylaşmak tamam değildir.

1

Muhtemelen çalışma zamanına atıfta bulunursunuz, ancak yapılandırma zamanının threadafe olması gerektiğini düşünmüyorum. JettyHTTPServerEngineFactory'de bir yarış durumu gördüğümü düşünüyorum.

Bir test kayışında, birbiriyle ilgisiz çok sayıda SOAP sunucusunu getiriyoruz ve bir Bus paylaştıklarında, birden çok iş parçacığı aynı anda JettyHTTPServerEngine örneklerini eklemeye çalışırsa, bir yarış durumu potansiyeli var demektir. Belirli yarış durumu, bir bağlantı noktası için HTTPS kullanmak istediğinizde aradığınız setTLSServerParametersForPort() biçimindedir. Bu yöntem, kilitleme olmadan bir HashMap'e elemanlar ekler.

Diğerlerinin bu durumla karşılaşmamasının sebebi, çoğu kullanıcının CXF'yi yapılandırma dosyaları aracılığıyla yapılandırması ve tek işlemde birden çok bağlantı noktası/Jetty sunucusu bulunması nadirdir.

+0

Ve bu özel yarış koşulunun CXF düzeltmelerinin daha yeni bir sürümü çıkıyor, ancak CXF belgelerinde iş parçacığı üzerinde kesin bir sözleşme görmedim. Ayrıca, harita statiktir, bu nedenle eski versiyondaki yarış durumu, Bus'tan bağımsız olarak gerçekleşir. –

İlgili konular