日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

orcad自上而下_开发自上而下的Web服务项目

發布時間:2023/12/3 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 orcad自上而下_开发自上而下的Web服务项目 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

orcad自上而下

這是從Alessio Soldano編輯的Advanced JAX-WS Web Services手冊中摘錄的示例章節。

第一章介紹了自底向上創建Web服務端點的方法。 它允許非常快地將現有bean作為Web Service端點公開:在大多數情況下,將類轉換為端點只需在代碼中添加少量注釋即可。

但是,在使用已定義的合同開發服務時,使用自頂向下方法要簡單得多(有效),因為wsdl-to-java工具可以生成與WSDL匹配的帶注釋的代碼。 這是在多種情況下(例如以下情況)的首選解決方案:

  • 創建一個服務,該服務遵循預先開發的XML Schema和WSDL;
  • 公開符合第三方規定的合同的服務(例如,使用已定義的一組消息調用該服務的供應商);
  • 在保持與較舊客戶端的兼容性的同時,替換現有Web Service的實現(不得更改合同)。

在下一部分中,將提供一個自上而下的 Web Service端點開發示例,以及一些有關開發人員在進行編碼時必須意識到的約束的詳細信息,無論選擇哪種方法。

使用自上而下的方法創建Web服務

為了建立一個包括Web服務端點和JAX-WS客戶端的完整項目,我們將使用兩個Maven項目。 第一個將是一個標準的webapp-javaee7項目,其中將包含Web服務端點。 第二個只是一個快速啟動的Maven項目,它將對Web Service執行一個測試用例。

讓我們像往常一樣開始創建服務器項目:

mvn -DarchetypeGroupId=org.codehaus.mojo.archetypes -DarchetypeArtifactId=webapp-javaee7 -DarchetypeVersion=0.4-SNAPSHOT -DarchetypeRepository=https://nexus.codehaus.org/content/repositories/snapshots -DgroupId=com.itbuzzpress.chapter2.wsdemo -DartifactId=ws-demo2 -Dversion=1.0 -Dpackage=com.itbuzzpress.chapter2.wsdemo -Darchetype.interactive=false --batch-mode --update-snapshots archetype:generate

下一步將是根據WSDL合同創建Web服務接口和存根。 步驟與為同一合同建立客戶的步驟相似。 唯一的區別是wsconsume腳本會將生成的源文件輸出到我們的Maven項目中:

$ wsconsume.bat -k CustomerService.wsdl -o ws-demo-wsdl\src\main\java

除了本章開頭已經討論過的生成的類之外,我們還需要提供一個包含Web服務功能的服務端點實現

@WebService(endpointInterface="org.jboss.test.ws.jaxws.samples.webresult.Customer") public class CustomerImpl implements Customer {public CustomerRecord locateCustomer(String firstName, String lastName, USAddress address) {CustomerRecord cr = new CustomerRecord();cr.setFirstName(firstName);cr.setLastName(lastName);return cr;} }

端點實現類實現端點接口,并通過@WebService批注引用它。 我們的WebService類什么也沒做,只是使用接收到的參數作為輸入創建一個CustomerRecord對象。 在一個真實的示例中,您將使用例如持久層來收集CustomerRecord。

一旦將實現類包含在項目中,則需要將項目打包并部署到目標容器,這將使用與該工具使用的相同的合約公開服務端點。

還可以在服務接口的@WebService wsdlLocation屬性中引用本地WSDL文件,并將該文件包含在部署中。 這樣可以準確地提供所提供的文檔。

如果要將Web服務部署到WildFly應用程序服務器,則可以從管理控制臺(如管理控制臺)中檢查端點現在是否可用。 選擇“上層運行時”選項卡,然后單擊“子系統左側”選項中包含的“ Web服務”鏈接:

JAX-WS端點的需求

無論選擇哪種方法來開發JAX-WS端點,實際的實現都需要滿足一些要求:

  • 必須使用j avax.jws.WebService或javax.jws.WebServiceProvider批注對實現類進行批注。
  • 實現類可以通過@WebService批注的endpointInterface元素顯式引用服務終結點接口,但并非必須如此。 如果@WebService中沒有指定endpointInterface,服務端點接口被隱含的實現類定義。
  • 實現類的業務方法必須是公共的,并且不能聲明為靜態或最終的。
  • javax.jws.WebMethod批注將在要向Web服務客戶端公開的業務方法上使用; 如果沒有使用@WebMethod注釋任何方法,則將公開所有業務方法。
  • 向Web服務客戶端公開的業務方法必須具有與JAXB兼容的參數和返回類型。
  • 實現類不能聲明為final,并且不能抽象。
  • 實現類必須具有默認的公共構造函數,并且不能定義finalize方法。
  • 實現類可以在其方法中將javax.annotation.PostConstruct或javax.annotation.PreDestroy注釋用于生命周期事件回調。

構建和運行JAX-WS客戶端的要求

JAX-WS客戶端可以是任何Java項目的一部分,并且不需要明確要求它是部署在JavaEE容器上的JAR / WAR歸檔的一部分。 例如,客戶端可以簡單地包含在快速入門Maven項目中,如下所示:

mvn archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-quickstart -DgroupId=com.itbuzzpress.chapter2.wsdemo -DartifactId=client-demo-wsdl -Dversion=1.0 -Dpackage=com.itbuzzpress.chapter2.wsdemo -Dversion=1.0 -Darchetype.interactive=false --batch-mode

由于您的客戶端需要引用端點接口和存根,因此需要提供它們或者從服務器項目復制它們,或者使用wsconsume再次生成它們:

$ wsconsume.bat -k CustomerService.wsdl -o client-demo-wsdl\src\main\java

現在包括一個最小的Client Test應用程序,它是JUnit測試用例的一部分:

public class AppTest extends TestCase {public void testApp() {CustomerService service = new CustomerService();Customer port = service.getCustomerPort();CustomerRecord record = port.locateCustomer("John", "Li", new USAddress()); System.out.println("Customer record is " +record);assertNotNull(record);} }

編譯并運行測試

為了成功運行WS客戶端應用程序,需要正確設置類加載器以包括所需的JAX-WS實現庫(以及所需的傳遞依賴項(如果有))。 根據客戶端要在其中運行的環境,這可能意味著向類路徑中添加了一些jar,或者向Maven依賴關系樹中添加了一些工件依賴關系,正確設置了IDE等。

由于Maven用于構建包含客戶端的應用程序,因此您可以按以下方式配置pom.xml ,使其包含對JBossWS的依賴關系:

<dependency><groupId>org.jboss.ws.cxf</groupId> <artifactId>jbossws-cxf-client</artifactId> <version>4.2.3.Final</version><scope>provided</scope> </dependency>

現在,您可以執行測試用例,該用例將調用JAX-WS API以使用JBossWS服務客戶端調用。

mvn clean package test

專注于客戶端使用的JAX-WS實現

通過在應用程序類加載器中查找META-INF / services / javax.xml.ws.spi.Provider資源,可以在運行時選擇要用于運行JAX-WS客戶端的JAX-WS實現。 每個JAX-WS實現都有一個包含該資源文件的庫(jar),該資源文件在內部引用實現JAX-WS SPI提供程序的適當類。

在WildFly 8.0.0.Final應用程序服務器上,JAX-WS實現包含在文件jbossws-cxf-factories-4.2.3.Final的META-INF / services / javax.xml.ws.spi.Provider中:

org.jboss.wsf.stack.cxf.client.ProviderImpl

因此,控制構建應用程序類加載器的類路徑中包含哪些工件或jar庫非常重要。 如果找到多個實現,則順序很重要,因此將使用類路徑中的第一個實現。

避免任何類路徑問題(從而加載另一個JAX-WS實現)的最安全方法是將java.endorsed.dirs系統屬性設置為包含jbossws-cxf-factories.jar; 如果不這樣做,請確保沒有在類路徑之前包含其他META-INF / services / javax.xml.ws.spi.Provider資源,這將觸發另一個JAX-WS實現。

最后,如果JAX-WS客戶端打算作為JavaEE應用程序的一部分在WildFly上運行,則JBossWS JAX-WS實現將自動選擇為客戶端提供服務。

該摘錄摘自“ Advanced JAX-WS Web Services ”一書,在該書中,您將學習基于SOAP的Web服務體系結構的概念,并獲得有關在企業中構建和部署Web服務的實用建議。

本書從建立開發環境的基礎知識和最佳實踐入手,以清晰簡潔的方式介紹了JAX-WS的內部細節。

您還將了解可用于創建,編譯和測試SOAP Web服務的主要工具包,以及如何解決常見的問題,例如調試數據和保護其內容。

您將從這本書中學到什么:

  • 使用SOAP Web服務邁出第一步。 安裝開發和測試應用程序所需的工具。
  • 使用自上而下和自下而上的方法開發Web服務。
  • 使用Maven原型來加速Web服務的創建。
  • 深入探討JAX-WS類型的細節:Java到XML的映射以及XML到Java的映射
  • 在WildFly 8和Tomcat上開發SOAP Web服務。 在WildFly上運行本機Apache CXF。
  • 保護Web服務。 將身份驗證策略應用于您的服務。 加密通信。

翻譯自: https://www.javacodegeeks.com/2014/09/developing-a-top-down-web-service-project.html

orcad自上而下

總結

以上是生活随笔為你收集整理的orcad自上而下_开发自上而下的Web服务项目的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。