1. 程式人生 > >使用Spring呼叫SOAP Web Service

使用Spring呼叫SOAP Web Service

你也可以直接參閱該指南匯入程式碼,或通過Spring工具集(Spring Tool Suite,簡稱STS)通過網頁瀏覽程式碼,從而幫助你學習該章節內容。原始碼下載地址:https://github.com/spring-guides/gs-consuming-web-service.git。 如何完成該指南 如同大多數的示例教程一樣,你可以從頭開始並完成每個步驟,或者你也可以跳過已經熟悉的基礎章節。無論怎樣,最終你要得到可以工作的程式碼。 想從頭開始,請移動到使用Gradle構建章節。 想跳過基礎部分,請做以下事情: 下載並解壓該向導的原始碼,或者使用Git複製一份: git clone https://github.com/spring-guides/gs-consuming-web-service.git
切換到gs-consuming-web-service/initial 跳到基於WSDL生成領域物件章節。 當完成後,你可以使用gs-consuming-web-service/complete目錄中的程式碼檢查你的結果。 使用Gradle構建 首先你要設定一個基本的build指令碼。當構建Spring應用程式時,你可以使用任何構建系統,但是這裡只包括了使用Maven和Gradle的程式碼。如果你兩者都不熟悉,請訪問使用Gradle構建Java專案或使用Maven構建Java專案。 建立目錄結構 在你選擇的存放專案的目錄中,建立如下的子目錄結構。例如,在*nix系統中使用mkdir -p src/main/java/hello。
1 2 3 4 └── src     └── main         └── java             └── hello 建立Gradle 構建檔案 下面是一個初始的Gradle build檔案。 build.gradle configurations {     jaxb } buildscript {     repositories {         maven { url "http://repo.spring.io/libs-release" }         mavenLocal()         mavenCentral()     }     dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:1.1.6.RELEASE")     } } apply plugin: 'java' apply plugin: 'eclipse' apply plugin: 'idea' apply plugin: 'spring-boot' repositories {     mavenLocal()     mavenCentral()     maven { url 'http://repo.spring.io/libs-release' } } // tag::wsdl[] task genJaxb {     ext.sourcesDir = "${buildDir}/generated-sources/jaxb"     ext.classesDir = "${buildDir}/classes/jaxb"     ext.schema = "http://wsf.cdyne.com/WeatherWS/Weather.asmx?wsdl"     outputs.dir classesDir     doLast() {         project.ant {             taskdef name: "xjc", classname: "com.sun.tools.xjc.XJCTask",                     classpath: configurations.jaxb.asPath             mkdir(dir: sourcesDir)             mkdir(dir: classesDir)             xjc(destdir: sourcesDir, schema: schema,                     package: "hello.wsdl") {                 arg(value: "-wsdl")                 produces(dir: sourcesDir, includes: "**/*.java")             }             javac(destdir: classesDir, source: 1.6, target: 1.6, debug: true,                     debugLevel: "lines,vars,source",                     classpath: configurations.jaxb.asPath) {                 src(path: sourcesDir)                 include(name: "**/*.java")                 include(name: "*.java")             }             copy(todir: classesDir) {                 fileset(dir: sourcesDir, erroronmissingdir: false) {                     exclude(name: "**/*.java")                 }             }         }     } } // end::wsdl[] dependencies {     compile("org.springframework.boot:spring-boot-starter")     compile("org.springframework.ws:spring-ws-core")     compile(files(genJaxb.classesDir).builtBy(genJaxb))     jaxb "com.sun.xml.bind:jaxb-xjc:2.1.7" } jar {     from genJaxb.classesDir } task wrapper(type: Wrapper) {     gradleVersion = '1.11' } task afterEclipseImport {     dependsOn genJaxb } Spring Boot gradle外掛提供了很多便利的特性: 將classpath中的所有jar包構建單個可執行的jar包,從而更容易執行和傳播服務。 搜尋public static void main()方法並標記為可執行的類。 提供了一個內建的依賴管理器,設定依賴版本以匹配Spring Boot依賴。你可以覆蓋為任何你希望的版本,但預設會使用Boot選擇的版本。 使用Maven構建 首先你需要設定一個基本的構建指令碼。你可以使用任何構建系統來構建Spring應用程式,但這裡包含了Maven的程式碼。如果你對Maven不熟,請訪問使用Maven構建Java專案。 建立目錄結構 在你選擇的存放專案的目錄中,建立如下的子目錄結構。例如,在*nix系統中使用mkdir -p src/main/java/hello。 1 2 3 4 └── src     └── main         └── java             └── hello pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">     <modelVersion>4.0.0</modelVersion>     <groupId>org.springframework</groupId>     <artifactId>gs-consuming-web-service</artifactId>     <version>0.1.0</version>     <parent>         <groupId>org.springframework.boot</groupId>         <artifactId>spring-boot-starter-parent</artifactId>         <version>1.1.6.RELEASE</version>     </parent>     <properties>         <!-- use UTF-8 for everything -->         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>     </properties>     <dependencies>         <dependency>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-starter</artifactId>         </dependency>         <dependency>             <groupId>org.springframework.ws</groupId>             <artifactId>spring-ws-core</artifactId>         </dependency>     </dependencies>     <build>         <plugins>             <plugin>                 <artifactId>maven-compiler-plugin</artifactId>                 <version>2.3.2</version>             </plugin>             <plugin>                 <groupId>org.springframework.boot</groupId>                 <artifactId>spring-boot-maven-plugin</artifactId>             </plugin>             <!-- tag::wsdl[] -->             <plugin>                 <groupId>org.jvnet.jaxb2.maven2</groupId>                 <artifactId>maven-jaxb2-plugin</artifactId>                 <executions>                     <execution>                         <goals>                             <goal>generate</goal>                         </goals>                     </execution>                 </executions>                 <configuration>                     <schemaLanguage>WSDL</schemaLanguage>                     <generatePackage>hello.wsdl</generatePackage>                     <forceRegenerate>true</forceRegenerate>                     <schemas>                         <schema>                             <url>http://wsf.cdyne.com/WeatherWS/Weather.asmx?wsdl</url>                         </schema>                     </schemas>                 </configuration>             </plugin>             <!-- end::wsdl[] -->         </plugins>     </build>     <repositories>         <repository>             <id>spring-releases</id>             <name>Spring Releases</name>             <url>http://repo.spring.io/libs-release</url>         </repository>     </repositories>     <pluginRepositories>         <pluginRepository>             <id>spring-releases</id>             <url>http://repo.spring.io/libs-release</url>         </pluginRepository>     </pluginRepositories> </project> 注意:你可能注意到我們指定了maven-complier-plugin的版本。通常並不推薦這樣做。這裡主要是為了解決我們的CI系統預設執行在該外掛的早期版本(java5之前)的一個問題。 Spring Boot Maven外掛提供了很多便利的特性: 將classpath中的所有jar包構建單個可執行的jar包,從而更容易執行和傳播服務。