Red de conocimiento informático - Conocimiento del nombre de dominio - Cómo desarrollar servicios web en myecplise8 Ejemplo simple

Cómo desarrollar servicios web en myecplise8 Ejemplo simple

1.1. Funciones del sistema:

Desarrollar un servicio de calculadora CalculateService, que incluye operaciones de suma (más), resta (menos), multiplicación (multiplicación) y división (división). Configuración previa al desarrollo:

En la barra de menú de Eclipse, Ventana--gt Preferencias--gt Web Service--gt;

Perferencias de Axis2, en tiempo de ejecución de Axis2

p >

Seleccione la ubicación del paquete descomprimido Axis2 en la ubicación. Después de configurar, haga clic en "Aceptar". (Figura)

1.4. Desarrollar servicios web:

(1) Crear un nuevo proyecto Java llamado "WebServiceTest1"

(2) Crear una nueva clase llamada "CalculateService", el código completo es el siguiente:

paquete edu.webservice

/**

* CalculateService

* @author rongxinhua

*/

public class CalculateService {

// Adiciones

public float plus(float x, float y) {

return x y;

}

// Resta

public float minus(float x, float y) {

return x - y;

}

/ /Multiplicación

public float multiplicar(float x, float y) {

p>

return x * y;

}

// División

public float divide(float x, float y) {

if(y!=0)

{

return x / y

}

else

return -1;

}

}

}

(3) Crea un nuevo --gt en el proyecto "WebServiceTest1" Otros, busque "Servicios web" en "Servicios web"

(4) A continuación, en el cuadro de objeto de Servicios web que aparece, haga clic en "Servicio

implementación" Examinar", vaya al cuadro de objetos Examinar

Clases y busque la clase CalculateService que acabamos de escribir. (Como se muestra en la imagen de abajo). Haga clic en "Aceptar" y regrese al cuadro de diálogo Servicios web.

(5) En el cuadro de diálogo del servicio web, mueva el control deslizante del tipo de servicio web a la posición "Iniciar servicio" y mueva el control deslizante del tipo de cliente a la posición "Probar cliente".

(6) Hay una "Configuración" en el lado derecho del control deslizante de tipo de servicio web

Haga clic en la opción debajo para ingresar a la implementación del servicio

Cuadro de objeto de configuración, donde puede seleccionar el servidor apropiado (yo uso Tomcat6.0 aquí) y los objetos de configuración Web

. 0) y tiempo de ejecución del

servicio web (seleccione Apache Axis2), como se muestra a continuación:

(7) Haga clic en Aceptar y luego regrese al cuadro de diálogo Servicio web, de manera similar, Cliente

La "Configuración" en el control deslizante en el lado derecho del tipo también debe configurarse en consecuencia. ", también debe configurarse en consecuencia, los pasos son los mismos que los anteriores. Una vez completado, el siguiente paso: gt;

siguiente. Ingrese a la configuración de Java Bean del servicio web Axis2, seleccionamos Generar un

servicios predeterminados .xml, como se muestra en la siguiente figura:

(8) Cuando llega al cuadro de diálogo de inicio del servidor, hay una clave "iniciar servidor" (como se muestra en la siguiente figura ). Haga clic en él para iniciar el servidor Tomcat.

(9) Después de iniciar, haga clic en "siguiente - gt; siguiente", todo estará predeterminado y finalmente haga clic en Finalizar. Finalmente, aparecerá la siguiente interfaz. : (Servicio web

Administrador de recursos. ), podemos probar nuestro servicio web aquí (si se abre con un navegador, utilice 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 siguiente figura:

Nota: Abra el explorador de servicios web en el navegador (el). El explorador de servicios web a veces se cierra en eclipse, puede abrirlo así)

Primero inicie sesión en http://127.0.0.1:19189/wse/wsexplorer/wsexplorer.jsp. >

Recurso del servicio web

en la esquina superior derecha de la pestaña Administrador de página. Luego ingrese la dirección WSDL: http://localhost:8080/WebServiceTest1/services. /CalculateService?wsdl. Esta dirección WSDL es la misma que acabamos de publicar. Haga clic en Ir como se muestra en la siguiente figura:

Luego podrá ver la siguiente interfaz:

. (10) La prueba es relativamente simple, por ejemplo, seleccionamos una operación "más" (debe ser CalculateServiceSoap11Binding), como se muestra a continuación, ingresamos 1 en el cuadro de entrada x, ingresamos 2 en el y en el cuadro de entrada, haga clic en "ir", el resultado de 3.0 se mostrará en la barra de estado

Otros métodos de prueba son similares. Los resultados se muestran en la figura anterior. 1.5. Llamador del cliente CalculateService

Anteriormente, definimos los métodos de suma, resta, multiplicación y división y publicamos estos métodos como servicios, por lo que ahora todo lo que tenemos que hacer es llamar a estos servicios.

El programa de llamada del cliente se muestra en el siguiente código: CalculateServiceTest.java

package edu.sjtu.webservice.test

import javax.xml.namespace.QName; >

importar org.apache.axis2.AxisFault; paquete edu.sjtu.webservice

clase pública HelloService {

cadena pública sayHelloNew() {

return "hola";

}

public String sayHelloToPersonNew(String nombre) {

if (nombre == null) {

nombre = "nadie";

}

return "hola", nombre

}

actualización de datos vacíos públicos (datos de cadena) ) {

System.out.println(datos "Actualizados."

}

}

}

(2) Consulte el Ejemplo 1 para publicar este método como un servicio.

(3) Escriba código de cliente que llame a WebService (referencia principal [5])

La mayor diferencia entre los ejemplos de este artículo y otros ejemplos está aquí, otros ejemplos generalmente son Ambos Necesito generar un código auxiliar de cliente basado en el wsdl del servicio en este momento y luego llamar al servicio a través del código auxiliar. Este método parece ser más convencional que este método. El cliente debe necesitar el código auxiliar para acceder al servicio. especificación injusta. En lugar de utilizar un método de código auxiliar, este ejemplo utiliza un método de llamada genérico que no requiere ningún código auxiliar de cliente para

acceder al servicio. Simplemente especifique la dirección del servicio de red, el nombre de la operación, los parámetros y el tipo de retorno de la función.

El código es el siguiente:

HelloServiceTest2.java

paquete edu.sjtu.webservice.test

importar javax.xml.namespace.

importar javax.xml.namespace.RPCServiceClient;

clase pública HelloServiceTest2 {

servicio de RPCServiceClient privado

opciones de opciones privadas

objetivo EndpointReference privado

público HelloServiceTest2(punto final de cadena) lanza AxisFault {

serviceClient = new RPCServiceClient();

opciones = serviceClient.

targetEPR = new EndpointReference(punto final);

options.setTo(targetEPR

}

ServiceClient = nuevo RPCServiceClient(); p >

opciones = serviceClient.

objeto público[] invokeOp(String targetNamespace, String opName,

Object[] opArgs, Classlt;?gt;[] opReturnType) plantea AxisFault ,

ClassNotFoundException {

//Establecer el nombre de la operación

QName opQName = new QName(targetNamespace, opName

// Establecer el valor de retorno

// Classlt;?gt; [] opReturn = new Class[] { opReturnType }

// Los parámetros pasados ​​para la operación tienen se han proporcionado en los parámetros, por lo que aquí se pasarán directamente al método que se llamará

return serviceClient.invokeBlocking(opQName, opArgs, opReturnType

}

);

/* *

* @param args

* @throws AxisFault

* @throws ClassNotFoundException

*/

public static void main(String[] args) lanza AxisFault,

ClassNotFoundException {

//TODO código auxiliar de método generado automáticamente

cadena final endPointReference = "http :

cadena final t

argetNamespace = "http://webservice.sjtu.edu";

Cliente HelloServiceTest2 = nuevo HelloServiceTest2(endPointReference);

String opName = "sayHelloToPersonNew"; >Objeto[] opArgs = nuevo Objeto[] { "Mis amigos" };

Classlt;?gt [] opReturnType = nuevo Clase[] { String[].class }; p>Objeto[] respuesta = client.invokeOp(targetNamespace, opName, opArgs,

opReturnType

System.out.println(((String[]) respuesta[0]); )[0]);

}

}

}

Ejecute el programa y haga clic en "Ejecutar como aplicación Java". Puede ver que la salida del puerto de la consola es Hola, mis

amigos, lo que indica que la llamada del cliente fue exitosa. La mayor diferencia y ventaja de este ejemplo radica en la forma en que el cliente llama o la forma de iniciar llamadas de servicio. Aunque tiene un poco más de código que el método stub del cliente, este método está unificado. lo que resuelve el problema de muchas clases en el lado del cliente. Si los lectores encapsulan aún más estos códigos, la forma en que quiero llamarlos será muy simple: solo necesito pasar

parámetros relacionados, que pueden ilustrar mejor las ventajas de las llamadas de servicio. Y este método es más sencillo y claro de un vistazo. Y no es necesario que descubras algunas mecánicas de la clase stub.

(4) Reescriba el código para que el cliente llame al servicio

El código de la aplicación cliente mencionado en (3) es un poco complicado de escribir. El cliente anterior se reescribirá a continuación. El programa de servicio se llama desde el final, lo cual es mucho más sencillo.

El código es el siguiente:

HelloServiceTest.java

import javax.xml.namespace.QName

import org.apache.axis2.AxisFault

import org.apache.axis2.AxisFault

p>

import org.RPCServiceClient;

clase pública HelloServiceTest {

public static void main(String args[]) lanza AxisFault {

// Utilice RPC llamada WebService

RPCServiceClient serviceClient = new RPCServiceClient();

Options options = serviceClient.getOptions()

//Especifique la URL para llamar a WebService.

EndpointReference targetEPR = new EndpointReference("http://localhost:8080/WebServiceTest1/services/HelloService");

options.setTo(targetEPR); >// 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 del parámetro del método sayHelloToPerson

Object[] opAddEntryArgs = new Object[] { "xuwei" }

Object[] opAddEntryArgs = new Object[] { "xuwei" };

//Especifique el objeto de clase del tipo de datos del valor de retorno del método sayHelloToPerson

Class[] clases = new Class[ ] { String.class };

// Llama al método sayHelloToPerson y genera el valor de retorno del método

System.out.println(serviceClient.invokeBlocking(opAddEntry, opAddEntryArgs,classes )[0]);

}

}