How to setup Boomi as a SOAP Proxy for an existing service provider API

Document created by jit_walia Employee on Sep 12, 2017Last modified by Adam Arrowsmith on Apr 20, 2018
Version 7Show Document
  • View in full screen mode

This articles describes how to configure the API Component to serve as a "proxy" for an existing SOAP service provider and forwarding/returning the requests and responses payloads as-is.

 

 

Use Case

In a scenario when, we would like to follow a WSDL first approach, we can use Dell Boomi SOAP services to run as a proxy service. For instance, if you would only like to change the SOAP endpoint to send Request to Boomi but would like to keep the WSDL exactly as provided by externally hosted SOAP service provider. When publishing SOAP web service processes in AtomSphere, Boomi generates its own WSDL based on the Web Services Server Operation. This WSDL includes Boomi-added items including Boomi namespaces and additional XML elements for the operation object and lists. You can also check help pages on API SOAP tab which show the settings that we will use later in this article.

 

This article assumes that you have API management enabled on your account. Using API management we have the ability to easily configure and manage API setting. 

 

Approach

In this example we use the GeoIPService from http://www.webservicex.net. This service's publicly accessible WSDL can be found here: http://www.webservicex.net/geoipservice.asmx?WSDL. Dell Boomi will dynamically generate a new process by just defining the folder where we will house this process and connection details to use for SOAP client connection. 

 

The high level, we will follow these steps:

  1. Create SOAP connection
  2. Create API and import endpoints using that soap connection
  3. A process will get created automatically
  4. We will change setting to allow same WSDL details, using API SOAP tab
  5. Finally, we will deploy the API component and related process on our atom

 

In this example, on Shared Web Server panel we will use API type set to Intermediate and will be using Authentication Type set to None. If you would like you can enable Authentication and further protect the service. Boomi allows to use Basic authentication or client certificates as its mentioned on the Shared Web Server panel.

 

Implementation

 

  1. Create a New SOAP UI project to confirm that the WSDL is valid and generate the Request profile:



    1. Log in to AtomSphere and create a new Connection for the Web Service SOAP Client and provide the connection details. We will be using this
      during API creation steps.


    This will further open a new form for Connection details such as WSDL URL, Soap Endpoint Url and authentication information if any. Once filled click on
    Save and Close button.





  2. Switch to API Management console and click on APIs button at main menu. Further click on Create an API button to Start the API creation process.


  3. Provide a name for the new API, i.e GetGeoIP and also provide Base API Path i.e. getgeoip and press Save button. Click on Import an Endpoint button to start the API creation process. If you will not provide the Base API path, the WSDL generated will be merged to main WSDL. In this case we would like to keep each WSDL separate.





  4. You will see Add Processes form, here you will need to select the appropriate button. I will be using Import from external service. Import and Configure Process Settings will open, in the Import Service *, click on Choose File and provide WSDL URL: http://www.webservicex.net/geoipservice.asmx?WSDL, provide the Process location folder and select the Connection that we had created earlier:




  5. Click next again and follow the prompts. Boomi will retrieve the Operation from the WSDL given and will prompt for selection the operations that you want to import.

  6. You will see the final step with Success! The process was successfully imported into your API. Click the Finish button to complete the step

  7. At this point click Save and Close Button to save the API operation and processes that are created during the import steps. Boomi has automatically created a process which looks like this:

  8. If you would like, you can click on View Deployment or go use Deploy tab to directly deploy this process and see the WSDL generated by Boomi. The proxy service will work just fine but the WSDL will have Boomi generated items, you can follow next steps to further setup Boomi to host custom WSDL. 
  9. From the API Management console, go to API Catalog link and click on the GetGeoIP API and further click on SOAP section to see the Base URL Path and WSDL URL Path. It will be like:

     

    Base URL Path: http://BOOMI_WSSHOST:PORT/ws/soap/getgeoip
    WSDL URL Path: http://BOOMI_WSSHOST:PORT/ws/soap/getgeoip?wsdl

  10. Now the API and process is created, however, the WSDL generated will be referring to Boomi WSS connector Namespace and also the WSDL will have Boomi specific parameters. We can browse the WSDL by pointing to WSDL URL: https://BOOMI_WSSHOST:PORT/ws/soap/getgeoip?wsdl

  11. We can test that the API works by creating a new Project SOAPUI by pointing to above URL. Which is great, but we would like to keep the request and WSDL same as external provider

  12. In order for us to use the WSDL from the External SOAP provider follow these additional steps. Browse the API by going back to https://platform.boomi.com and click on SOAP link as shown below:



    Update the WSDL Namespace to point to the ns from original service provider. Ensure that the SOAP version is selected based on your requirements, by default it is 1.1 and in this case we want to use both 1.1 and 1.2.

    Tick the checkbox Omit Operation Wrappers, with this Boomi will send the request payload as it is to the WSDL service provider, in this case http://www.webservicex.net. It is important to check this, otherwise, requests will fail if WSDL Namespace is updated without checking this.


    In this case we also want to use Custom WSDL, as the Boomi generated WSDL uses literals in the XSD validation steps and presents the request as it is to the External SOAP service.

    Click on Choose a File, in the Upload Custom WSDL and select the original WSDL, in this case the WSDL from external host: http://www.webservicex.net/geoipservice.asmx?WSDL. You will need to save the WSDL to local disk for this step. Ensure during saving the WSDL that there are no extra lines or spaces while getting the WSDL, otherwise, this step will not work.

    Finally, click on Save button and redeploy your API.

  13. Now we are ready to do another test by creating a new Project in SOAP UI or we can add a new End point to the project that we created in Step 1. We will be using Boomi Base URL Path: http://BOOMI_WSSHOST:PORT/ws/soap/getgeoip in this case. Its same as API Catalog link from API Console

 

Now we have setup Boomi as a proxy for externally hosted SOAP web service. The request and the WSDL are same but now the endpoint is hosted on Boomi!

1 person found this helpful

Attachments

    Outcomes