我對webservices有點新鮮。我正在使用Netbeans 7.0和Axis2。我有Java服務器端代碼和一個Java客戶端。爲了簡化這一點,我將使用一個非常簡單的例子。如何爲從Axis2 Webservice創建的客戶端對象定義toString()方法
我有一個WorkSite類,它有workSiteId,workSiteName和refCode字段,每個字段都有一個getter和setter。而在服務器端,類也有一個重載的toString()方法,它只返回workSiteName。因此,如果我要使用JComboBox創建GUI服務器端並開始向其添加WorkSite對象,則workSiteName將顯示在JComboBox中,用於顯示每個對象。
所以我基本上創建了一個像getWorkSiteList這樣的Web方法,它可以查詢數據庫,創建WorkSite對象並將它們添加到數組中,然後返回數組。除了在Netbeans中查看客戶端Jax-WS「生成源」時,我可以毫無問題地使用WorkSite對象,但getters和setter都在那裏,但toString()方法不在那裏。因此,當我將WorkSite對象從數組中取出並放入JComboBox時,組合框會顯示一些非常醜陋的內容,如每個項目的「examplepackagename.WorkSite.a6d35」,而不是很好,並顯示workSiteName。我想我真正的問題是,我在Netbeans客戶端有一個自動生成的WorkSite.java文件,它沒有我的toString()方法(這叫做骨架對吧?);有沒有辦法讓它包含在服務器端類中定義的toString()方法?如果沒有,編輯自動生成的類是否安全(再次,我認爲這被稱爲骨架,對嗎?),只需添加我的toString()方法?如果我在客戶端編輯自動生成的類,它是否會在重建時被覆蓋?
感謝您的幫助!我希望不要太長時間囉嗦;我只是不知道所有的術語還沒有以簡潔的方式解釋它。
好信息斯蒂芬C,感謝您的答覆。我查看了網絡上的所有內容,試圖找到更多信息,例如模板位於哪裏以及爲Java客戶端編輯哪個文件,並且沒有提供任何有用的信息。我也在我的開發箱的某個地方查找了這些模板,但空着。你有什麼想法? – Jim 2012-03-03 15:58:45
我認爲也許不太理想的做法可能是爲我的自動生成的客戶端類子類化,並在子類中定義toString()方法。然後,當我得到一個WorkSite對象數組時,我可以在其中定義toString()方法的地方創建SubWorkSite對象,將這些對象提供給JComboBox以顯示我想要的名稱,然後如果需要發送SubWorkSite對象回到服務器我可以將其轉換回自動生成的WorkSite類。你認爲這種方法有什麼問題嗎? (除了看起來不喜歡) – Jim 2012-03-03 16:04:00
是的,有一個問題。你如何說服客戶端代碼使用你的子類而不是生成的類來實現實例? – 2012-03-03 16:40:40