1. 程式人生 > >Atitit java webservice客戶端v2 目錄 1.1. 生成stub程式碼wsimport.exe 1 1.2. Wsimport 2 1.3. clienttest 3 1.1

Atitit java webservice客戶端v2 目錄 1.1. 生成stub程式碼wsimport.exe 1 1.2. Wsimport 2 1.3. clienttest 3 1.1

Atitit java webservice客戶端v2

 

目錄

1.1. 生成stub程式碼wsimport.exe 1

1.2. Wsimport 2

1.3. clienttest 3

 

 

    1. 生成stub程式碼wsimport.exe

D:\jdk1.8.0_31\bin\wsimport.exe -d d:\wsdist  -s  d:\wssrc  -p  com.wspkg http://localhost:8888/service-ws/wsTest?wsdl

 

 

C:\Users\Administrator>D:\jdk1.8.0_31\bin\wsimport.exe

缺少 WSDL_URI

 

 

用法: wsimport [options] <WSDL_URI>

 

\其中 [options] 包括:

  -b <path>                 指定 jaxws/jaxb 繫結檔案或附加模式

                            (每個 <path> 都必須具有自己的 -b)

  -B<jaxbOption>            將此選項傳遞給 JAXB 模式編譯器

  -catalog <file>           指定用於解析外部實體引用的目錄檔案

                            支援 TR9401, XCatalog 和 OASIS XML 目錄格式。

  -d <directory>            指定放置生成的輸出檔案的位置

  -encoding <encoding>      指定原始檔所使用的字元編碼

  -extension                允許供應商擴充套件 - 不按規範

                            指定功能。使用擴充套件可能會

                            導致應用程式不可移植或

                            無法與其他實現進行互操作

  -help                     顯示幫助

  -httpproxy:<host>:<port>  指定 HTTP 代理伺服器 (埠預設為 8080)

  -keep                     保留生成的檔案

  -p <pkg>                  指定目標程式包

  -quiet                    隱藏 wsimport 輸出

  -s <directory>            指定放置生成的原始檔的位置

  -target <version>         按給定的 JAXWS 規範版本生成程式碼

                            預設為 2.2, 接受的值為 2.0, 2.1 和 2.2

                            例如, 2.0 將為 JAXWS 2.0 規範生成相容的程式碼

  -verbose                  有關編譯器在執行什麼操作的輸出訊息

  -version                  輸出版本資訊

  -wsdllocation <location>  @WebServiceClient.wsdlLocation 值

  -clientjar <jarfile>      建立生成的 Artifact 的 jar 檔案以及

                            呼叫 Web 服務所需的 WSDL 元資料。

  -generateJWS              生成存根 JWS 實現檔案

  -implDestDir <directory>  指定生成 JWS 實現檔案的位置

  -implServiceName <name>   生成的 JWS 實現的服務名的本地部分

  -implPortName <name>      生成的 JWS 實現的埠名的本地部分

 

\擴充套件:

  -XadditionalHeaders              對映標頭不繫結到請求或響應訊息不繫結到

                                   Java 方法引數

  -Xauthfile                       用於傳送以下格式的授權資訊的檔案:

                                   http://username:[email protected]/stock?wsdl

  -Xdebug                          輸出除錯資訊

  -Xno-addressing-databinding      允許 W3C EndpointReferenceType 到 Java 的繫結

  -Xnocompile                      不編譯生成的 Java 檔案

  -XdisableAuthenticator           禁用由 JAX-WS RI 使用的驗證程式,

                                   將忽略 -Xauthfile 選項 (如果設定)

  -XdisableSSLHostnameVerification 在提取 wsdl 時禁用 SSL 主機名

                                   驗證

 

\示例:

  wsimport stock.wsdl -b stock.xml -b stock.xjb

  wsimport -d generated http://example.org/stock?wsdl

 

 

    1. Wsimport

在jdk的bin目錄下有一個wsimport.exe的工具,使用該工具可以根據wsdl地址生成java的客戶端程式碼。 常用命令如下: wsimport -keep -d d:\ -s d:\src -p com...

 

 

用JAVA呼叫Web service的時候必須要有一個WSDL的URL,也就是http://服務//?WSDL,
但是現在給的裝置是基於ONVIF規範的,例如IPC,不能通過http://服務//?WSDL獲取其WSDL,
那我怎麼用JAVA呼叫其Web service呢?

 

wsimport  -keep -d d:\ -s d:\src -p com.map -verbose d:\wsdl\devicemgmt.wsdl

首先要在wsdl檔案中新增一下節點:(否則會報它在wsdl中找不到service)

<wsdl:service name="DeviceService">  
<wsdl:port name="DevicePort" binding="tds:DeviceBinding">  
<soap:address location="http://172.16.2.32/onvif/device_service"/>  
</wsdl:port>  
</wsdl:service>

提示【warning】Ignoring SOAP port "DevicePort": it uses non-standard SOAP 1.2 binding.

 

這個時候生成的Java程式碼中就沒有Device.class和DeviceService.class這兩個東西。

其實加上-extension這個引數就OK了,

http://www.onvif.org/Documents/Specifications.aspx 下載wsdl

 

    1. clienttest

package webserviceS0;

 

import com.wspkg.WsInterfaceImpl;

import com.wspkg.WsInterfaceImplService;

 

public class ClientTest {

public static void main(String[] args) {

WsInterfaceImpl ws = new WsInterfaceImplService().getWsInterfaceImplPort();

String name = ws.methodStrBool("mystr", 1, true);

System.out.println(name);

}

}

 基於java jdk1.8 編寫的webservice - xcc_2269861428的部落格 - CSDN部落格.html