栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

将jaxws-maven-plugin与-clientjar选项一起使用

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

将jaxws-maven-plugin与-clientjar选项一起使用

-clientjar
恕我直言,该选项的记录确实很少。我认为这是有效的:

使用该

-clientjar <jarfile>
选项时,发生了 件事:

  1. 您将
    <jarfile>
    -d
    wsimport
    工具的参数所指向的目录中生成一个。其中将包含WSDL和任何相关的XSD文件。这个小捆绑包根本不会用于任何东西。如果您想使用它,完全取决于您。但是在您看到下面的(2)之前。我不知道除了将其作为文档形式外,还可以将该jarfile用作什么。
  2. 您将获得WSDL的副本,该副本放入名为的文件中
    meta-INF/wsdl/<svcname>.wsdl
    。生成的类将在no-arg代理构造函数中使用此文件。因此,如果您使用该
    -clientjar
    选项请求捆绑的WSDL文件,则实际上将使用此文件。
  3. 生成的代码将发生更改,从而
    wsdlLocation
    ,如果您在类上使用默认的no-arg构造函数
    @WebServiceClient
    ,则将是捆绑的WSDL(来自(2))的,而不是远程WSDL的。的确,如果您
    -wsdllocation
    在命令行上与一起使用,
    -clientjar
    则您指定的任何内容都
    -wsdllocation
    将无效,因为
    -clientjar
    它将具有优先权。

因此,我们必须关注(2)和(3),因为这是实际使用的唯一代码…至少如果您原样使用生成的代码。

有趣的是,(2)的结果 只是
一个WSDL文件。该文件可能具有指向XSD文件的嵌入式链接,但据我所知,永远不会遵循该链接。原因是,当我们说Web服务使用者在运行时需要WSDL时,实际上只需要WSDL本身,而不是模式。该模式已“硬编码”到使用者中,无法在运行时进行更改。因此,没有理由在运行时读取架构信息。(这是我的理解)

关于(2)包含的WSDL的第二点注意事项:它实际上只是原始WSDL的副本,因此它可能没有所需的端点。实际上,在大多数情况下不会。这意味着在这种情况下,您需要自己设置端点:

// Use no-arg constructor. Means it uses the WSDL bundled into the // meta-INF/wsdl directory rather than trying to retrieve WSDL over the// network.service = new HelloSvc_Service();hello = service.getHelloSvcPort();// Since we're using a bundled WSDL the web service URL cannot // be derived from that (it would be wrong!). So we have to set// it explicitly.((BindingProvider) hello).getRequestContext().put(     BindingProvider.ENDPOINT_ADDRESS_PROPERTY,     "http://myhellowebservice-address");


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/514554.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号