簡體   English   中英

基於ONVIF wsdl生成Java Web服務(自頂向下方法)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM