簡體   English   中英

Webservice客戶端找不到wsdl

[英]Webservice client cannot find wsdl

我在 NetBeans 7.1 中創建了兩個 web 服務客戶端,模仿他們網站上的教程。

不久前,我針對位於 http 位置的 wsdl 文件完成了第一個,並且使用 web 服務沒有問題

我目前正在使用的網絡服務有一個位於 https 位置的 wsdl 文件。 該服務的設置順利進行。 與第一個的唯一區別是彈出窗口提醒我注意安全證書,我接受了該證書。 Service、Generated Sources、META-INF 等都創建成功。 wsdl 文件的本地副本存儲在我的電腦上的 src/.. 文件夾下。

但是,一旦我去運行我的代碼,我就會收到這個錯誤:

找不到“ https://-domain-.net/-XYZServices-/-ABCXML?wsdl-”wsdl 將資源正確放置在類路徑中。

我在 Stackoverflow 和其他在線地方發現了幾個類似的問題,但沒有真正解決我的問題。 無論如何,我嘗試了幾個建議:

我檢查了 jax-ws-catalog.xml 文件,發現上面引用的 url 映射到存儲 wsdl 本地副本的本地文件夾。 我檢查了該本地文件夾是否實際上包含 wsdl 文件 - 它確實包含。 我嘗試編輯 jax-ws-catalog.xml 文件中的 url 以指向端口 8080 和 8081 - 不高興。

我想這是一個安全問題,但不知道如何解決這個問題。

誰能在這里指出我正確的方向。

僅供參考:我對 java 和 NetBeans 還很陌生。

謝謝。

避免錯誤“找不到 wsdl。將資源正確放置在類路徑中”的最佳方法。 就是使用wsdllocation來指定wsdl的位置,同時也將wsdl打包成jar的一部分。

當您指定 wsdllocation 時,請確保將“/”添加到位置的開頭。

wsimport  -keep -Xnocompile  -wsdllocation /schema/10.0/MyService.wsdl  schema/10.0/MyService.wsdl

不確定這是否有幫助,但是...

這里

在客戶端使用啟用 SSL 的 Web 服務: - 在 WSDL 和客戶端位置下的新建 Web 服務客戶端向導中,通過以 https://:8181// 的形式設置 WSDL URL 來指定 Web 服務的 WSDL 文件 - 然后對單擊創建的 Web 服務並選擇編輯 Web 服務屬性並在 Wsimport 選項下將 wsdlLocation 選項更正為以下形式:/META-INF/wsdl/_8181//.wsdl

每當您刷新 Web 服務時,都會從已部署的應用程序加載新的 wsdl 文件,並且 wsdl 文件會作為由正確路徑定義的資源(提到的 wsdlLocation 選項值)加載。

只需將您的 WSDL 文件放入您的類路徑等 src/main/resources/MyWsdl.xml 並使用它來獲取它:

URL url = new URL(baseUrl, "classpath:MyWsdl.xml");

也不要忘記在擴展 javax.xml.ws.Service 的服務類上添加它:

@WebServiceClient(name = "MyService", targetNamespace = "http://example.org/", wsdlLocation = "classpath:MyWsdl.xml")

確保您已配置 Web 服務。 一種方法是實現一個擴展javax.ws.rs.core.Application的類。 也就是說,添加一個類似於以下的類:

import java.util.Set;
import javax.ws.rs.core.Application;


@javax.ws.rs.ApplicationPath("rest")
public class ApplicationConfig extends Application {

    @Override
    public Set<Class<?>> getClasses() {
        Set<Class<?>> resources = new java.util.HashSet<Class<?>>();
        addRestResourceClasses(resources);
        return resources;
    }


    private void addRestResourceClasses(Set<Class<?>> resources) {
        resources.add(rest.HelloWorld.class);
        resources.add(rest.Search.class);

        // Here continue adding all the JAX-RS classes that you have
    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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