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); p>
Si ejecuta el comando, consulte: Processing?file?deploy.wsdd
.
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 /p>
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();
}
}
}