繁体   English   中英

在JAX-WS中不是有效的服务异常

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM