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 this: 

 <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 these two lines:

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

Remove the comment marks from maximo.jaxwsproviderdyn, and add comments marks  to  maximo.wasjaxwsproviderdyn.  This will force the correct class (wasjaxwsproviderdyn) to be included in the ear file build.

The resulting section will look like this:

   <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 Maximo 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 resulting 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 SOAPversions 1.1 and 1.2.

Important Note:  What to watch out for!!!

When applying Feature Packs and interim fixes, 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/24 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.

Note - The webservices.xml does not require any changes when following the above steps. If you only wish to use Soap version 12, please review the tech doc Configuring Maximo 7.6.X Web Services to use Soap version 12

[{"Type":"MASTER","Line of Business":{"code":"LOB59","label":"Sustainability Software"},"Business Unit":{"code":"BU059","label":"IBM Software w\/o TPS"},"Product":{"code":"SSLKT6","label":"IBM Maximo Asset Management"},"ARM Category":[{"code":"a8m50000000CbGdAAK","label":"Integration-\u003EGeneral"}],"ARM Case Number":"","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"All Versions"},{"Type":"MASTER","Line of Business":{"code":"LOB59","label":"Sustainability Software"},"Business Unit":{"code":"BU059","label":"IBM Software w\/o TPS"},"Product":{"code":"SSWT9A","label":"IBM Control Desk"},"ARM Category":[{"code":"a8m500000008b3EAAQ","label":"CCMDB Category (Change Management \u0026 Configuration Management)-\u003ECCMDB - Integration"}],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"All Versions"}]

UID

ibm11111401