2013-03-04 20 views
5

Apache CXF kullanarak istemci saplamalarının nasıl oluşturulacağını biliyorum. Ancak, oluşturulan sınıfları çalıştırmaya çalıştığımda, JAXWS kullanır. Ayrıca, oluşturulan sınıfların içe aktarma sınıflarının javax paketinden olduğunu fark ettim. JAXWS kütüphaneleri yerine Apache CXF kitaplıklarını kullanmak için oluşturulan sınıfları nasıl kullanabilirim? tüm bilgiler CXF kullanılarak temsil edilebilir gerektiğinden onlarda bir CXF özgü ithalatı olmamalıdırApache CXF istemci olarak nasıl kullanılır?

wsdl2java -frontend jaxws21 -wsdlLocation "META-INF/wsdl/WSCustom.wsdl" -client -d C:\Workspace\WSClient\META-INF\wsdl\ "C:\Workspace\WSClient\META-INF\wsdl\WSCustom.wsdl" 

cevap

4

koçanları doğru olduğunu Aşağıda

İstemci koçanları üretmek için kullanmak koddur JAX-WS standart ek açıklamaları. Çalışma zamanında CXF istemci kitaplıkları, sınıf yolundaysa veya CXF kullanılamıyorsa JDK'da yerleşik olan RI'ler kullanılır. Oluşturulan taslaklar da ile çalışacaktır.

Yalnızca bir istemci çalıştırıyorsanız hangi CXF JAR'lerinin gerekli olduğu hakkındaki yorumları sormuştum - bildiğim kadarıyla sadece cxf-rt-frontend-jaxws ve cxf-rt-transports-http ve bunların geçiş bağımlılıkları. Projeniz maven ile inşa edilirse o zaman sadece bu iki bağımlılıkları beyan ve Maven alakalı JARs sonra Apache Ivy main JAR indirmek ve daha sonra

java -jar ivy-2.3.0.jar -dependency org.apache.cxf cxf-rt-frontend-jaxws 2.7.3 -retrieve "[artifact]-[revision](-[classifier]).jar" 
java -jar ivy-2.3.0.jar -dependency org.apache.cxf cxf-rt-transports-http 2.7.3 -retrieve "[artifact]-[revision](-[classifier]).jar" 

Bu geçişli bağımlılıkları çözmelidir çalıştırın ve indirmez eğer her şey, otomatik olarak gelmelidir Geçerli dizinin merkezi.

+0

Merhaba, @Ian. Cevabın için teşekkürler. Sınıf yolunda hem CXF hem de yerleşik JDK varsa önceliğe sahip olacak mı? Ayrıca, onu classpath içine koymak ve sadece uygulamanın lib klasörüne eklemek için bir yolu var mı? Zaten CXF lib'ini kullanıyorsa bunu nasıl kontrol edebilirim? – Arci

+1

@Arci "Sınıf yolunda" dediğimde mutlaka bir ortam değişkeni ayarlamanız gerektiği anlamına gelmez, sadece kavanozların ihtiyaç duyduğu her şekilde uygulamanız için kullanılabilir olduğu anlamına gelir (WEB-INF/lib bir web ise) Uygulama, bir komut satırı uygulaması için java-cp, ne olursa olsun). Önce hangisi bulunursa kullanılsın - eğer hem CXF hem de Metro kavanozları sınıf yolunda "varsa, o zaman ilk önce hangisi daha önce listelenirse, eğer CXF sizin uygulamanızda bulunuyorsa ve dahili kopyalamaya dayanıyorsanız Rt.jar'da metro sonra CXF kazanmalı. –

+1

Belirli bir zamanda kullanımda olup olmadığına bakılmaksızın [logging level] (http://cxf.apache.org/docs/debugging-and-logging.html#DebuggingandLogging-Configurelogginglevels.) (CXF) Doktorlar, önleyicilerdeki en üst noktayı göz ardı edin, bu sadece gönderilen ve alınan ham sabun mesajlarını kaydetmek istiyorsanız. –

İlgili konular