Cómo desarrollar servicios web en myecplise8 Ejemplo simple
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) { p>
if(y!=0)
{
return x / y
}
else p>
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
. 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
*/ p>
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]);
}
}