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

时间:2012-09-16 03:00:11

标签: java xml web-services soap jax-ws

我使用自下而上的方法在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>

服务方法将上述4个元素作为参数来返回员工详细信息。

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

2)我想删除arg标记上方的<!--optional-->。 (为了从元素名称中删除<!--optional-->,我使用了@XMLElement(required = true))。但我不确定在这种情况下使用此注释的确切位置:(

请帮忙。

此致

1 个答案:

答案 0 :(得分:12)

您将@XMLElement(required=true)置于您的班级中从您的服务返回的变量之上。我刚刚在一个月前了解了这个选项。所以在你声明empName的地方上方放置标签和必需。

要重命名服务的参数,请使用每个输入变量前面的@WebParam(name="<name you want in soap>")

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


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

您需要将标记放在声明传入或返回给服务的变量的类中。如果恰好在您的服务类中声明了那些没问题。重点是你将XMLElement标记置于变量声明之上,而不是将它放在getter或setter上。

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