1. Ejemplo 1 (ver principalmente [2])
1.1. Funciones del sistema:
Desarrolle un servicio de calculadora CalculatesService, que incluye operaciones como Plus, resta, multiplicar y dividir.
1.2. Preparación antes del desarrollo:
Instalar eclipse-jee;
Descargue la última versión de AXIS2, la URL es http://axis.apache.org/axis2/java/core/download.cgi, seleccione el paquete zip de distribución binaria estándar y descifra el nombre del directorio Axis2-1.4.1. La estructura del archivo en el directorio es la siguiente:
1.3. Configuración previa al desarrollo:
En la barra de menú de Eclipse, ventana -> Preferencias -> Servicio web -> Perferencias de Axis2, seleccione la ubicación del paquete de descompresión de Axis2 en la ubicación de tiempo de ejecución de Axis2. Después de configurarlo, haga clic en "Aceptar". (Como se muestra en la imagen)
1.4. Desarrollar el servicio web:
(1) Cree un nuevo proyecto de Java y fírelo "WebServicetest1"
(2) Cree una nueva clase y nombrela "Cálculo de servicio". El código completo es el siguiente:
paquete edu.sjtu.webservice; /*** Operación de calculadora* @author rongxinhua*/public class CalculatesService {// Addition public float plus (float x, float y) {return x + y; } // Sentracción public float menos (float x, float y) {return x - y; } // múltiples públicos float multiply (float x, float y) {return x * y; } // dividencia public float divide (float x, float y) {if (y! = 0) {return x /y; } else return -1; }}(3) en el proyecto "WebServicetest1" nuevo -> Otro, encuentre el "Servicio web" en "Servicios web";
(4) Siguiente paso (siguiente), En el cuadro de objeto de servicios web que aparece, haga clic en "Explorar" en la implementación del servicio, ingrese el cuadro de objeto de Browse Classes y encuentre la clase de Cálculo de servicio que acabamos de escribir. (Figura a continuación). Haga clic en "Aceptar", y volverá al cuadro de diálogo Servicio web.
(5) En el cuadro de diálogo Servicio web, ajuste el control deslizante en el tipo de servicio web a la posición de "Servicio de inicio" y ajuste el control deslizante en el tipo de cliente a la posición de "Cliente de prueba".
(6) Hay una "configuración" en el lado derecho del diagrama de control deslizante tipo servicio web. Haga clic en la opción a continuación para ingresar el cuadro de objeto de configuración de implementación del servicio y seleccione el servidor correspondiente (uso TomCat6.0 aquí) y el tiempo de ejecución del servicio web (seleccione Apache Axis2), como se muestra en la figura a continuación:
(7) Después de hacer clic en Aceptar, volverá al cuadro de diálogo Servicio web. Del mismo modo, también hay "configuración" en el lado derecho del control deslizante en el tipo de cliente, y se debe realizar la configuración correspondiente. Los pasos son los mismos que anteriores. Después de la finalización, el siguiente -> Siguiente está listo. Entrando en la configuración de Java Bean del servicio web AXIS2, seleccionamos Generar un Servicio predeterminado.xml, como se muestra en la figura a continuación:
(8) Cuando llega al cuadro de diálogo de inicio del servidor, hay un botón "Inicio del servidor" (como se muestra a continuación). Haga clic para iniciar el servidor Tomcat.
(9) Después de esperar el inicio, haga clic en "Siguiente -> Siguiente", todo se hará de forma predeterminada y, finalmente, haga clic en Finalizar. Finalmente, aparece la siguiente interfaz: (Web Service Explorer), donde podemos probar nuestros servicios web. (Si lo abre con un navegador, use la siguiente dirección: http://127.0.0.1:19189/wse/wsexplorer/wsexplorer.jsp?org.eclipse.wst.ws.explorer=3). Como se muestra en la figura a continuación:
Nota: Abrir el explorador de servicios web en el navegador (a veces el WebService Explorer está cerrado en Eclipse, que se puede abrir de esta manera)
Primera dirección de inicio de sesión: http://127.0.0.1:19189/wse/wsexplorer/wsexplorer.jsp. Luego seleccione la pestaña Explorador de servicios web en la esquina superior derecha de la página web. Luego ingrese la dirección WSDL: http: // localhost: 8080/webservicetest1/services/calculateservice? Wsdl. Esta dirección WSDL es la WSDL que acabamos de lanzar el servicio. Haga clic en Go, como se muestra en la siguiente figura:
Entonces puede ver la siguiente interfaz:
(10) La prueba es relativamente simple. Por ejemplo, seleccionamos una operación "Plus" (debe ser calculado de servicios de trabajo11). Aparece la siguiente figura. Ingrese 1 en el cuadro de entrada de x, ingrese 2 en el cuadro de entrada de y y haga clic en "Go", y el resultado 3.0 se mostrará en la barra de estado. Las pruebas de otros métodos son similares. Los resultados se muestran en la figura anterior.
1.5. CalculatesService Client llama al programa
Hemos definido los métodos de suma, resta, multiplicación y división y publicado estos métodos como servicios. Ahora todo lo que necesitamos hacer es llamar a estos servicios. El programa de llamadas del cliente como se muestra en el siguiente código: calculateservicetest.java
paquete edu.sjtu.webservice.test; import javax.xml.namespace.qname; importar org.apache.axis2.axisfault; importar org.apache.axis2.addressing.endpointreference; importar org.apache.axis2.client.options; importar org.apache.axis2.rpc.client.rpcserviceClient; Public Class CALCLUTASSEVICETEST { / ** * @param args * @throws axisfault * / public static void main (string [] args) lanza axisfault {// tODO auto-generado método stub // llame a WebService usando el método RPC RPCServiceClient ServiceClient = new RPCServiceClient (); Opciones opciones = serviceClient.getOptions (); // Especifique la URL para llamar a WebService endpoIntreference Targetepr = new EndPoIntreference ("http: // localhost: 8080/webservicetest1/services/calculeservice"); opciones.setto (TargetRep); // Especifique el método y el espacio de nombres del archivo WSDL en la computadora que se llamará: edu.sjtu.webservice. Qname opaddentry = new Qname ("http://webservice.sjtu.edu", "plus"); // addqname opaddentryminus = new qname ("http://webservice.sjtu.edu", "minus"); // subtractionqname opaddentrymymliply = newService.sjtu.edu "," minus "); // subtractionqname opaddentrymymliply = niewservice.sjtu.edu", "minus"); // subtractionqname opaddentrymymliply = nieve Qname ("http://webservice.sjtu.edu", "multiplicar"); // multiplicar qname opaddentrydivide = new qname ("http://webservice.sjtu.edu", "dividir"); // divide // especificar los valores de los parámetros del método ventaja son dos, moderadamente el adder y el objeto adicional y el objeto adicional y el objeto adicional []. opaddentryargs = nuevo objeto [] {1,2}; // Especifique el tipo de datos del valor de retorno de la clase de método más [] classes = new class [] {float.class}; // Llame al método más y emite el valor de retorno del método System.out.println (ServiceClient.InvokeBlocking (OpaddEntry, Opaddentryargs, clases) [0]); System.out.println (ServiceClient.InvokeBlocking (Opaddentryminus, Opaddentryargs, clases) [0]); System.out.println (ServiceClient.InvokeBlowing (OpaddentryMultiply, Opaddentryargs, clases) [0]); System.out.println (ServiceClient.InvokeBlowing (OpaddentryDivide, Opaddentryargs, clases) [0]); }}Resultados de ejecución:
3.0
-1.0
2.0
0.5
2. Ejemplo
2.HelloService
(1) Primero defina el método de servicio, el código es el siguiente:
paquete edu.sjtu.webservice; public class HelloService {public String SayshelloneW () {return "Hello"; } public String SayshellotopersonNew (nombre de cadena) {if (name == null) {name = "nadie"; } return "hola" + nombre; } public void Updateatedata (string data) {system.out.println (data + "actualizado"); }} (2) Consulte el Ejemplo 1 para publicar este método como un servicio.
(3) Escriba el código del cliente para llamar al servicio web (referencia principal [5])
La mayor diferencia entre este ejemplo y otros ejemplos está aquí. Otros ejemplos generalmente deben generar un trozo de cliente basado en el servicio WSDL en este momento, y luego llamar al servicio a través del trozo. Este método parece relativamente único. El cliente debe necesitar un trozo de trozo para acceder al servicio, lo cual es muy injusto. El cliente en este ejemplo no usa el método STUB, pero implementa un método de llamadas generales y no requiere que ningún cliente del cliente acceda al servicio. Solo necesita especificar la dirección de servicio web, el nombre de la operación, el parámetro y el tipo de retorno de la función. El código se ve así:
HelloServiceTest2.Javapackage edu.sjtu.webservice.test; import javax.xml.namespace.qname; importar org.apache.axis2.axisfault; importar org.apache.axis2.addressing.endpointreference; importar org.apache.axis2.client.options; importar org.apache.axis2.rpc.client.rpcserviceClient; clase pública HELOSERVICETEST2 {private rpcServiceClient ServiceClient; opciones privadas de opciones; Endpointreference privado Targetepr; public helloserviceTest2 (String Endpoint) lanza axisfault {serviceClient = new rpcServiceClient (); opciones = serviceClient.getOptions (); Targetepr = new EndpoIntreference (punto final); opciones.setto (TargetRep); } objeto público [] invokeop (String TargetNamesPace, String Opname, Object [] Opargs, Class <?> [] OpreturnType) lanza AxIsfault, ClassNotFoundException {// Establezca el nombre de la operación Qname OpqName = New QNAME (TargetNamesPace, OpName); // Establecer el valor de retorno // clase <?> [] Opreturn = new class [] {OpreturnType}; // Los parámetros en los que se debe pasar la operación ya se dan en los parámetros. Aquí llamamos directamente a devolver ServiceClient. } /** * @param args * @throws AxisFault * @throws ClassNotFoundException */ public static void main(String[] args) throws AxisFault, ClassNotFoundException { // TODO Auto-generated method stub final String endPointReference = "http://localhost:8080/WebServiceTest1/services/HelloService"; Final String TargetNamespace = "http://webservice.sjtu.edu"; HELLOSERVICETEST2 Client = new HelloserviceTest2 (endpoIntreference); Cadena opname = "sayhellotopersonnew"; Objeto [] opargs = nuevo objeto [] {"mis amigos"}; Clase <?> [] OpreturnType = new class [] {String []. Class}; Objeto [] respuesta = client.invokeop (TargetNamespace, Opname, Opargs, OpreturnType); System.out.println (((string []) respuesta [0]) [0]); }}Ejecute el programa y haga clic en Ejecutar la aplicación AS-> Java. Puede ver que la salida del puerto de la consola es: Hola, mis amigos, lo que indica que la llamada del cliente es exitosa. La mayor diferencia y ventaja de este ejemplo se refleja en el método de llamadas del cliente, o en otras palabras, la forma de iniciar llamadas de servicio. Aunque hay un poco más de código que el trozo de trozo del cliente, este método está unificado y no requiere la producción de código de talón Stub, que resuelve el problema de que el cliente tiene muchas clases. Si el lector encapsula aún más estos códigos, creo que el método de llamadas es simple, solo pase los parámetros relevantes, lo que ilustra mejor las ventajas de las llamadas de servicio. Además, este método es más simple y claro, y puede decir el significado específico de un vistazo. No hay necesidad de hacer algunos mecanismos de clase Stub.
(4) Reescribir el código del servicio de llamadas de cliente
(3) El código de aplicación del cliente mencionado al siguiente es un poco complicado de escribir. El cliente anterior que llama al programa de servicio se reescribe, lo cual es mucho más simple. El código es el siguiente:
Helloservicetest.javaimport javax.xml.namespace.qname; importar org.apache.axis2.axisfault; importar org.apache.axis2.addressing.endpointreference; importar org.apache.axis2.client.options; importar org.apache.axis2.rpc.client.rpcserviceClient; public class HelloServiceTest {public static void main (String args []) lanza axisFault {// llame a WebService rpcServiceClient usando RPC ServiceClient = new rpcServiceClient (); Opciones opciones = serviceClient.getOptions (); // Especifique la URL para llamar a WebService endpoIntreference Targetepr = new EndPoIntreference ("http: // localhost: 8080/webservicetest1/Services/helloService"); opciones.setto (TargetRep); // Especifique el método SayHelloToperson que se llamará y el espacio de nombres del archivo WSDL Qname opaddentry = new Qname ("http://webservice.sjtu.edu", "sayhellotopersonnew"); // Especifique el valor de parámetro del objeto del método SayHelloToperson [] opaddentryargs = nuevo objeto [] {"xuwei"}; // Especifique el objeto de clase del tipo de datos que el método sayhellotoperson devuelve la clase de valor [] classes = new class [] {String.class}; // Llame al método SayHelloToperson y emita el valor de retorno del método System.out.println (ServiceClient.InvokeBlowing (OpaddEntry, Opaddentryargs, clases) [0]); }}A través del contenido anterior, presentaré un simple ejemplo de desarrollo de Eclipse+WebService, ¡y espero que sea útil para todos!