2011-01-18 16 views
5

Her birinde aynı ad alanı olan birkaç XML Şeması içeren bir WSDL dosyası var (buna A diyelim). Bu şemalar için oluşturulan paket adını değiştirmek için bir JAXB harici ciltleme dosyası kullanmaya çalışıyorum. İşte bir örnek:CXF: JAXB dış bağlama dosyasını kullanarak WSDL içe aktarılan XML Şeması paketini nasıl değiştirebilirim?

WSDL'den kod oluşturma yapılandırmasını içeren bir POM dosyasına sahibim (cxf-codegen-plugin kullanarak).

Benim WSDL:

<definitions ...> 
    <types> 
     <xsd:schema elementFormDefault="qualified" targetNamespace="C"> 
      <xsd:import namespace="A" schemaLocation="SCHEMA_REF"/> 
      <xsd:import namespace="A" schemaLocation="SCHEMA_REF"/> 
      ... 
     </xsd:schema> 
    </types> 
    ... 
</definitions> 

Burada hiç işe, (... hiçbir hata mesajı) hepsi de uygulanmaz görünüyor gelmez benim gerçek bağlama dosyasıdır. Ben ithal şemaya erişmek için kullanılan XPath ifadesi değil iyidir çünkü nesil herhangi bir hata mesajı belki öyle olmadığı için

<jaxws:bindings wsdlLocation="WSDL_LOCATION" xmlns:jaxws="http://java.sun.com/xml/ns/jaxws" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" jaxb:version="2.0"> 
    <jaxws:bindings node="wsdl:definitions/wsdl:types/xs:schema[@targetNamespace='C']/xs:import[@namespace='A']">. 
     <jaxb:schemaBindings> 
      <jaxb:package name="B" /> 
     </jaxb:schemaBindings> 
    </jaxws:bindings> 
</jaxws:bindings> 

...

siz herhangi bir ipucu var mı? Burada sıkışmış durumdayım ...

Girişleriniz için şimdiden teşekkür ederiz!

cevap

0

İlginçtir, hiç bir cevabınız yok :) Ne yazık ki, ne istediğinizi arşivlemek mümkün değil. Tek yol, sahip olduğunuz her bir şema dosyası için ayrı ciltleme dosyaları tanımlamaktır, bu da işe yarayacaktır. şema-ithalat doğrudan ad başvurarak, WSDL belgeye birleştirildi olarak-eğer bağlamaları yazma

+0

Cevabınız için teşekkürler, şu anda bu konu üzerinde çalışmıyorum, bu yüzden bu çözümü test edemiyorum. Yapabileceğim en kısa sürede yapacağım! – reef

+0

Bir ek - XSD dosyaları için saf "jaxb" ad alanı kullanmak zorunda kalacaksınız, "jaxws" onlarla çalışmayacak. – Stas

1

Dene:

<jaxws:bindings wsdlLocation="WSDL_LOCATION" 
     xmlns:jaxws="http://java.sun.com/xml/ns/jaxws" 
     xmlns:xs="http://www.w3.org/2001/XMLSchema" 
     xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" 
     xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
     jaxb:version="2.0"> 
    <jaxws:bindings 
     node="wsdl:definitions/wsdl:types/xs:schema[@targetNamespace='A']">. 
    <jaxb:schemaBindings> 
     <jaxb:package name="B" /> 
    </jaxb:schemaBindings> 
</jaxws:bindings> 

Bu benim için çalıştı. İthal şema ile çalışmayı gösteren this post için Kudos.

İlgili konular