gpt4 book ai didi

java - JAX-WS 服务在使用默认构造函数时给出 FileNotFoundException?

转载 作者:行者123 更新时间:2023-12-02 07:07:57 26 4
gpt4 key购买 nike

我正在尝试在我的企业应用程序中编写JAX-WS客户端。我的客户端代码如下

...
public class WSClient{
...
MyHelloService service = new MyHelloService();
service.sayHello("Test");

但是我遇到了以下异常

Caused By: java.io.FileNotFoundException: zip:C:/appsrv/domains/xdv_v00_7772_localhost/tmp/_WL_user/geftj9/war/WEB-INF/lib/wsClient.jar!/com/test/MyHelloService.wsdl

我的EAR的结构如下

MyEAR.ear
APP-INF/wsdl.jar[contains MyHelloService.wsdl]
APP-INF/stubs.jar[contains stubs of JAX-WS]
somewar.war
WEB-INF/lib/wsdl.jar[contains WSDL]
WEB-INF/lib/stubs.jar[contains stubs of JAX-WS]
WEB-INF/lib/wsClient.jar[This jar has WS Client code using stubs]

我发现JAX-WS生成的服务类有以下代码

package com.test;
public class MyHelloService extends Service{
..
MyHelloService(){
..
baseUrl = com.test.MyHelloService.class.getResource(".");
url = new URL(baseUrl, "MyHelloService.wsdl");
..
}
}

我也尝试按如下方式更改我的客户端。但它给了我同样的异常(exception)。

URL baseUrl = com.test.WSClient.class.getClassLoader().getResource(".");
url = new URL(baseUrl, "MyHelloService.wsdl");
MyHelloService service = new MyHelloService();
service.sayHello("Test");

我想知道如何从 WEB-INF/lib/wsdl.jar 加载 WSDL。任何帮助将不胜感激。

最佳答案

如果 MyHelloService.wsdl 位于 wsdl.jar 中,请尝试以下操作:

ClassLoader classloader = Thread.currentThread().getContextClassLoader();
URL wsdlLocation = classloader.getResource("MyHelloService.wsdl");
QName serviceName= new QName("http://test.com/", "MyHelloService");

MyHelloService service = new MyHelloService(wsdlLocation, serviceName);
service.sayHello("Test");

关于java - JAX-WS 服务在使用默认构造函数时给出 FileNotFoundException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15876349/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com