Friday, June 3, 2016

com.ibm.websphere.ssl.SSLException: Cannot get security object from WCCM during WebSphere Application Server starting

I have come across this issue while starting my IBM BPM server. It says:

An error occurred initializing, nodeagent [class com.ibm.ws.runtime.component.ServerImpl]
com.ibm.ws.exception.ConfigurationError: com.ibm.websphere.ssl.SSLException: Cannot get security object from WCCM.

    at com.ibm.ws.ssl.core.SSLComponentImpl.initialize(SSLComponentImpl.java:208)
    at com.ibm.ws.runtime.component.ContainerHelper.initWsComponent(ContainerHelper.java:1193)

.
.
.
.
Caused by: com.ibm.websphere.ssl.SSLException: Cannot get security object from WCCM.
    at com.ibm.ws.ssl.config.SSLConfigManager.initializeServerSSL(SSLConfigManager.java:215)
    at com.ibm.ws.ssl.core.SSLComponentImpl.initialize(SSLComponentImpl.java:145)
    ... 36 more


After some research on this I found the resolution for the same and thought of sharing that with you all.

The reason behind this could be the courrupted security.xml which could be found at the below location : \profiles\<<profileName>>\config\cells\<<cellName>>\security.xml
Now don't ask me how this got corrupted :) .

This can be resolved in two ways:
First one being : get the file from a backup copy (if you have one).
Second way:  the same file could be copied from another profile in the cell, e.g.: ...\profiles\Profile2\config\cells\PCCell2\security.xml or get this file from another working copy of the installation and replace it with the corrupted file.

Once you replace the corrupted file , try to restart the server and it should work. (Atleast you should not see this error and it worked for me).

Thanks for stopping by !!!

Monday, February 1, 2016

How to find timeZone offset between two timezones in IBM BPM

Many a time during our development, we need to calculate the time zone offset (time difference) between two different time zones during the date manipulations. In this Post, I would like provide a simple function which will give the time Difference between two Time Zones.


function getTimeZoneOffset(zone1,zone2){
    var date=new TWDate();
    var dateString=date.format("MM/dd/yyyy HH:mm.ss");
    var Zone1Date=new TWDate();
    var Zone2Date=new TWDate();
    Zone1Date.parse(dateString, "MM/dd/yyyy HH:mm.ss", zone1);
    Zone2Date.parse(dateString, "MM/dd/yyyy HH:mm.ss", zone2);
    var offset= Math.ceil((Zone1Date.getTime()-Zone2Date.getTime())/(60*60));
    return offset;
}


Note: The above method ve offset in hours

This method can be used as below;

var offSet1=getTimeZoneOffset("EST","GMT") 
var offSet2=getTimeZoneOffset("GMT","EST")

Output:
offset1 is evaluated to '5' 
offset2 is evaluated to '-5'  

Wednesday, December 23, 2015

Handling SOAP Fault in IBM BPM webserivce integration

This is one area which most of us including are under the impression that SOAP Faults can not be handled with the web service integration of IBM BPM. It is very much untill the version8.0, but the support has been provided starting from v8.0.1. The link below tells you on high level on how to capture the soap fault using the error event in IBM BPM.
IBM Knowledge Center.

your WSDL operation looks like this, similar to what is shown in the above link.
Operation Element in WSDL (Fig - 1)

What does this link won't tell you and you need to know in order to make this work ?

Tuesday, December 22, 2015

IBM BPM - How to get the Server HostName and Port in different Environments

In this Post, let us look at how to retrieve the Server host name and port in different environments. The general practice is to use an environment variable for host name and port which can be used to hold these constants and change these values when you promote the code to higher environments.
I found a way  to retrieve these values programmatically using  the apis that comes with IBM BPM, just thought of sharing that with you all. Below is script which will fetch these values dynamically.

Packages.com.lombardisoftware.core.config.TWConfiguration.getInstance().getServer();
Above statement gives the instance of the server.

server.getServerHost() - This gives the Host Name of the BPM server.
server.getServerPort() -  This gives the port of the BPM server

Packages.com.lombardisoftware.core.config.TWConfiguration.getInstance().getCommon().getPortalPrefix(); 
Above statement gives the portal prefix