在回答问题之前,需要进行一些澄清:JAX-
WS是用于在Java中实现Web服务的规范。它描述了如何将WSDL工件映射到Java类以及如何使用注释应用此映射。您可以在此处下载规范。wsimport工具是该规范的参考实现的一部分,而参考实现是Java类库的一部分。有几种替代实现,例如Axis2,CXF或Metro,它们通过支持其他标准(例如WS-
ReliableMessaging或WS-Security)来增强基本的JAX-WS支持。
现在对您的问题:
我对上述假设是否正确?
是的,你是。
其他类的功能是什么?
的
package-info存在映射在Web服务用于在您的实现类所在的包中的XML命名空间。命名空间通常看起来与Java包名称不同(通常是URL),这使得必须进行映射。
将
ObjectFactory允许您创建任何由服务发送和接收的消息。如果您想在存根类前面插入代码,提供修改后的消息或类似内容,则需要此代码。
我看不到您的类的内容,但是如果我理解正确的话,那
MyWebServicePortType是一个类似于
portTypeWSDL中的接口。也就是说,它将WSDL中的 *** 作及其签名映射到Java方法。如果要提供服务(您不希望提供该服务,您正在询问客户端),则需要实现此接口。在实现客户端时,您只需使用它。
最后,该类
MyWebService包含要调用Web服务所需的客户端存根。
我检查了MyWebService,它包含一个注释,该注释引用了我用来生成客户端的WSDL的绝对位置。在客户端中指定wsdllocation有什么意义?客户如何使用该信息?
您生成的接口包含该
portType服务的签名,但没有说明您如何与该服务对话。这是WSDL中绑定的一部分。最基本的设置是使用基于HTTP的SOAP的消息的文档/文字样式。其他配置(例如,基于JMS的SOAP)也是可能的,并且您的客户端需要知道要使用哪种协议。因此,它需要绑定WSDL。另外,如您稍后所述,Java文件中没有端点地址。该地址也从WSDL中读取。
我注意到,在生成的任何类中均未声明Web服务的实际URL。客户端如何知道需要连接到哪里?
它读取
address距离
port的
serviceWSDL中。它位于WSDL的末尾。
是否对WSDL文件进行了注释,以便客户端在连接时可以读取WSDL文件上的URL?
不,这
port是具体Web服务端点的典型元素。这里没有什么特别的需要。
如果是这样,那么是否意味着在必须建立新连接时始终读取WSDL文件?
好吧,客户端可能有缓存(我不知道此参考实现的详细信息)。从概念上来看:是的。
如果我需要连接到HTTPS,该怎么办。如何设置服务器证书
这可能很棘手,我无法给您开箱即用的答案。我建议通读有关该主题的问题本主题。
使用wsimport生成客户端和使用Axis2或Apache CXF生成客户端时,有什么区别?
就在这里。wsimport更好,请不要使用wsdl2java。这是一个说明,为什么。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)