2012-09-16 35 views
7

我使用自底向上方法在RSA 7.5和Websphere 7中使用JAX-WS創建了一個Web服務。當我在SOAP UI打開WSDL,則參數部分出現這樣的:在JAX-WS中重命名參數名稱

<!--Optional--> 
<arg0> 
    <empID>?</empId> 
</arg0> 
<!--Optional--> 
<arg1> 
    <empName>?</empName> 
</arg1> 
<!--Optional--> 
<arg2> 
    <empAddress>?</empAddress> 
</arg2> 
<!--Optional--> 
<arg3> 
    <empCountry>?</empCountry> 
</arg3> 

服務方法採用上述4個元件作爲參數,返回員工詳細信息。

1)我想用一些有效的名字來重命名這個arg0,arg1等等。

2)我想刪除存在於arg標籤上方的<!--optional-->。 (爲了從元素名稱中刪除<!--optional-->,我使用了@XMLElement(required = true))。但我不知道哪兒來在這種情況下:(使用此批註

請幫助。

問候,

回答

12

你把@XmlElement(必需=真)的變量上面的類我們剛剛在一個月前就知道了這個選項,所以在上面聲明empName的地方放了標籤和必需的

要重命名服務的參數,請使用@WebParam(name =「 「)在服務的每個輸入變量前面。

例如,如果您有名爲get(字符串名稱)服務的方法,將看起來像GET(@WebParam(名稱=「名稱」)字符串名)


你是正確的,現在,我再次閱讀您的評論。我支持的服務在輸入和輸出中使用對象,這就是爲什麼我將XMLElement標籤放入這些對象的類中的原因。

您需要將該標記放入聲明傳入或返回到服務的變量的類中。如果那些碰巧在你的服務類中聲明的很好。重點是你把XMLElement標籤放在變量聲明的上面,而不是放在getter或setter上。

本教程顯示了一些使用示例。 JAXB tutorial

+0

如果我把'@XMLElement(required = true)'放在EmpName成員變量的上面,那麼它會刪除'<1 - Optional - >'在標籤之上嗎?我認爲它不會工作,我必須把它放在服務類本身的某個地方,因爲arg0是在服務本身中傳遞的。你試過這個嗎?我沒有可用的DEV系統,否則我可能會試一試。但我認爲這樣做會從empName中刪除'<! - Optional - >',但不會從'' – user182944

+1

你必須在你的數據中的每個變量上面放置required = true標籤,所以你的情況都是4。我確實支持服務,並且它總是讓我在SoapUI中煩惱,因爲我們在所有變量上都有這些標籤。我剛剛在一個月前發現使用XMLElement標籤會從SoapUi生成的東西中刪除可選標籤。 – Logan

+0

感謝您的所有信息。我嘗試了你的建議,其中大部分工作:)你能告訴我一些事情:1)當我運行WSDL中的URL來檢查服務是否啓動,然後我收到一條消息:'你好!這是一個Axis2 Web服務!'我的問題是爲什麼它顯示Axis2? JAX-WS與Axis2有任何關係嗎? 2)今天我爲我的web服務實現了SOAPHandler。我使用了註解'@handlerchain(file =「filepath」)'並將文件放在WebContent文件夾中。它給我一個例外。但將其置於服務包下運行良好。爲什麼? – user182944