【问题标题】:Change WebService endpoint address at run time在运行时更改 WebService 端点地址
【发布时间】:2010-01-12 04:56:57
【问题描述】:

我使用 Netbeans 从 WSDL url 生成 Web 服务客户端代码。 但我无法在运行时使用代码更改端点地址。

请帮我解决这个问题!

【问题讨论】:

    标签: java web-services netbeans


    【解决方案1】:

    您可以通过两种方式做到这一点:

    1) 将port 转换为BindingProvider 并指定BindingProvider.ENDPOINT_ADDRESS_PROPERTY 属性

    MyService service = new MyService();
    MyPort port = service....
    BindingProvider bindingProvider = (BindingProvider) port;
    bindingProvider.getRequestContext().put(
    BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "http://New.Endpoint/service");
    

    2) 您可以调用生成的以 WSDL URL 作为参数的服务构造函数。

    QName qname = new QName("http://serviceuri/", "service");
    String wsdl = "http://New.Endpoint/service?wsdl";
    MyServiec service = new MyServiec(new URL(wsdl), qname);
    MyPort port = check...;
    

    【讨论】:

    • 在我的情况下使用选项 onre 和两个并保持 localhost...然后失败...
    【解决方案2】:

    您可以通过服务的构造函数完成所有操作。 JAX-WS 将为您生成各种形式的构造函数。这与上面 Chandra 的回答中提到的解决方案 #2 基本相同。

    但是,我认为您不希望像该答案中那样再次对命名空间和服务名称进行编码。只需这样做:

    URL wsdl = new URL("http://New.Endpoint/service?wsdl");
    MyService wsService = new MyService(wsdlURL);
    

    【讨论】:

      猜你喜欢
      • 2011-07-06
      • 1970-01-01
      • 1970-01-01
      • 2012-01-09
      • 1970-01-01
      • 2011-02-11
      • 2015-03-03
      相关资源
      最近更新 更多