2010-02-01 57 views
21

我有以下問題: 我使用wsimport ant任務來創建Web服務客戶端(for salesforce.com)。 一切工作正常,但生成的類都使用這個奇怪的JAXBElement類的所有bean屬性。擺脫wsimport生成的類中的JAXBElement從螞蟻調用

如:

public void setLastName(JAXBElement<String> value) { 
    this.lastName = ((JAXBElement<String>) value); 
} 

public JAXBElement<String> getCountry() { 
    return country; 
} 

而是包裝中的JAXBElement我想有簡單的方法,如setLastName(字符串newLastName)所有類的。 這就是我所說的wsimport任務。

<wsimport debug="false" verbose="false" keep="${keep}" 
    extension="${extension}" destdir="${tmp.metro}" 
    wsdl="${licensing.wsdl}" 
    sourcedestdir="${licensingws.generated.src}" 

    > 

    <binding dir="${basedir}/etc" includes="${client.binding}" 
    /> 
    <arg value="-B-XautoNameResolution" /> 

    </wsimport> 

任務的定義是這樣的:

有誰知道我有什麼設置,這樣的wsimport生成的類我想要的方式? 非常感謝!

回答

25

在生成的bean中使用JAXBElement包裝的原因很可能是WSDL聲明該字段是可選的和可翻動的。爲了區分「不存在」和「存在,但爲空」,字符串類型不能直接使用,因爲兩種情況下的字符串都是空的。

如果不需要區分這兩種情況,則可以使用字符串類型configure the code generator來代替。我不是100%確定如何使用ant任務完成此任務,但是您可能會在ant任務文檔中找到相關信息。

+7

感謝,解決了它使用該綁定文件: build.xml中聲明如下: \t \t \t \t \t \t <結合DIR = 「」。包括= 「簡單binding.xjb」 \t \t \t \t \t \t \t \t /> \t \t \t \t \t MisterY 2010-02-02 07:35:36

+0

感謝,爲我節省了很多時間 – 2011-06-08 12:01:46

+1

要配置JAXWS綁定文件,請參閱以下鏈接:http ://metro.1045641.n5.nabble.com/Generated-Code-with-minOccurs-0-and-nillable-true-contains-JAXBElement-tp1063625p1063626.html – GWTNewbie 2014-08-22 13:00:28

0

我遇到了類似的問題。

我已經使用下面的綁定XML,而天花板wsimport:參考此link

綁定文件

<jaxb:bindings version="2.1" 
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" 
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" 
xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <jaxb:globalBindings generateElementProperty="false"/> 
</jaxb:bindings> 

樣品的wsimport命令:

wsimport -keep <WSDL_location> -b employerServiceWSD 
L_binding.xjb 

注: employerServiceWSDL_binding.xjb包含上述XML綁定條目。

希望它能適用於其他。