IBM Support

Can Maximo support both SOAP 1.1 and SOAP 1.2 for dynamic Web Services deployment?

Technical Blog Post


Abstract

Can Maximo support both SOAP 1.1 and SOAP 1.2 for dynamic Web Services deployment?

Body

Maximo 7.6.0.8 on newer provides functionality to support both soap 1.1 and 1.2 versions simultaneously for Dynamic Web Services deployment.

 

NOTE:  This new functionality is limited to WebSphere Traditional environments and is not supported for WebSphere Liberty environments.

 

To enable both soap versions, there are a few steps you must follow carefully.  Any errors made in the following files can prevent you from being able to deploy the Maximo application, or use web services successfully.

 

1.  Log in to the Maximo application and navigate to System Configuration > Platform Configuration> System Properties.

Locate the property mxe.int.supportsbothsoapversion and set the global value to '1'.  Ensure you save and then perform a live refresh.

 

2.  Navigate on the file system to IBM\SMP\maximo\applications\maximo\meaweb\webmodule\WEBINF\web.xml and open with a text editor.  Modify the web.xml to comment out the following servlet-class entry:

 

<servlet-class>psdi.iface.webservices.JAXWSWebServiceProvider</servlet-class>

 

and remove the comments around this servlet-class entry:

 

<!--servlet-class>psdi.iface.webservices.WASJAXWSWebServiceProvider</servlet-class--> 

 

Once completed, the section in your web.xml will look just like the following:

 

 <servlet>

      <servlet-name>jaxws</servlet-name>

      <!--servlet-class>psdi.iface.webservices.JAXWSWebServiceProvider</servlet-class-->

      <servlet-class>psdi.iface.webservices.WASJAXWSWebServiceProvider</servlet-class>

      <load-on-startup>1</load-on-startup>

 </servlet>

 

3.  Next, navigate to IBM\SMP\maximo\deployment\ and open the buildmaximoear.xml file with a text editor.

 

Search for and location the following two lines:

 

     <exclude name="${maximo.wasjaxwsproviderdyn}"/>

     <!--exclude name="${maximo.jaxwsproviderdyn}"/-->

 

Remove the commends from the maximo.jaxwsproviderdyn, and add comments to the maximo.wasjaxwsproviderdyn.  This will force the correct class wasjaxwsproviderdyn to be included in the ear file when buidling.

The resulting section will look like that shown below:

 

                                                <fileset dir="${maximo.basedir}/meaweb/webmodule">

                                                               <include name="**/*.*"/>

                                                                <exclude name="WEB-INF/web.xml"/>

                                                               <exclude name="META-INF/MANIFEST.MF"/>

                                                               <exclude name="${maximo.jaxwsprovider}"/>

                                                               <!--exclude name="${maximo.wasjaxwsproviderdyn}"/-->

                                                               <exclude name="${maximo.jaxwsproviderdyn}"/>

                                               </fileset>

 

4:   Rebuild and redeploy the EAR file.

 

5:  Create and deploy a new Web Service from the web services library application.  In the following example, I created a new object structure web services based on the MXITEM object structure.

Once deployed, use the following URL in your browser to view the wsdl that was automatically generated:

maximohost:port/meaweb/wsdl/MXITEM.wsdl

 

  Within the resuling WSDL file you will see two soap bindings, one for each version of SOAP as shown in the following example:

 

<binding name="MXITEMSOAP11Binding" type="mxws:MXITEMPortType">

<binding name="MXITEMSOAP12Binding" type="mxws:MXITEMPortType">

 

6.  You should now be able to call a Web Service using soap versions 1.1 and 1.2.

 

Important Note:  What to watch out for!!!

When applying feature packs and ifixes, there is a potential for the buildmaximoear.xml to be overwritten.  If this happens, you may be able to deploy the maximo.ear successfully, however you  will not be able to start the Maximo application.

 

The error seen in the deployment manager log will look similar to the following:

[7/25/19 10:36:49:284 EDT] 00000a25 WSModuleDescr E   WSWS7011E: The configuration for the meaweb.war application module cannot load correctly.
The following error occurred:  com.ibm.ws.websvcs.exception.DeploymentException: WSWS7159E: The JAXWSWebServiceProviderPort port-component in the jaxws webservice-description was identified as a JAX-RPC port component, but it did not contain a value in the service-endpoint-interface element.
    at com.ibm.ws.websvcs.deployment.WSServerMetadataMerger.validate(WSServerMetadataMerger.java:1552)
    at com.ibm.ws.websvcs.deployment.WSServerMetadataMerger.mergeMetadata(WSServerMetadataMerger.java:742)
    at com.ibm.ws.websvcs.desc.WSModuleDescriptorImpl.initDBCMap(WSModuleDescriptorImpl.java:2106)
    at com.ibm.ws.websvcs.desc.WSModuleDescriptorImpl.buildJAXWSServiceRefs(WSModuleDescriptorImpl.java:1089)
    at com.ibm.ws.websvcs.desc.WSModuleDescriptorImpl._containsWebServiceClients(WSModuleDescriptorImpl.java:604)
    at com.ibm.ws.websvcs.desc.WSModuleDescriptorImpl.containsWebServiceClients(WSModuleDescriptorImpl.java:576)
    at com.ibm.ws.websvcs.deploy.WSCacheWriter.writeModuleCache(WSCacheWriter.java:577)
    at com.ibm.ws.websvcs.deploy.WSCacheWriter.writeApplicationCache(WSCacheWriter.java:242)
    at com.ibm.ws.websvcs.deploy.WSCacheWriter.writeApplicationCache(WSCacheWriter.java:167)
    at com.ibm.ws.websvcs.deploy.PersistentStorageInstallSaveTask.performTask(PersistentStorageInstallSaveTask.java:196)
    at com.ibm.ws.management.application.sync.AppBinaryProcessor$ExpandApp.expand(AppBinaryProcessor.java:1711)
    at com.ibm.ws.management.application.sync.AppBinaryProcessor$AppBinThread.run(AppBinaryProcessor.java:1216)
    at java.lang.Thread.run(Thread.java:853)

 

To correct this, ensure you follow the steps above to correct the buildmaximoear.xml file, rebuild and redeploy the maximo ear.  It is not advised to back-up and restore your buildmaximoear.xml because this file can include changes in feature packs and ifixes that are necessary for new or fixed functionality.

 

[{"Business Unit":{"code":"BU005","label":"IoT"}, "Product":{"code":"SSLKT6","label":"Maximo Asset Management"},"Component":"","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"","Edition":""}]

UID

ibm11111401