Altova MapForce 2023 Enterprise Edition

Este ejemplo explica cómo generar un servicio web SOAP con MapForce. Vamos a generar código de programa Java a partir de un proyecto de prueba de MapForce que encontrará en la siguiente ruta: <Documentos>\Altova\MapForce2023\MapForceExamples\Tutorial\\Query Person database.mfp. Este proyecto implementa un servicio web SOAP que expone dos operaciones: getPerson y putPerson. Este servicio web se comunica en segundo plano con una BD SQLite de la que obtiene o al que añade detalles de personas con estas operaciones. Para ver un ejemplo de cómo crear este tipo de proyectos en MapForce, consulte el apartado Crear proyectos de servicio web a partir de archivos WSDL.

 

Para este ejemplo necesitamos Java 7 y Apache Ant para compilar el código Java generado. El archivo .aar se implementará en un servidor Apache Tomcat con Axis2 instalado.

 

Tenga en cuenta que, para simplificar, en el ejemplo se emplea una configuración de servidor web básica que no debe entenderse como preceptiva. En un entorno de producción es muy probable que el servidor web, las directivas de seguridad de la organización y otros factores exijan un enfoque distinto.

 

Para llamar al servicio web SOAP en este ejemplo se utiliza XMLSpy Enterprise Edition. Si no tiene XMLSpy, necesitará un cliente SOAP para probar el servicio web o, si lo prefiere, deberá escribir código de programa que pueda llamar al servicio web.

 

Nota:como hemos explicado antes, este ejemplo de servicio web accede a una BD de Microsoft Access. Con Java 7 es posible conectarse a bases de datos de Access mediante el puente ODBC-JDBC incluido en Java. Sin embargo, este puente ya no existe en Java 8 y ORacle recomienda usar los drivers JDBC del proveedor (véase http://docs.oracle.com/javase/7/docs/technotes/guides/jdbc/bridge.html). Por lo tanto, para ejecutar este ejemplo en Java 8 o un entorno más avanzado tendrá que encontrar e instalar drivers JDBC de terceros que permitan conectarse a una BD de Microsoft Access.

 

Paso 1: preparar el archivo query.wsdl

Este servicio web de ejemplo se creó a partir del siguiente archivo WSDL: <Documentos>\Altova\MapForce2023\MapForceExamples\Tutorial\query.wsdl. Por defecto, el archivo query.wsdl define los detalles del servicio tanto para C# como para Java en dos secciones distintas, una de las cuales está excluida con comentarios. Por lo tanto, antes de generar código C#, ubique la siguiente sección en el archivo query.wsdl y asegúrese de que no hay comentarios que la excluyan:

 

  <!--service name="WS2DB">
     <port name="WS2DBSoapPort" binding="tns:WS2DBSoapBinding">
        <soap:address location="http://localhost/WS2DB/WS2DB.asmx"/>
     </port>
  </service-->

 

Asegúrese también de que la siguiente sección está excluida (solo en el caso de Java):

 

  <service name="WS2DB">
    <port name="WS2DBSoapPort" binding="tns:WS2DBSoapBinding">
        <soap:address location="http://localhost:8080/axis/services/WS2DB"/>
    </port>
  </service>

 

Paso 2: generar código Java y compilarlo

Ejecute MapForce y abra el proyecto "Query Person database.mfp" desde la carpeta <Documentos>\Altova\MapForce2023\MapForceExamples\Tutorial\. Haga clic con el botón derecho en la ventana Proyecto y seleccione Generar código en | Java. MapForce genera código de programa y muestra el resultado en la ventana Mensajes:

mff_soap_java_ex01

 

El código se genera por defecto en el directorio secundario "Salida", que es relativo al directorio del proyecto. Para este tutorial no tocaremos la configuración predeterminada. Si de todas formas quiere cambiar el directorio de salida, consulte el apartado Configurar la generación de código.

 

Para compilar el código Java, ejecute Ant en la línea de comando en el mismo directorio que el archivo build.xml.

mff_soap_java_ex02

 

El resultado es que se genera un archivo Axis (.aar) llamado Query_Person_database.aar en el directorio de salida.

 

Para que pueda llamar a Ant desde un directorio, como en el paso que acabamos de explicar, este debe estar correctamente instalado y configurado. Para ello, observe los siguientes puntos principales (para más detalles, consulte el manual de Ant en http://ant.apache.org):

 

La variable de entorno PATH debe incluir la ruta de acceso al subdirectorio "bin" del directorio raíz de Ant.

La variable de entorno ANT_HOME debe apuntar al directorio en el que está instalado Ant.

La variable de entorno AXIS2_HOME debe apuntar al directorio en el que está instalada la distribución estándar de Axis2.

La variable de entorno JAVA_HOME debe apuntar al directorio en el que esté instalado Java JDK.

Compruebe si Ant se está ejecutando tecleando "ant" en la línea de comandos. El mensaje "Buildfile: build.xml does not exist" significa que Ant está configurado y necesita un archivo de compilación.

 

Paso 3: implementar el servicio web en Axis 2

 

En este ejemplo, el servicio web se carga en Tomcat  desde la página de administración de Axis2. Este último se puede instalar e implementar en un servidor Tomcat en funcionamiento como explicamos a continuación (para más detalles, consulte la documentación de Axis2):

 

1.Descargue la distribución Axis2 WAR (Web Archive) desde http://axis.apache.org/axis2/java/core/download.html.

2.Descomprima el archivo descargado en un directorio local.

3.Copie el archivo axis2.war en el directorio de Tomcat %CATALINA_HOME%\webapps.

4.Compruebe que Axis2 se está ejecutando abriendo esta URL: http://localhost:8080/axis2

 

Abra la página de administración y cargue el archivo .aar generado en el paso anterior.

mff_soap_java_ex03

Ahora un nuevo servicio web llamado "WS2DB" debería estar disponible y activo en la página de administración Axis2.

mff_soap_java_ex04

 

Llamar al servicio web

Si siguió los pasos anteriores al pie de la letra, entonces el WSDL del servicio web está disponible en http://localhost:8080/axis2/services/WS2DB?wsdl. Para llamar al servicio web que acaba de implementar usaremos XMLSpy. Por supuesto, también puede usar otros clientes SOAP para ello.

 
Ejecute XMLSpy Enterprise Edition. En el menú SOAP, haga clic en Crear solicitud SOAP nueva. Cuando la aplicación lo solicite, introduzca el WSDL del servicio web (en este ejemplo, http://localhost:8080/axis2/services/WS2DB?wsdl).

mff_soap_java_ex05

 

Haga clic en Aceptar. Cuando la aplicación solicite que seleccione una operación SOAP, elija putPerson.

mff_soap_java_ex06

 

XMLSpy generará una solicitud de prueba como esta:

 

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:m0="https://www.altova.com/WS2DB.xsd">
  <SOAP-ENV:Body>
    <putPerson SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
        <Put xsi:type="m0:Person">
          <First xsi:type="xsd:string">String</First>
          <Last xsi:type="xsd:string">String</Last>
          <Title xsi:type="xsd:string">String</Title>
          <PhoneEXT xsi:type="xsd:string">String</PhoneEXT>
          <Email xsi:type="xsd:string">String</Email>
        </Put>
    </putPerson>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

 

Reemplace "string" con los detalles de la persona que quiere usar como entrada para el servicio web. Para este ejemplo puede usar una solicitud como esta:

 

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:m0="https://www.altova.com/WS2DB.xsd">
  <SOAP-ENV:Body>
    <putPerson SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
        <Put xsi:type="m0:Person">
          <First xsi:type="xsd:string">John</First>
          <Last xsi:type="xsd:string">Doe</Last>
          <Title xsi:type="xsd:string">Mr</Title>
          <PhoneEXT xsi:type="xsd:string">123</PhoneEXT>
          <Email xsi:type="xsd:string">john.doe@example.org</Email>
        </Put>
    </putPerson>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

 

Ahora puede enviar la solicitud anterior al servidor. En el menú SOAP, haga clic en Enviar solicitud al servidor para abrir el cuadro de diálogo "Configuración de la solicitud SOAP".

mff_soap_java_ex07

 

Haga clic en Aceptar. XMLSpy inicia la llamada y devuelve la respuesta en el editor. La imagen siguiente muestra una respuesta exitosa.

mff_soap_java_ex08

Usando el mismo método que acabamos de explicar también puede llamar a la operación getPerson expuesta por este servicio web. Para ver unas instrucciones paso a paso, consulte el apartado "Llamar al servicio web" en el tutorial para C#. Las instrucciones para los dos casos son idénticas, salvo la URL de WSDL, que es distinta para el ejemplo con C#.

© 2017-2023 Altova GmbH