2012-10-15 57 views
3

我有一類@XmlTransient在生成WSDL忽略 - Axis2的WS

public class Calculator { 
    public Test getTest(){ 
     return new Test(); 
    } 
} 

,我要公開爲Web服務。測試定義是:

public class Test { 
    private Test2[] tests; 
    @XmlTransient 
    public Test2[] getTests() { 
     return tests; 
    } 
    public void setTests(Test2[] tests) { 
     this.tests = tests; 
    } 
} 

現在,在加入Test2的[]測試@XmlTransient註釋,我希望它不要在生成的WSDL(我使用Eclipse上市,在計算器等等右鍵點擊> Web服務>生成Web服務),但我不正確的:

... 
<wsdl:types> 
<xs:schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="..."> 
<xs:complexType name="Test"> 
<xs:sequence> 
<xs:element maxOccurs="unbounded" minOccurs="0" name="tests" nillable="true" type="ax21:Test2"/> 
</xs:sequence> 
</xs:complexType> 
<xs:complexType name="Test2"> 
<xs:sequence/> 
</xs:complexType> 
</xs:schema> 
... 
</wsdl:types> 
... 

正如你所看到的,測試仍然存在於WSDL(第5行)。 如果有用,我使用的是Axis2,Eclipse Indigo。

回答

1

這仍然是一個問題,但我找到了解決方法。我加入到我的services.xml:

<parameter name="beanPropertyRules"> 
     <bean class="package.Test" excludeProperties="tests" /> 
    </parameter> 

即:

<bean class="package.Object" excludeProperties="propertyToExcludeFromWSDL" /> 

這個工作。