25.3. 在服务中添加端口


概述

服务的端点信息在 wsdl:port 元素中定义,并且 Service 对象为 WSDL 合同中定义的每个端点创建一个代理实例(如果指定了)。如果您在创建 Service 对象时没有指定 WSDL 合同,Service 对象没有有关实现您的服务的端点的信息,因此无法创建任何代理实例。在这种情况下,您必须为 Service 对象提供使用 addPort () 方法代表 wsdl:port 元素所需的信息。

addPort ()方法

Service 类定义了一个 addPort () 方法,如 例 25.3 “addPort () 方法” 所示,该方法在没有适用于消费者实施的 WSDL 合同时使用。addPort () 方法允许您为 Service 对象提供信息,该对象通常存储在 wsdl:port 元素中,这是为服务实施创建代理所必需的。

例 25.3. addPort () 方法

addPortQNameportNameStringbindingIdStringendpointAddressWebServiceException

portName 的值是一个 QName。其命名空间部分的值是服务的目标命名空间。服务的目标命名空间在 @WebService 注解的 targetNamespace 属性中指定。QName 的本地部分的值是 wsdl:port 元素的 name 属性的值。您可以使用以下方法之一确定这个值:

  1. @WebService 注释的 portName 属性中指定它。
  2. Port 附加到 @WebService 注释的 name 属性的值中。
  3. Port 附加到 SEI 的名称。

bindingId 参数的值是一个字符串,用于标识端点使用的绑定类型。对于 SOAP 绑定,您可以使用标准 SOAP 命名空间: http://schemas.xmlsoap.org/soap/。如果端点没有使用 SOAP 绑定,则 bindingId 参数的值由绑定开发人员决定。 endpointAddress 参数的值是发布端点的地址。对于 SOAP/HTTP 端点,地址是 HTTP 地址。HTTP 以外的传输使用不同的地址方案。

示例

例 25.4 “在服务对象中 添加端口 显示向 例 25.2 “创建服务 对象” 中创建的 Service 对象添加端口的代码。

例 25.4. 在服务对象中 添加端口

package com.fusesource.demo;

import javax.xml.namespace.QName;
import javax.xml.ws.Service;

public class Client
{
public static void main(String args[])
  {
    ...
    QName portName = new QName("http://demo.redhat.com", "stockQuoteReporterPort");
    s.addPort(portName,
              "http://schemas.xmlsoap.org/soap/",
              "http://localhost:9000/StockQuote");
    ...
  }
}

例 25.4 “在服务对象中 添加端口 中的代码执行以下操作:

portName 参数创建 QName。

调用 addPort () 方法。

指定端点使用 SOAP 绑定。

指定发布端点的地址。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.