0

我正在尝试 Apache 最简单的“Hello World”网络服务(http://cxf.apache.org/docs/a-simple-jax-ws-service.html);我特意对其进行了一些修改,以了解更多关于如何做事的信息,而不是仅仅复制他们的所有代码。

我的服务实现指定了它在包“hw”中实现的接口:

@WebService(endpointInterface = "hw.HelloWorld", serviceName = "HelloWorld")

“发布”Web服务的程序(我收集的意思是作为它的服务器运行)在它自己的(非常正确的)包中具有实现:

HelloWorldImpl implementor = new hwimpl.HelloworldImpl();
Endpoint.publish("http://localhost:9000/helloworld", implementor);

然后休眠 5 分钟,在此期间,指示要放入浏览器的 URL 显示 WSDL。这么多的作品。

http://localhost:9000/helloWorld?wsdl

我的客户有:

private static final QName SERVICE_NAME 
    = new QName("http://server.hw.demo/", "HelloWorld");
private static final QName PORT_NAME 
    = new QName("http://server.hw.demo/", "HelloWorldPort");

// the following in a method, of course
String endpointAddress = "http://localhost:9000/helloWorld";
service.addPort(PORT_NAME, SOAPBinding.SOAP11HTTP_BINDING, endpointAddress);
HelloWorld hw = service.getPort(HelloWorld.class);
System.out.println(hw.sayHi("Albert"));

我不知道 SERVICE_NAME 和 PORT_NAME 与我的服务有何关系。“server.hw.demo”字符串来自示例,与我的代码中的包或似乎用于命名空间的“反转”包不对应;他们应该吗?它们对应什么?我的代码中没有任何内容,除了这里,它使用“server.hw.demo”;那个字符串应该是什么?

我的实现和我的接口在不同的类中是否重要?

我的客户不工作,我把它作为一个问题发布,但它很长,没有人回复它。我正在努力理解这部分;在我看来,这最有可能是罪魁祸首。如果我知道如何删除另一个问题。

4

1 回答 1

0

目标命名空间
(来源:javatips.net

上面的截图你可以看到 Target 命名空间http://student.com,这是因为我们创建的包是com.student. 目标命名空间必须与java包的顺序相反,也需要http://在包之前附加

参考我的博客

http://javatips.net/blog/2012/04/expose-cxf-service-with-rest-and-soap

于 2013-03-17T07:37:03.547 回答