-
idea+maven+spring+cxf創建webservice應用:
- idea+maven+spring+cxf創建webservice應用:
創建maven+webapp工程:點擊Next

輸入相關信息:


2.創建的工程目錄如下:按照標准的webapp開發應用目錄少了一個java目錄

3.既然少了一個我們想辦法添加一個:添加java目錄如下
3.1.解決之前項目結構如上圖
3.2.選擇File->Project Structure...

3.3.選擇Modules選項卡下面的Sources項,在main文件夾上右鍵,選擇New Folder...並點擊OK

3.4.輸入要創建的文件夾名稱java,並點擊OK繼續

3.5.在創建好的java文件夾上右鍵選擇Sources項將該文件夾標記為源文件夾

3.6.我們發現java文件夾已經由黃色變成了藍色,我們點擊OK按鈕表示設置完成。

3.7.設置完成后的項目結構如下:

這正是我們標准Maven項目的結構,完美!至此我們就解決了Idea創建maven-archetype-webapp項目無java目錄的問題。
4.修改pom.xml配置添加依賴
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.xzh.gdsbcw-cxf</groupId>
<artifactId>gdsbcw-cxf</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>gdsbcw-cxf Maven Webapp</name>
<url>http://maven.apache.org</url>
<!-- ##########依賴屬性參數配置 start############### -->
<properties>
<junit.version>4.11</junit.version>
<cxf.version>2.2.3</cxf.version>
<spring.version>3.2.3.RELEASE</spring.version>
<slf4j.version>1.7.7</slf4j.version>
</properties>
<dependencies>
<!-- 單元測試依賴包 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
</dependency>
<!-- CXF Dependencies -->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>${cxf.version}</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>${cxf.version}</version>
</dependency>
<!-- Jetty is needed if you're are not using the CXFServlet -->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http-jetty</artifactId>
<version>${cxf.version}</version>
</dependency>
<!-- End of CXF Dependencies -->
<!-- Spring Dependencies ${spring.version} -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j.version}</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
</dependencies>
<!-- #####Project Build ###-->
<build>
<!-- ###########給出構建過程中所用到的插件start######## -->
<plugins>
<!-- 由於maven默認使用的jdk與工程配置的jdk版本不一致,導致無法編譯通過,通過該插件指定jdk版本 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<!-- maven-surefire-plugin 是maven里執行測試用例的插件,不顯示配置就會用默認配置。這個插件的 surefire:test 命令會默認綁定maven執行的 test 階段 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<!-- 跳過測試單元 true:跳過測試,false不跳過(默認)-->
<skip>true</skip>
</configuration>
</plugin>
</plugins>
<!-- ###########給出構建過程中所用到的插件end######## -->
</build>
</project>
5.編碼:編寫java代碼和相關配置文件
5.1:創建包:package:gdsbcw_cxf,並在gdsbcw_cxf下要發布的接口:BankTransaction.java
package gdsbcw_cxf;
import javax.jws.WebParam;
import javax.jws.WebService;
/**
* Created by xzh on 2017/8/21.
*/
@WebService(name="BankTransaction")//@WebService:將該接口發布成WebService服務器
public interface BankTransaction {
public String getAesSeed( @WebParam( name="sid") String sid);
public String synAesSeed( @WebParam( name="sid") String sid, @WebParam(name="seed") String seed);
public String requestBank(@WebParam( name="sid") String sid, @WebParam(name="xml") String xml);
}
5.2:創建實現BankTransaction的class:BankTransactionIMplementation.java
package gdsbcw_cxf;
/**
* Created by hengliu on 2017/8/21.
*/
import javax.jws.WebService;
@WebService(targetNamespace="http://gdsbcw_cxfxzh/")
public class BankTransactionIMplementation implements BankTransaction {
@Override
public String getAesSeed(String sid)
{
// TODO Auto-generated method stub
return null;
}
@Override
public String synAesSeed(String sid, String seed)
{
// TODO Auto-generated method stub
return null;
}
@Override
public String requestBank(String sid, String xml)
{
// TODO Auto-generated method stub
return null;
}
}
5.3:配置wsdl用來發布WebService:beanRefServer_gd.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jaxws="http://cxf.apache.org/jaxws"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">
<!-- Import Apache CXF Bean Definition -->
<import resource="classpath:META-INF/cxf/cxf.xml"/>
<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml"/>
<import resource="classpath:META-INF/cxf/cxf-servlet.xml"/>
<!-- SurveyService -->
<bean id="BankTransaction" class="gdsbcw_cxf.BankTransactionIMplementation"></bean>
<!-- Expose SurveyWebService http://localhost:8080/sbcw_cxf/web_bank_transaction?wsdl-->
<jaxws:server id="WebBankTransaction" serviceClass="gdsbcw_cxf.BankTransaction" address="/web_bank_transaction">
<jaxws:serviceBean>
<ref bean="BankTransaction"/> <!-- 要暴露的 bean 的引用 -->
</jaxws:serviceBean>
</jaxws:server>
</beans>
5.4:配置web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
<display-name>gdsbcw-cxf</display-name>
<!-- 在啟動Web項目時,容器(比如Tomcat)會讀web.xml配置 將參數名和參數值以鍵值對的形式加載到容器-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/classes/beanRefServer_gd.xml</param-value>
</context-param>
<!-- 容器創建<listener>中的類實例,創建監聽器。 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 用來聲明一個servlet,CXFServlet是 -->
<servlet>
<servlet-name>cxf</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>cxf</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<!-- 會話超時配置(單位為分鍾) -->
<session-config>
<session-timeout>60</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>
6.將工程打包成war包並發布到Tomcat服務器端
6.1:idea配置tomcat服務:select Run/Debug Configration下的Eedit Configurations



6.2:服務器運行應用工程:Rrn 'gdsbcw_cxf'(Shift+F10)

運行成功后在工程目錄下F:\ideaprojectsworkplace\gdsbc-wcxf\target會生成一個gdsbcw-cxf-1.0-SNAPSHOT.war包,將該包拷貝到Tomcat服務器安裝目錄下的 webapp目錄下(發布web應用:C:\Program Files\Tomcat 7.0\webapps)。
6.3::啟動Tomcat服務器:gdsbcw-cxf-1.0-SNAPSHOT.war在啟動服務器的時候回自動解壓

6.4:檢查webservice發布是否成功:在瀏覽器地址欄中輸入 http://localhost:8080/gdsbcw-cxf-1.0-SNAPSHOT/ ,出現如下結果說明發布成功。

點擊鏈接:{http://gdsbcw_cxf/}BankTransactionService 查看wsdl的內容
<?xml version="1.0" encoding="UTF-8"?> -<wsdl:definitions xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://gdsbcw_cxf/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:ns1="http://cxf.apache.org/bindings/xformat" targetNamespace="http://gdsbcw_cxf/" name="BankTransactionService"> -<wsdl:types> -<xs:schema xmlns:tns="http://gdsbcw_cxf/" targetNamespace="http://gdsbcw_cxf/" xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0" elementFormDefault="unqualified"> <xs:element name="getAesSeed" type="tns:getAesSeed"/> <xs:element name="getAesSeedResponse" type="tns:getAesSeedResponse"/> <xs:element name="requestBank" type="tns:requestBank"/> <xs:element name="requestBankResponse" type="tns:requestBankResponse"/> <xs:element name="synAesSeed" type="tns:synAesSeed"/> <xs:element name="synAesSeedResponse" type="tns:synAesSeedResponse"/> -<xs:complexType name="getAesSeed"> -<xs:sequence> <xs:element name="sid" type="xs:string" minOccurs="0"/> </xs:sequence> </xs:complexType> -<xs:complexType name="getAesSeedResponse"> -<xs:sequence> <xs:element name="return" type="xs:string" minOccurs="0"/> </xs:sequence> </xs:complexType> -<xs:complexType name="requestBank"> -<xs:sequence> <xs:element name="sid" type="xs:string" minOccurs="0"/> <xs:element name="xml" type="xs:string" minOccurs="0"/> </xs:sequence> </xs:complexType> -<xs:complexType name="requestBankResponse"> -<xs:sequence> <xs:element name="return" type="xs:string" minOccurs="0"/> </xs:sequence> </xs:complexType> -<xs:complexType name="synAesSeed"> -<xs:sequence> <xs:element name="sid" type="xs:string" minOccurs="0"/> <xs:element name="seed" type="xs:string" minOccurs="0"/> </xs:sequence> </xs:complexType> -<xs:complexType name="synAesSeedResponse"> -<xs:sequence> <xs:element name="return" type="xs:string" minOccurs="0"/> </xs:sequence> </xs:complexType> </xs:schema> </wsdl:types> -<wsdl:message name="requestBank"> <wsdl:part name="parameters" element="tns:requestBank"> </wsdl:part> </wsdl:message> -<wsdl:message name="requestBankResponse"> <wsdl:part name="parameters" element="tns:requestBankResponse"> </wsdl:part> </wsdl:message> -<wsdl:message name="synAesSeed"> <wsdl:part name="parameters" element="tns:synAesSeed"> </wsdl:part> </wsdl:message> -<wsdl:message name="getAesSeed"> <wsdl:part name="parameters" element="tns:getAesSeed"> </wsdl:part> </wsdl:message> -<wsdl:message name="getAesSeedResponse"> <wsdl:part name="parameters" element="tns:getAesSeedResponse"> </wsdl:part> </wsdl:message> -<wsdl:message name="synAesSeedResponse"> <wsdl:part name="parameters" element="tns:synAesSeedResponse"> </wsdl:part> </wsdl:message> -<wsdl:portType name="BankTransaction"> -<wsdl:operation name="getAesSeed"> <wsdl:input name="getAesSeed" message="tns:getAesSeed"> </wsdl:input> <wsdl:output name="getAesSeedResponse" message="tns:getAesSeedResponse"> </wsdl:output> </wsdl:operation> -<wsdl:operation name="requestBank"> <wsdl:input name="requestBank" message="tns:requestBank"> </wsdl:input> <wsdl:output name="requestBankResponse" message="tns:requestBankResponse"> </wsdl:output> </wsdl:operation> -<wsdl:operation name="synAesSeed"> <wsdl:input name="synAesSeed" message="tns:synAesSeed"> </wsdl:input> <wsdl:output name="synAesSeedResponse" message="tns:synAesSeedResponse"> </wsdl:output> </wsdl:operation> </wsdl:portType> -<wsdl:binding name="BankTransactionServiceSoapBinding" type="tns:BankTransaction"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/> -<wsdl:operation name="getAesSeed"> <soap:operation style="document" soapAction=""/> -<wsdl:input name="getAesSeed"> <soap:body use="literal"/> </wsdl:input> -<wsdl:output name="getAesSeedResponse"> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> -<wsdl:operation name="requestBank"> <soap:operation style="document" soapAction=""/> -<wsdl:input name="requestBank"> <soap:body use="literal"/> </wsdl:input> -<wsdl:output name="requestBankResponse"> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> -<wsdl:operation name="synAesSeed"> <soap:operation style="document" soapAction=""/> -<wsdl:input name="synAesSeed"> <soap:body use="literal"/> </wsdl:input> -<wsdl:output name="synAesSeedResponse"> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> </wsdl:binding> -<wsdl:service name="BankTransactionService"> -<wsdl:port name="BankTransactionPort" binding="tns:BankTransactionServiceSoapBinding"> <soap:address location="http://localhost:8080/gdsbcw-cxf-1.0-SNAPSHOT/web_bank_transaction"/> </wsdl:port> </wsdl:service> </wsdl:definitions>
7:配置客戶端進行測試:使用junit4進行測試,編寫測試代碼和測試相關的配置文件
7.1:本地測試,按照之前創建目錄的方式創建測試程序存放目錄和資源目錄:test/java和test/resources

7.2:編寫測試程序,在test相關目錄下創建gdsbcw_cxf包和class,創建測試基礎類BaseJunit4Test,作為測試的基類,子類繼承基類就會實現父類的注解。
package gdsbcw_cxf;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
/**
* Created by xzh on 2017/8/22.
*/
@RunWith(SpringJUnit4ClassRunner.class) //使用junit4進行測試
//@ContextConfiguration({"classpath:bean*.xml","spring*:bean*.xml"}) //加載配置文件 //加載配置文件
@ContextConfiguration({"classpath:bean*.xml"}) //加載配置文件
//------------如果加入以下代碼,所有繼承該類的測試類都會遵循該配置,也可以不加,在測試類的方法上///控制事務,參見下一個實例
//這個非常關鍵,如果不加入這個注解配置,事務控制就會完全失效!
//@Transactional
//這里的事務關聯到配置文件中的事務控制器(transactionManager = "transactionManager"),同時//指定自動回滾(defaultRollback = true)。這樣做操作的數據才不會污染數據庫!
//@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = true)
//------------
public class BaseJunit4Test {
}
7.3:編寫自己的測試類:TestBankTransaction,這樣就可以在測試類中添加單元測試方法,實現單元測試。
7.3-1:本地測試方法:TestBankTransactionLocal()
package gdsbcw_cxf;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import java.net.URL;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
/**
* Created by xzh on 2017/8/22.
*/
public class TestBankTransaction extends BaseJunit4Test{
//創建構造函數
public TestBankTransaction(){
}
@Test //測試方法一: 本地測試,服務器程序不需要發布到Tomcat服務器上,單純的本地調用
public void TestBankTransactionLocal(){
System.out.println("TestBankTransactionLocal........");
BankTransaction bankTransaction = new BankTransactionIMplementation();
String a = bankTransaction.getAesSeed("a-");
String b = bankTransaction.synAesSeed("b-", "-b");
String c = bankTransaction.requestBank("c-", "<--xml格式>");
System.out.println(a);
System.out.println(b);
System.out.println(c);
}
@Test //測試方法二遠程訪問,及將webservice應用程序發布到Tomcat服務器,客戶端訪問服務器接口程序
public void TestBankTransactionRemote(){
System.out.println("TestBankTransactionRemote........");
try{
ApplicationContext context = new ClassPathXmlApplicationContext("spring_cxf-client.xml");
BankTransaction bankTransaction = context.getBean("BankTransactionClient",BankTransaction.class);
String a = bankTransaction.getAesSeed("a-");
String b = bankTransaction.synAesSeed("b-", "-b");
String c = bankTransaction.requestBank("c-", "<--xml格式>");
System.out.println(a);
System.out.println(b);
System.out.println(c);
}catch(Exception e){
e.printStackTrace();
}
}
//測試方法三:用工具測試
@Test //測試方法四HttpURLConnection,模擬soap協議發送請求
/*任何網絡連接都需要經過socket才能連接,HttpURLConnection不需要設置socket,
所以,HttpURLConnection並不是底層的連接,而是在底層連接上的一個請求。
這就是為什么HttpURLConneciton只是一個抽象類,自身不能被實例化的原因。
HttpURLConnection只能通過URL.openConnection()方法創建具體的實例。
雖然底層的網絡連接可以被多個HttpURLConnection實例共享,但每一個HttpURLConnection實例只能發送一個請求。
請求結束之后,應該調用HttpURLConnection實例的InputStream或OutputStream的close()方法以釋放請求的網絡資源,
不過這種方式對於持久化連接沒用。對於持久化連接,得用disconnect()方法關閉底層連接的socket。*/
public void TestBankTransactionSoap(){
String fs="0"; //控制標志
String addr="http://192.168.4.77:8080/gdsbcw-cxf-1.0-SNAPSHOT/web_bank_transaction";//webservice服務地址
URL wsUrl = null;//URL對象
try{
wsUrl = new URL(addr);//創建URL
}catch(MalformedURLException e){
e.printStackTrace();
}
try{
HttpURLConnection conn = (HttpURLConnection) wsUrl.openConnection();
conn.setDoInput(true);//設置是否從httpUrlConnection讀入,默認情況下是true;
conn.setDoOutput(true);//http正文內,因此需要設為true,默認情況下是false;
conn.setRequestMethod("POST");//設定請求的方法為"POST",默認是GET
conn.setRequestProperty("Content-Type","text/xml;charset=UTF-8");//如果不設此項,在傳送序列化對象時,當WEB服務默認的不是這種類型時可能拋java.io.EOFException
OutputStream os = conn.getOutputStream();
String soap="";//請求體
if ( fs.equals("1") )
{
soap = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" "+
"xmlns:q0=\"http://websvc.cpab.psbc.com/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" "+
"xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n" +
" <soapenv:Body> \n"+
" <q0:sayHello>\n"+
" <userName>ftpuser</userName>\n"+
" <passWd>good</passWd>\n"+
" </q0:sayHello>\n"+
" </soapenv:Body>\n"+
"</soapenv:Envelope>";
}
else
{
soap="<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" "+
"xmlns:gds=\"http://gdsbcw_cxf/\"> \n"+
" <soapenv:Header/>\n"+
" <soapenv:Body>\n"+
" <gds:getAesSeed>\n"+
" <!--Optional:-->\n"+
" <sid>eHpo</sid>\n"+
" </gds:getAesSeed>\n"+
" </soapenv:Body>\n"+
"</soapenv:Envelope>";
}
System.out.println(soap);
os.write(soap.getBytes());
InputStream is = conn.getInputStream();
byte[] b = new byte[1024];
int len = 0;
String s = "";
while((len = is.read(b)) != -1)
{
String ss = new String(b,0,len,"UTF-8");
s += ss;
}
System.out.println("返回報:"+s);
is.close();
os.close();
conn.disconnect();
} catch(IOException e){
e.printStackTrace();
}
}
public static void main(String[] args){
}
}
7.3-2:遠程測試方法(前提條件是將應用部署到tomcat服務器上並啟動tomcat):TestBankTransactionRemote(),測試遠程測試時需要配置客戶端F:\ideaprojectsworkplace\gdsbc-wcxf\src\test\resources\spring_cxf-client.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:jaxws="http://cxf.apache.org/jaxws" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://cxf.apache.org/jaxws
http://cxf.apache.org/schemas/jaxws.xsd">
<import resource="classpath:META-INF/cxf/cxf.xml" />
<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
<!-- serviceClass:要訪問的接口,address:接口地址 -->
<!--
<jaxws:client id="BankTransactionClient" serviceClass="gdsbcw_cxf.BankTransaction"
address="http://localhost:8080/gdsbcw-cxf-01/web_bank_transaction" />
-->
<jaxws:client id="BankTransactionClient" serviceClass="gdsbcw_cxf.BankTransaction"
address="http://192.168.4.77:8080/gdsbcw-cxf-1.0-SNAPSHOT/web_bank_transaction" />
</beans>
說明:address="http://192.168.4.77:8080/gdsbcw-cxf-1.0-SNAPSHOT/web_bank_transaction"
http://192.168.4.77:8080/gdsbcw-cxf-1.0-SNAPSHOT:tomcat 應用
/*:此路徑在web.xml里面配置的,在gdsbcw-cxf-1.0-SNAPSHOT工程名后面可以配置mapping的地址,/*表示任意訪問
/web_bank_transaction:此路徑在服務端的beanRefServer_gd.xml里配置的。
7.3-3:通過soapUI工具測試(前提條件是將應用部署到tomcat服務器上並啟動tomcat):File->New soapUI Project(下載安裝就略)
命名工程名:gdsbcw-cxf(名字可以隨便取);
Initial WSDL/WADL:http://localhost:8080/gdsbcw-cxf-1.0-SNAPSHOT/web_bank_transaction?wsdl 或
Initial WSDL/WADL:http://192.168.4.77:8080/gdsbcw-cxf-1.0-SNAPSHOT/web_bank_transaction?wsdl
點擊OK導入wsdl如下:可以看到服務器提供的3個接口以及一個接口測試的結果。

7.3-4:測試方法四HttpURLConnection,模擬soap協議發送請求(前提條件是將應用部署到tomcat服務器上並啟動tomcat):運行結果如下
INFO - Refreshing org.springframework.context.support.GenericApplicationContext@2d3fcdbd: startup date [Wed Aug 23 10:54:00 CST 2017]; root of context hierarchy INFO - Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@76f2b07d: defining beans [org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,org.springframework.context.annotation.ConfigurationClassPostProcessor.importAwareProcessor]; root of factory hierarchy <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:gds="http://gdsbcw_cxf/"> <soapenv:Header/> <soapenv:Body> <gds:getAesSeed> <!--Optional:--> <sid>eHpo</sid> </gds:getAesSeed> </soapenv:Body> </soapenv:Envelope> 返回報<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns2:getAesSeedResponse xmlns:ns2="http://gdsbcw_cxf/"><return>eHpo</return></ns2:getAesSeedResponse></soap:Body></soap:Envelope> INFO - Closing org.springframework.context.support.GenericApplicationContext@2d3fcdbd: startup date [Wed Aug 23 10:54:00 CST 2017]; root of context hierarchy INFO - Destroying singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@76f2b07d: defining beans [org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,org.springframework.context.annotation.ConfigurationClassPostProcessor.importAwareProcessor]; root of factory hierarchy Process finished with exit code 0
