在 JAX-WS 中重命名参数名称

Posted

技术标签:

【中文标题】在 JAX-WS 中重命名参数名称【英文标题】:Renaming the argument name in JAX-WS 【发布时间】:2012-09-08 18:38:32 【问题描述】:

我使用自下而上的方法在 RSA 7.5 和 Websphere 7 中使用 JAX-WS 创建了一个 Web 服务。当我在 SOAP UI 中打开 WSDL 时,参数部分显示如下:

<!--Optional-->
<arg0>
    <empID>?</empId>
</arg0>
<!--Optional-->
<arg1>
    <empName>?</empName>
</arg1>
<!--Optional-->
<arg2>
    <empAddress>?</empAddress>
</arg2>
<!--Optional-->
<arg3>
    <empCountry>?</empCountry>
</arg3>

service方法以上述4个元素为参数,返回员工详细信息。

1) 我想用一些有效的名称重命名这个 arg0、arg1 等等。

2) 我想删除 arg 标签上方的&lt;!--optional--&gt;。 (为了从元素名称中删除&lt;!--optional--&gt;,我使用了@XMLElement(required=true))。但我不确定在这种情况下到底在哪里使用这个注释:(

请帮忙。

问候,

【问题讨论】:

【参考方案1】:

您将@XMLElement(required=true) 放在从您的服务返回的类中的变量上方。大约一个月前,我刚刚了解了该选项。所以就在你声明 empName 的上面放置标签和必需的。

要重命名服务的参数,请在服务的每个输入变量前使用@WebParam(name="&lt;name you want in soap&gt;")

例如,如果您有一个名为 get(String name) 的服务方法,它看起来类似于 get(@WebParam(name = "name") String name)


您是对的,现在我再次阅读了您的评论。我支持的服务在输入和输出中使用对象,这就是我将 XMLElement 标记放在这些对象的类中的原因。

您需要将标签放在声明传入或返回到服务的变量的类中。如果这些恰好在您的服务类中声明,那很好。要点是您将 XMLElement 标记放在变量声明之上,而不是将其放在 getter 或 setter 上。

本教程展示了一些使用示例。 JAXB tutorial

【讨论】:

如果我将 @XMLElement(required=true) 放在 EmpName 成员变量上方,那么它会删除 标记上方的 &lt;1--Optional--&gt; 吗?我认为它不起作用,我必须将它放在服务类本身的某个地方,因为 arg0 是在服务本身中传递的。你试过这个吗?我没有可用的 DEV 系统,否则我可能会尝试一下。但我认为这样做会从 empName 中删除 &lt;!--Optional--&gt;,但不会从 &lt;arg0&gt; 上方删除 您必须将 required=true 标签放在数据中的每个变量上方,因此在您的情况下全部 4 个。我提供支持服务,它在 SoapUI 中也总是让我烦恼,因为我们在所有变量上都有这些标签。一个月前我刚刚发现使用 XMLElement 标签会从 SoapUi 生成的内容中删除可选标签。 感谢您提供的所有信息。我尝试了你的建议,其中大部分都奏效了:) 你能告诉我几件事吗:1) 当我运行 WSDL 中存在的 url 以检查服务是否启动时,我收到一条消息:Hello! This is an Axis2 Web Service!我的问题是为什么它显示 Axis2? JAX-WS 是否与 Axis2 有任何关系? 2) 今天我为我的网络服务实现了 SOAPHandler。我使用了注释@handlerchain(file="filepath") 并将文件放在WebContent 文件夹中。它给了我一个例外。但是将它放在服务包下效果很好。为什么? 在不了解您的系统的情况下很难准确了解。我使用 JBoss,为了使用 Axis,您必须在 jboss 中部署 Axis.jar 文件。您的服务器可能部署了 Axis2 jar 文件。 Axis 几乎就像它自己的容器,用于管理部署在其中的 Web 服务。因此,您首先部署“Axis”,然后在 Axis 中部署 Axis 构建的 Web 服务。就处理程序链而言,在引用内部文件时,程序的类路径问题很常见。我不太确定那个,但我认为这与类路径有关。 您能否告诉我是否有某种方法可以在不使用 JAX-WS 中的注释的情况下实现 SOAPHandler ?由于与 Websphere 7 相关的一些问题,我不想使用任何注释。请告诉我。

以上是关于在 JAX-WS 中重命名参数名称的主要内容,如果未能解决你的问题,请参考以下文章

在 bitbucket 中重命名合并的分支名称

如何在spring boot中重命名json对象(变量)名称

在 node.js 中重命名 json 对象名称

如何在 Android Studio 中重命名软件包名称

在linux中重命名文件时包含文件夹名称

在android studio中重命名包名称后启动错误,运行时错误