2012-09-16 28 views
7

Creé un servicio web usando JAX-WS en RSA 7.5 y Websphere 7 utilizando un enfoque ascendente. Al abrir el WSDL en UI SOAP, entonces la sección de argumentos está apareciendo como esto:Cambiar el nombre del nombre del argumento en JAX-WS

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

El método de servicio toma los 4 elementos anteriores como los parámetros para devolver los detalles de los empleados.

1) Quiero cambiar el nombre de este arg0, arg1, y así sucesivamente con algunos nombres válidos.

2) Quiero eliminar el <!--optional--> presente arriba de las etiquetas arg. (Para eliminar el <!--optional--> del nombre de los elementos, utilicé @XMLElement (required = true)). Pero no estoy seguro de dónde exactamente a utilizar esta anotación en este caso :(

por favor ayuda.

Saludos,

Respuesta

12

Se pone el @XMLElement (requeridos = true) sobre las variables en su clase que están siendo devueltos por su servicio. Acabo de enterarme acerca de esa opción hace aproximadamente un mes. Así que justo arriba de donde declara que el nombreEmp puso la etiqueta y es necesario.

Para cambiar el nombre de los parámetros use @WebParam (name = " ") al frente de cada variable de entrada al servicio.

Por ejemplo, si usted tiene un método de servicio llamada get (String name) que se vería algo así como get (@WebParam (name = "nombre") String name)


Estás en lo correcto, ahora que lo lee tu comentario nuevamente Los servicios que soporto utilizan objetos en la entrada y la salida, por lo que puse la etiqueta XMLElement en la clase de esos objetos.

Debe colocar la etiqueta en la clase que declara las variables que se pasan o se devuelven al servicio. Si esos se declaran en su clase de servicio, está bien. El punto principal es que coloque esa etiqueta XMLElement encima de la declaración de la variable, en lugar de ponerla en un getter o setter.

Este tutorial muestra algunos ejemplos del uso. JAXB tutorial

+0

IF puse el '@XMLElement (required = true)' sobre la variable de miembro EmpName, entonces eliminará el '<1 - Opcional ->' presente sobre la etiqueta ? Creo que no funcionará, tengo que colocar esto en algún lugar de la clase de servicio en sí, ya que el arg0 se pasa en el servicio en sí. ¿Has probado esto? No tengo el sistema DEV disponible nw, de lo contrario podría haber probado nit. Pero creo que al hacerlo eliminará el '' del empName pero no desde arriba el '' – user182944

+1

Debe colocar la etiqueta obligatoria = verdadera sobre cada variable en sus datos, por lo que los 4 en su caso. Apoyo los servicios y siempre me molestó en SoapUI porque tenemos esas etiquetas en todas nuestras variables. Me acabo de enterar hace un mes sobre el uso de la etiqueta XMLElement que eliminaría las etiquetas opcionales de lo que genera SoapUi. – Logan

+0

Gracias por toda la información. Probé tus sugerencias y la mayoría funcionó :) ¿Puedes decirme un par de cosas: 1) cuando ejecuto la url presente en el WSDL para verificar si el servicio está activo o no, entonces recibo un mensaje: '¡Hola! ¡Este es un servicio web de Axis2! "Mi pregunta es ¿por qué muestra Axis2? ¿JAX-WS tiene alguna relación con Axis2? 2) Hoy implementé SOAPHandler para mi servicio web. Utilicé la anotación '@handlerchain (file =" filepath ")' y el archivo se colocó en la carpeta WebContent. Me lanzó una excepción. Pero colocarlo bajo el paquete de servicio funcionó bien. ¿Por qué? – user182944

Cuestiones relacionadas