第六章 创建 Web Services - 创建一个Web服务

文章目录

第六章 创建 Web Services - 创建一个Web服务

创建一个Web服务

可以通过以下任何一种方式创建web服务:

  • 通过创建新类或编辑现有类来满足本主题前面描述的需求
  • 通过使用Web服务向导
  • 通过使用SOAP向导和现有的WSDL
  • 通过子类化一个或多个web服务

使用Web服务向导

Web服务向导生成一个简单的存根。

  1. 单击File > New。这将显示"新建"对话框。
  2. 单击"General"选项卡。
  3. 单击新建Web服务,然后单击确定。这将显示一个向导。
  4. 为包名、类名和web服务名输入值。这些都是必需的。
  5. 可选地编辑名称空间URI(或稍后更改此初始值)。这是XML名称空间,而不是名称空间。
  6. 可选地在单独的行上键入方法名称列表。
  7. 单击OK

现在,有了一个新的web服务类,其中包含web方法的存根。例如:

java 复制代码
/// MyApp.StockService
Class MyApp.StockService Extends %SOAP.WebService 
{

/// Name of the WebService.
Parameter SERVICENAME = "StockService";

/// TODO: change this to actual SOAP namespace.
/// SOAP Namespace for the WebService
Parameter NAMESPACE = "https://tempuri.org";

/// Namespaces of referenced classes will be used in the WSDL.
Parameter USECLASSNAMESPACES = 1;

/// TODO: add arguments and implementation.
/// Forecast
Method Forecast() As %String [ WebMethod ]
{
   ;Quit "Forecast"
}

}

对现有WSDL使用SOAP向导

在某些情况下,WSDL已经设计好了,有必要创建与WSDL匹配的web服务;这就是所谓的wsdl优先开发。在 IRIS中,这个开发有三个步骤:

  1. 使用SOAP向导读取WSDL并生成web服务和所有支持类。

此向导还可以生成web客户端类(这是更常见的)。

有关使用此向导的信息,请参见使用SOAP向导。按照该部分中描述的步骤操作,并在向导中选择Create Web Service选项。

或者类中使用 %SOAP.WSDL.Reader,如使用 %SOAP.WSDL.Reader 类中所述。

  1. 检查生成的类,看看是否需要更改方法签名中的任何 %String值。

当向导读取 WSDL 时,它假定任何字符串类型输入或输出都可以在中表示为中的 %String,但这并不总是正确的。在极少数情况下,某些字符串可能会超出最大长度字符串限制。

  1. 编辑生成的 Web 服务中的方法,以便它们执行所需的操作。

每个方法最初都是一个存根,如下例所示:

java 复制代码
Method Add(a As Test.ns2.ComplexNumber, b As Test.ns2.ComplexNumber) As Test.ns2.ComplexNumber 
[ Final, SoapAction = "https://www.mynamespace.org/GSOAP.AddComplexWS.Add", 
SoapBindingStyle = document, SoapBodyUse = literal, WebMethod ]
{
 // Web Service Method Implementation Goes Here.
}

该向导包括编译器关键字,例如 FinalSoapBindingStyle。不应更改这些关键字的值。

如果 WSDL 包含 WS-Policy 元素,则向导还会生成 Web 服务的配置类。默认配置类名称是 Web 服务名称,后面附加 Config。有关 WS-Policy 的信息,请参阅保护 Web 服务。

对现有 Web 服务进行子类化

可以通过创建现有 Web 服务类的子类,然后将 SOAPMETHODINHERITANCE 参数添加到您的类来创建 Web 服务,如下所示:

java 复制代码
PARAMETER SOAPMETHODINHERITANCE = 1;

**此参数的默认值为 0。如果此参数为 0,则类不会将 Web 方法继承为 Web 方法。也就是说,这些方法可作为普通方法使用,但不能作为子类定义的 Web 服务内的 Web 方法进行访问。

**

如果将此参数设置为 1,则类可以使用任何 Web 服务超类中定义的 Web 方法。

相关推荐
vigor51215 小时前
MySQL通过Mango实现分库分表
android·数据库·mysql
格子软件15 小时前
2026年GEO优化系统源码解构:核心状态机与高并发流控深度剖析
java·vue.js·spring boot·vue·geo
weixin1997010801615 小时前
[特殊字符]《京东订单API(jd.order.detail.get)对接ERP:企业认证+OAuth授权避坑指南》(附Python源码)
java·数据库·python
赵渝强老师15 小时前
【赵渝强老师】高斯数据库(openGauss)的模式
数据库·opengauss·国产数据库·高斯数据库
长不胖的路人甲15 小时前
Redis 数据删除策略
数据库·redis·spring
触底反弹16 小时前
🔥 字符串算法面试三连击:反转、回文、回文变种,搞懂这三题稳了!
前端·javascript·算法
pW3g3lLuu16 小时前
在 VS Code 里直接改 JAR,我复刻了JarEditor
java·pycharm·jar
ClouGence16 小时前
SQL Server CDC 如何降低主库压力?Always On 备库读取实践
数据库·后端·sql·sqlserver
竹林81816 小时前
从 RPC 超时到批量签名:我用 @solana/web3.js 重构了一个 NFT 铸造页面,踩了这些坑
前端·javascript
Tim_1016 小时前
【C++】009、extern关键字
java·开发语言