Atitit java webservice客戶端v2 目錄 1.1. 生成stub程式碼wsimport.exe 1 1.2. Wsimport 2 1.3. clienttest 3 1.1
Atitit java webservice客戶端v2
目錄
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
在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
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