Red de conocimiento informático - Material del sitio web - Cómo implementar WebService usando el método axis wsdd

Cómo implementar WebService usando el método axis wsdd

Escribe el archivo implementar.wsdd

Colócalo en %Tomcat_Home%\webapps\axis\WEB-INF

El contenido es el siguiente>p>

La etiqueta de servicio representa el servicio WebService, HelloWorldWSDD es el nombre del WebService actual

Los proveedores son java Tipos de WebService: RPC, Documento, Wrapped, Message, EJB, RMI

Interesado en la implementación de WebService bajo el paquete org.apache.axis.providers.java. La clase o documento WebService implementado en el paquete java

El parámetro className representa la ruta de clase del WebService actual

allowedMethods representa los métodos expuestos, que se pueden llamar en el cliente;

Este es el alcance del servicio web actual. Hay tres valores: solicitud, solicitud y syslog: solicitud, sesión y aplicación.

la solicitud representa cada servicio web generado. A través de una solicitud SOAP, un objeto de servicio tiene un alcance muy similar al de Spring. Si la solicitud de servicio es frecuente, consumirá muchos recursos. La sesión se refiere a llamar al servicio web actual para crear un objeto de servicio para cada uno. cliente.

la sesión se usa para crear un objeto de servicio para cada cliente que llama al servicio web actual

la aplicación se usa para crear un objeto de servicio para todas las solicitudes actuales

Publicar WebService

Después de escribir la configuración, necesitamos usar la clase de herramienta AdminClient proporcionada por Axis para ayudarnos a publicar el WebService hasta que se genere la configuración del servidor.

Hasta que generemos server-config.wsdd

Los pasos son los siguientes:

Inicie Tomcat

Ejecute el comando cmd y luego vaya al directorio de lanzamiento de el proyecto actual, que es %tomcat_home %/webapps/project/WEB-INF

Ingrese el comando

java?-Djava.ext.dirs=lib?org.apache.axis .client.AdminClient?deploy.wsdd

java?-Djava.ext.dirs=lib?org.apache.axis.client.AdminClient?Administrator client

-p representa Tomcat número de puerto y el valor predeterminado de AdminClient es __8080__

Aquí, implementar.wsdd es un archivo wsdd personalizado y java es, por supuesto, el comando jvm

-Djava.ext.dirs=lib establece el paquete del que depende el comando actual

AdminClient es una clase proporcionada por Axis Tool. Esta clase se puede ejecutar directamente en el administrador oficial del proyecto (no está disponible aquí y es menos descargable) AdminServlet. Si está interesado, puede estudiarlo, que es el ejemplo oficial mencionado anteriormente);

Si ejecuta el comando, consulte: Processing?file?deploy.wsdd

. ¿Listo?Procesamiento

Esto significa que está casi completado, ¿por qué? Compruebe si implementar.wsdd en el mismo directorio ha generado server-config.wsdd. Si este archivo existe, tendrá éxito. Si no, fallará.

Si falla, hay una solución. , inicie tomcat y publíquelo fuera de nuestro proyecto.

Luego repita el comando anterior sin cambiar el código de la línea de comando de la siguiente manera: java?-Djava.ext.dirs=lib?org.apache.axis.client.AdminClient?-l/axis/services/WSDD?wsdl=1&test=test" ; Servicio ?servicio?=?nuevo?Servicio(); Llamada?llamada?=?(Llamada)?servicio.createCall(); call.setTargetEndpointAddress(new?java.net.URL(punto final)?) ; nuevo? QName("http://soapinterop.org/", ?" querySingle")); String?ret?=?(String)?call.invoke(new?Object[]? {?" ¡Hola!"?} ?) ; System.out.println("got:"? +?ret);

}?catch?(¿Excepción?e)?{

System.err.println( e. toString());

}

}

}

Preguntas frecuentes

Pregunta: Si encuentro ¿Cómo debo manejar excepciones como java.lang.reflect.InvocationTargetException?

Respuesta: Esto es un error de mapeo, el problema que encontré está en %Tomcat_Home%\ Agregue el paquete jar que falta en webapps\axis\ WEB-INF

Pregunta: Como servicio web, ¿puedo agregar el paquete jar que falta en %Tomcat_Home%\webapps\axis\WEB-INF? Como servicio web, ¿puedo obtener la IP del cliente y la cadena de solicitud

Respuesta: Es posible que pueda obtenerlo de la siguiente manera, obtener la solicitud HttpServletRequest u obtener lo que desea

import?javax .servlet.http.apache.axis.MessageContext;

importar?org.apache.axis.transport.http.HTTPConstants;

¿pública?clase?HelloWorld?{ pública? getClientInfo( String? asYouLike)?{

/*?get?HttpRequest*/

MessageContext?mc?=?null;

HttpServletRequest?request?=?null ;

¿probar?{ / /mc?=?MessageContext.getCurrentMessageContext(); mc?=?MessageContext.getCurrentContext(); if(mc?==?null)

throw ?Exception("No se pudo obtener MessageContext"); ?(HttpServletRequest)?mc.getProperty(HTTPConstants.MC_HTTP_SERVLETREQUEST) System.out.println("r);

emote? ip:?" ?+?request.getRemoteAddr()); System.out.println("solicitud?URI:?" ??+?request.getRequestURI()); System.out.println("quesryString?: ?" ??+?request.getQueryString());

}?{ System.out.println(e.getMessage()); e.printStackTrace();

}

}

}