当前位置: 首页 > 面试题库 >

使用已知但无法访问的wsdl创建Web服务客户端

夏侯朝斑
2023-03-14
问题内容

我们正在通过电子邮件与之合作的公司向我们提供了wsdl和xsd模式。通过IPsec隧道访问与我们连接的Web服务。已发布的WSDL中有本地引用(末尾有本地引用),这意味着我们无法使用它。

第一个问题:这是常见设置吗?我认为拥有WSDL的意义不仅在于定义合同,而且还应将服务公开给消费者。

我可以使用wsimport,wsconsume等从提供的WSDL轻松生成客户端/服务器代码。我知道,当生成的客户端调用生成的服务时,它将生成我需要的正确消息。

第二个问题:是否有一种简单的方法将此路由到另一个肥皂地址?

我只希望能够执行以下操作:

SalesTaxService svc = new SalesTaxService();
SalesTax tax = svc.getSalesTaxPort()
tax.getRate("NY");

但不要使用WSDL中定义的肥皂地址。我想避免为每种方法编写一堆调度客户端。

我想念什么吗?

*回应skaffman:这就是生成的内容。默认将wsdlLocation作为 耸肩 名称 __

   @WebServiceClient(name = "SomeService")
   public class SomeService_Service extends Service {

    public SomeService_Service(URL wsdlLocation, QName serviceName) {
        super(wsdlLocation, serviceName);            
    }

    public SomeService_Service(URL wsdlLocation) {
        super(wsdlLocation, new QName("urn:some_service", "SomeService"));   
    }
  }

问题答案:

所以我弄清楚了为什么会有问题。我以为wsdlLocation必须是实际服务正在发布的WSDL。当然不是这样。解决方案是将具有针对实际服务的正确SOAP:Address的本地WSDL打包到客户端中。

编辑 我发现,您可以通过编程方式更改端点地址,而不必更改实际的WSDL:

HelloService service = new HelloService (
  this.getClass().getResource("originalHello.wsdl"),
  new QName("http://example.org/hello", "HelloService "));
HelloPort proxy = service.getHelloPort();

Map<String, Object> ctxt = ((BindingProvider)proxy ).getRequestContext();
ctxt.put(JAXWSProperties.HTTP_CLIENT_STREAMING_CHUNK_SIZE, 8192);
ctxt.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "http://new/endpointaddress");

proxy.sayHello("Hello World!");

归功于:李建明



 类似资料:
  • 我是java和web服务以及的新手。我最近使用一些教程创建了一个web服务。当我第一次学习eclipse教程时,让我创建一个客户机。但是当我尝试创建一个新项目和一个新的web服务客户机时,它会给出。具体如下所示: im使用Axis2-1.6.1,它说java遵从性级别是6,我搜索了一下,但是找不到解决这个问题的相关方案。感谢任何帮助。

  • 问题内容: 我正在尝试创建一个Web服务,我的交易工具是: ** Axis2,Eclipse,Tomcat,Ant ** 我需要从Code创建一个Web服务,即编写一个基本的Java类,它将具有在WSDL中声明的方法。然后使用java2WSDL.sh创建我的WSDL。 因此,这种方法是否正确: 用实际的业务逻辑编写我的Java类 现在,当我将此Hello.java传递给java2WSDL.sh时,

  • 这是我使用PCF开发的第一个微服务。我创建了以下Eureka服务器应用程序。 以下是eureka服务器服务的属性 以下是eureka客户服务 以下是eureka客户端服务的属性 我已经在本地服务器上运行的PCF Dev实例上部署了微服务 当我运行服务器时 http://eureka-client.local.pcfdev.io/service-instances/eureka-client 当我试

  • 我试图从WSDL生成web服务客户机,我对这一点一无所知,所以无法找出错误。我试过: 这给了我一个错误: 我还尝试了apache cxf 3.1.1在eclipse中生成Web服务客户端,但得到这个错误: 我的WSDL文件是: 请帮我找出任何方式的错误,无论是wsimport还是apache cxf。我会非常感激的。

  • 我有一个G套件域,并用域范围的授权打开一个服务号。服务号在项目中也有所有者身份。我启用gmail应用编程接口并添加范围参考(https://developers.google.com/admin-sdk/directory/v1/guides/delegation“将域范围的权限委托给您的服务号”)我也启用不太安全的应用程序设置。 这是我的代码: 但是当我使用这个令牌尝试列出电子邮件时:GETht

  • 这些其他问题暗示了一个解决方案,但我一直无法实现这一点: 无法解析的绑定http://schemas.xmlsoap.org/wsdl/soap/ ServiceConstructionException在创建CXF web服务客户端时 如何使用Maven“shade”插件将Apache CXF应用程序打包到单片JAR中 当我通过执行启动我的应用程序时,我会得到一个