我正在尝试创建一个简单的 SOAP Web 服务(计算器)来学习这项技术的基础知识。我是 SOAP 新手,所以我已经做了一些事情,但我不确定下一步该做什么。
我选择了自上而下的方法,即先创建一个 wdsl 文件,然后自动生成代码。我创建了一个带有服务描述的 wsdl 文件,并用它来生成 java 文件。我有 1.1 和 2.0 格式。为了获取 2.0 文件,我使用了 axis2 的 wsdl2java 工具,对于 1.1,我使用了 java wsimport 工具。
从 wsimport 工具我得到了以下文件:
- 包信息.java
- 对象工厂.java
- CalculatorService.java(我的服务名称)
- Calculator.java(我的 portType 的名称)
- Input.java(复杂类型的名称)
wsdl2java 工具给了我以下文件:
- 服务.xml
- 计算器服务.wsdl
- Output.java(输出元素的名称)
- Input.java(输入元素的名称)
- cInput.jaba(输入复杂元素的名称)
- ExtensionMapper.java
- CalculatorServiceCallbackHandler.java
- CalculatorServiceMessageReceiverInOut.java
- CalculatorServiceSkeleton.java(包括接口的实现)
- CalculatorServiceSkeletonInterface.java
- CalculatorServiceStub.java
在 wsdl2java 文件中,我想我拥有除了服务器实现之外的一切。至于 wsimport 那些他们缺少一个实现,我不知道在哪里添加它。服务器实现也丢失了。
起初,我想将它作为本地服务(本地服务器)运行以测试它是否正常工作,然后再编写一个客户端。
我在这里找到了一个服务器实现的示例:In-process SOAP service server for Java。这似乎很简单,如果可能的话,我想使用这种方法。但我不确定它是否适用于我生成的文件(wsdl2java 或 wsimport)。如果有用的话,我还安装了 Apache 服务器。所以我正在寻找建议,使用哪组文件来设置服务器以及最简单的方法是什么。
另外我想知道 wsdl 文件中使用的命名空间是否会影响服务可用性?因为它们必须是 URI-s,但我目前没有一个用于我的服务。因此,对于 targetNamespace、xmlns:tns、端点地址等,我使用了随机 URL-s。如果我尝试在本地运行它会起作用还是会产生问题?