我在某處讀到它是不允許的,現在很難找到為什么?
我們有兩個不同的耳朵專案,比如 A 和 B。對于一個 web 服務,使用 Apache Axis wsdl2java 生成的代碼,客戶端(存根/模型)類在專案 A 中,服務實作在專案 B 中。
我不得不重組專案 A 以擁有一個包含許多包/類的新(maven)模塊,這將創建一個供專案 B 使用的庫。現在,由于代碼依賴項太多,我無法獲取 web 服務客戶端代碼專案 A 中的此模塊/庫(將它們放在專案 A 中的其他位置)。
假設webservice(生成的代碼)在包abc中生成的代碼中,客戶端存根和實作類都在這個包abc中現在(webservice)實作屬于專案B。因為我必須將客戶端類包含在專案A的庫,并且有專案B中的服務類,那么我會出現以下情況
庫被拉入專案 B(來自專案 A):abc/client-classes
專案 B 本身 abc/實作類
這個可以嗎?有兩次相同的包,但有不同的類集。
如果我們不能有這種情況,那么我們是否可以在兩個單獨的包(如 abcclient 和 abcservice)中生成或擁有 webservice 客戶端和服務類?
uj5u.com熱心網友回復:
通過這種方法,我繼續使用它并解決了我的情況。
這是 JAXWS webservice & JDK 8 & JBoss 部署(普通舊技術和非 Spring 環境)。
我使用了自下而上的 Web 服務開發方法(首先是 Java 類 - 沒有手寫 WSDL)。在服務端應用程式中,我撰寫了介面和實作類,并使用了最少的注解,如@WebService 和@WebMethod。我開發了幾個(簡單)模型類,用于服務方法的引數和結果,但我沒有在其中添加任何注釋。
然后啟動應用程式服務器使 web 服務栩栩如生(在某個“URL”處)。
使用 WSDL 的 URL (url?wsdl),我使用 wsimport 工具生成客戶端代碼。注意:我使用 -p 選項為客戶端代碼提供不同的包。然后將客戶端代碼集成到其他應用程式中。一切都很好。
這種客戶端和服務代碼位于不同(Java)包中的情況,即使使用自上而下(WSDL 優先)方法也是可能的,但我無法讓它作業。可能需要對 WSDL 進行一些仔細的手工接線并適當地注釋類。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/453723.html