La diferencia entre este ejemplo y el artículo de referencia es:
1) implementar.wsdd se define con más detalle (la interfaz está definida para el lado del servidor: ICalculate):
Copie el código de código de la siguiente manera:
<implementación xmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<nombre del servicio="Calcular" proveedor="java:RPC" estilo="rpc" uso="literal">
<parámetro nombre="wsdlTargetNamespace" valor="http://web.webservice.CalculateService.org" />
<parámetro nombre="wsdlServiceElement" valor="Calcular" />
<parámetro nombre="wsdlServicePort" valor="CalculateService" />
<parámetro nombre="wsdlPortType" valor="ICalculate" />
<parámetro nombre="className" valor="org.calculateservice.service.CalculateImp" />
<parámetro nombre="typeMappingVersion" valor="1.2" />
<parámetro nombre="métodos permitidos" valor="agregar sub" />
<parámetro nombre="alcance" valor="Solicitud" />
<nombre de operación="agregar" qname="operNS:agregar"
xmlns:operNS="http://web.webservice.CalculateService.org"
returnQName="addReturn" returnType="rtns:int" xmlns:rtns="http://www.w3.org/2001/XMLSchema"
acción de jabón="">
<parámetro qname="x" tipo="tns:int"
xmlns:tns="http://www.w3.org/2001/XMLSchema" />
<parámetro qname="y" tipo="tns:int"
xmlns:tns="http://www.w3.org/2001/XMLSchema" />
</operación>
<nombre de operación="sub" qname="operNS:sub"
xmlns:operNS="http://web.webservice.CalculateService.org"
returnQName="subReturn" returnType="rtns:int" xmlns:rtns="http://www.w3.org/2001/XMLSchema"
acción de jabón="">
<parámetro qname="x" tipo="tns:int"
xmlns:tns="http://www.w3.org/2001/XMLSchema" />
<parámetro qname="y" tipo="tns:int"
xmlns:tns="http://www.w3.org/2001/XMLSchema" />
</operación>
</servicio>
</implementación>
2) AxisServlet personalizado: org.calculateservice.core.AxisServlet (compatible con .NET y eliminando la verificación SOAPACTION);
El código detallado no se publica aquí. Si está interesado, puede descargar el código de muestra completo usted mismo;
3) El método de llamada es usar una clase local para llamar (parece que hay tres formas de llamar a WS en Java. Personalmente, creo que usar una clase de proxy local para llamar es la más razonable y legible):
Copie el código de código de la siguiente manera:
public static void main (String[] args) lanza ServiceException, RemoteException {
Calcular calcular = new CalculateLocator();
int resultado = calcular.getCalculateService().add(1, 2);
System.out.println("[%1 + 2 = " + resultado + "%]");
}
Pasos principales para publicar/llamar a WS: 1) Copie el directorio de ejes en la aplicación web en el paquete de instalación de axis1.4 en el recurso descargado al directorio de la aplicación web en Tomcat;
2) Escriba el código de implementación del servidor WS;
3) Escriba el archivo de implementación implementar.wsdd en el directorio WEB-INF;
4) Escriba: script generate-server-config.bat, luego genere: server-config.wsdd y luego publique el servicio web;
5) Escriba: script wsdl2java.bat para generar el código del cliente de llamada local;
6) Escriba el código de prueba para llamar a WS;
Diagrama de estructura de código:
cliente: utilice WSDL2Java para generar código de cliente local basado en wsdl;
núcleo: AxisServlet personalizado, compatible con .NET y elimina la verificación SOAPACTION;
servicio: código de implementación del servidor WS (aquí se utiliza un cálculo simple de suma y resta como ejemplo);
prueba: llame al servidor según la clase de cliente generada (la dirección del servidor del código generado es localhost. Si necesita cambiar esta dirección a configuración, simplemente modifique la asignación de la variable CalculateService_address en la clase CalculateLocator);
Haga clic para descargar el ejemplo completo
El recurso contiene código completo de muestra y archivos de instalación de axis1.4.