25.3. 将端口添加到服务
概述 复制链接链接已复制到粘贴板!
服务的端点信息在 wsdl:port 元素中定义,而 Service 对象会为 WSDL 合同中定义的每个端点创建一个代理实例(如果指定了)。如果您在创建 Service 对象时没有指定 WSDL 合同, 对象没有有关实施服务的端点的信息,因此无法创建任何代理实例。在这种情况下,您必须使用 Service addPort () 方法为 Service 对象提供代表 wsdl:port 元素所需的信息。
addPort ()方法 复制链接链接已复制到粘贴板!
Service 类定义了一个 addPort () 方法,在 例 25.3 “addPort () 方法” 中显示,当没有可供消费者实施使用的 WSDL 合同时。通过 addPort () 方法,您可以为服务对象提供信息,这些信息通常存储在 wsdl:port 元素中,为服务实施创建代理所必需的。
例 25.3. addPort () 方法
添加PortQNameportNameStringbindingIdStringendpointAddressWebServiceException
portName 的值是一个 QName。其命名空间部分的值是服务的目标命名空间。服务的目标命名空间在 @WebService 注解的 targetNamespace 属性中指定。QName 的本地部分的值是 wsdl:port 元素的 name 属性的值。您可以使用以下方法之一确定这个值:
-
在
@WebService注释的portName属性中指定它。 -
将
Port附加到@WebService注释的name属性的值。 -
将
Port附加到 SEI 的名称。
bindingId 参数的值是一个字符串,用于唯一标识端点使用的绑定类型。对于 SOAP 绑定,您可以使用标准 SOAP 命名空间: http://schemas.xmlsoap.org/soap/。如果端点没有使用 SOAP 绑定,则 bindingId 参数的值由绑定开发人员决定。 endpointAddress 参数的值是端点发布的地址。对于 SOAP/HTTP 端点,地址是一个 HTTP 地址。HTTP 以外的传输使用不同的地址方案。
示例 复制链接链接已复制到粘贴板!
例 25.4 “将端口添加到 服务对象” 显示在 例 25.2 “创建服务 对象” 中创建的服务 对象中 添加端口的代码。
例 25.4. 将端口添加到 服务对象
例 25.4 “将端口添加到 服务对象” 中的代码执行以下操作:
为 portName 参数创建 QName。
调用 addPort () 方法。
指定端点使用 SOAP 绑定。
指定端点发布的地址。