[英]Is not a valid service exception in JAX-WS
我正在从http://www.mkyong.com/webservices/jax-ws/jax-ws-hello-world-example/获取参考
这是我的HelloWorldClient类
package WebService;
import java.net.URL;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;
public class HelloWorldClient{
public static void main(String[] args) throws Exception {
URL url = new URL("http://localhost:8099/dummy1/dummy2?wsdl");
//1st argument service URI, refer to wsdl document above
//2nd argument is service name, refer to wsdl document above
QName qname = new QName("http://localhost:8099/dummy1/dummy2?wsdl", "HelloWorldImplService");
Service service = Service.create(url, qname);
HelloWorld hello = service.getPort(HelloWorld.class);
System.out.println(hello.getHelloWorldAsString("mkyong"));
}
}
运行此类时,我从下面的代码行中获取错误
Service service = Service.create(url, qname);
错误是
Exception in thread "main" javax.xml.ws.WebServiceException: {http://localhost:8099/dummy1/dummy2?wsdl}HelloWorldImplService is not a valid service. Valid services are: {http://WebService/}HelloWorldImplService
at com.sun.xml.internal.ws.client.WSServiceDelegate.<init>(WSServiceDelegate.java:220)
at com.sun.xml.internal.ws.client.WSServiceDelegate.<init>(WSServiceDelegate.java:165)
at com.sun.xml.internal.ws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:93)
at javax.xml.ws.Service.<init>(Service.java:56)
at javax.xml.ws.Service.create(Service.java:680)
at WebService.HelloWorldClient.main(HelloWorldClient.java:19)
在HelloWorldClient类的参考示例中,它具有
QName qname = new QName("http://ws.mkyong.com/", "HelloWorldImplService");
就我而言,我已将其替换为
QName qname = new QName("http://localhost:8099/dummy1/dummy2?wsdl", "HelloWorldImplService");
我不知道我在哪里弄错了。当我运行http://localhost:8099/dummy1/dummy2?wsdl
它工作正常。但是,当我从客户端访问时,出现上述异常。
尝试更换
QName qname = new QName("http://localhost:8099/dummy1/dummy2?wsdl", "HelloWorldImplService");
同
QName qname = new QName("http://WebService/", "HelloWorldImplService");
这是解决此问题的方法:
1.运行由Mkyong编写的发布者类;
2.在浏览器中打开网址(例如:http:// localhost:8099 / dummy1 / dummy2?wsdl);
3.检查WSDL中的“ targetNamespace”属性是否等于QName构造函数中的第一个参数。 如果不是,请从WSDL进行设置;否则,请转至WSDL。
4.检查WSDL中的“名称”属性是否等于QName构造函数中的第二个参数。 如果不是,请从WSDL进行设置;否则,请转至WSDL。
5.停止客户和发布者;
6.运行发布者;
7.运行客户端;
8.享受结果=)
错误消息告诉您要解决的问题:
有效的服务是: {http://WebService/}HelloWorldImplService
对我来说,以下几点是必要的:
QName qname = new QName("http://WebService/" , "HelloWorldImplService");
我还没有尝试过,但是我确实相信QName实例化中的第一个参数应该没有那个?wsdl 。 要求您提供名称空间,而不是WSDL文档的URI。
我解决了这个问题。 我创建了WebServiceClient和WebServices项目。 和相同的文件:WebServiceClient :: webservices.HelloWorld.java webservices.HelloWorldClient.java
WebServices ::
webservices.HelloWorld.java
webservices.HelloWorldImpl.java
webservices.HelloWorldPublisher.java
I used NetBeans 8. In both project must have same name of package and
QName qname = new QName("http://webservices/", "HelloWorldImplService");
in webservices.HelloWorldClient.java.
The end. It runs ! Sorry My english. (Bobojonov Farruh)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.