首先,我想让您知道我已经可以连接到 Web 服务服务器。我问这个问题是因为我想更深入地了解 wsimport 生成的客户端是如何工作的。根据我的研究,wsimport 使用 JAXWS。请注意,我不了解 JAXWS。
我使用 wsimport 生成了我的客户端。我使用的 WSDL 来自 Axis2 Web 服务,由 Axis2 自动生成。下面的类是 wsimport 的结果:
在下面com.datamodel.xsd
DataBeanRequest.java
DataBeanResponse.java
ObjectFactory.java
package-info.java
在下面com.service
MyWebService.java
MyWebServicePortType.java
MyMethod.java
MyMethodResponse.java
ObjectFactory.java
package-info.java
通过上面的类,我可以看出其中com.datamodel.xsd
包含 Web 服务服务器使用的 bean(不包括ObjectFactory
and package-info
)。同时,MyMethod
也是MyMethodResponse
用于设置 Web 服务方法/操作的请求和响应参数的 bean。
以下是我的问题:(如果您不知道我的某些问题的答案,您实际上不必回答所有问题。:) 请随时分享您认为我可能会觉得有用的任何信息。)
我是否正确
- 我的上述假设是否正确?
- 其他类的作用是什么?
- 我检查
MyWebService
了它,它包含一个注释,它引用了我用来生成客户端的 WSDL 的绝对位置。在客户端中指定的相关性是什么wsdllocation
?客户如何使用该信息? - 我注意到 Web 服务的实际 URL 没有在任何生成的类中声明。客户端如何知道它需要连接到哪里?
- 是否对 WSDL 文件进行了注释,以便客户端可以在连接时读取 WSDL 文件上的 URL?如果是这样,是否意味着必须建立新连接时始终读取 WSDL 文件?
由于我需要编译我的应用程序并将其安装在不同的服务器上,因此将变得无效。我可以将其设置为相对路径而不是绝对路径吗?如何?(回答:是的,可以设置为相对路径。wsimport
命令有一个wsdllocation
属性,wsdllocation
可以指定的值。)- 如果我需要连接到 HTTPS 怎么办。如何设置服务器证书?
- 当我使用 wsimport 生成客户端和使用 Axis2 或 Apache CXF 生成客户端时有什么区别吗?