[英]Generate Java webservice based on ONVIF wsdl (Top Down Method)
我想為像Camera這樣的設備生成服務器代碼。 這些設備有一個名為ONVIF的標准協議,它發布了一些流行的WSDL文檔。 所以我必須從ONFIV的WSDL文檔生成一個接口和skelton。
當我使用wsdl2java從ONVIF wsdl文件生成服務器代碼時,它說:
org.apache.axis2.AxisFault: No services found in the WSDL at https://www.onvif.org/onvif/ver10/device/wsdl/devicemgmt.wsdl with targetnamespace http://www.onvif.org/ver10/device/wsdl
這些WSDL文件有問題嗎?
如何基於ONVIF WSDL生成服務器代碼?
我在從WSDL文件生成java類時遇到了同樣的問題,以便創建ONVIF Web服務器。 經過大量的調查,我發現WDSL文件中有一些錯誤,我從https://www.onvif.org獲得了這些錯誤。
如果要正確創建java類,則需要對它們進行一些更改。 首先,在每個.wsdl文件中檢查schemaLocation
的正確路徑,它可能需要更改為: schemaLocation="../../../ver10/schema/onvif.xsd"/>
並檢查所有.wsdl文件是否都有這樣的服務標簽。
<wsdl:service name="DeviceIOPService">
<wsdl:port name="DeviceIOPort" binding="tmd:DeviceIOBinding">
<soap:address location="http://www.onvif.org/ver10/deviceIO/wsdl"/>
</wsdl:port>
</wsdl:service>
如果他們沒有,為他們創建,然后運行生成命令。 如果您需要更多信息,請通知我。
如果您按照為wsdl2java指定的鏈接https://www.onvif.org/onvif/ver10/device/wsdl/devicemgmt.wsdl進行操作,則會點擊HTML頁面,但您沒有獲得WSDL文件。 請參見下面的截圖:
HTML文檔實際上是一個有效的WSDL,即完整的xml文檔,但它使用XSLT將XML轉換為HTML以供顯示,這為wsdl @ java帶來了一些問題。
如果您查看網頁源並刪除XSLT鏈接代碼:
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../../../ver20/util/onvif-wsdl-viewer.xsl"?>
變為:
<?xml version="1.0" encoding="utf-8"?>
然后,您可以將WSDL加載到WSDL編輯器中,並查看操作,請參見下面的屏幕截圖:
為了實現這一點,我將聯系Onvif組並詢問它們的WSDL位置,因為WSDL包含您需要的XSD文件的鏈接。 當前位置不能按原樣使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.