0

提供された wsdl ロケーション パス ファイル:/D:/someLocationWherePlacedMyWSDl.interface.v2.wsdl を使用して、wsimport gradle タスクで生成された予備の MyService があります。

public class MyService
    extends Service
{

    private final static URL MyService_WSDL_LOCATION;
    private final static Logger logger = Logger.getLogger(com.google.services.MyService.class.getName());

    static {
        URL url = null;
        try {
            URL baseUrl;
            baseUrl = com.google.services.MyService.class.getResource(".");
            url = new URL(baseUrl, "file:/D:/someLocationWherePlacedMyWSDl.interface.v2.wsdl");
        } catch (MalformedURLException e) {
            logger.warning("Failed to create URL for the wsdl Location: 'file:/D:/someLocationWherePlacedMyWSDl.interface.v2.wsdl', retrying as a local file");
            logger.warning(e.getMessage());
        }
        MyService_WSDL_LOCATION = url;
    }
}

どうすれば変更できますか?これは、ファイルが 1 つの環境で生成され、アーティファクト (war) が別のサーバーに移動されたために発生します。

何かご意見は?


うん、分かった。ローカルではすべてが完璧に機能します。しかし、このファイルは war ファイル内にあり、Jenkins がこのファイル /var/distributives/myservice/tomcat-base/wsdl/someLocationWherePlacedMyWSDl.interface.v2.wsdl を取得しようとすると、例外が発生します (そのようなファイルやディレクトリはありません)。warファイル内のファイルが見えなかったようです。どうすればこれを処理できますか?

4

2 に答える 2

0

サービス クラス のコンストラクタを使用してMyService、 を渡しますwsdlLocation

String WSDL_LOCATION = "http://server:port/localtionWSDL.interface.v2.wsdl";

try {
    final URL url = new URL(WSDL_LOCATION);
    final QName serviceName = new QName("http://mynamespace/", "MyService");
    final MyService service = new MyService(url, serviceName);
    port = service.getMyServicePort();

    // Call some operation of WebService

} catch (final Exception e) {
    // Handle the exception
}
于 2013-02-26T19:12:37.220 に答える
0

この問題を相対パスで解決しました。ここに解決策があります
@Value("classpath:com//google//resources//wsdl//myservice.interface.v2.wsdl") public void setWsdlLocation(final Resource wsdlLocation) { m_wsdlLocation = wsdlLocation; }

于 2013-02-28T11:37:23.827 に答える