Monday, 22 October 2012

IBM Web Experience Factory Designer 8 on Red Hat Enterprise Linux 6.3

In this article, I go back to my Lotus IBM Collaboration Solutions roots by describing how I installed IBM Web Experience Factory Designer ( fka WebSphere Portlet Factory Designer ) version 8 on Red Hat Enterprise Linux 6.3 ( x86-64 ).

PS For simplicity, I'm going to refer to the product as WEF :-)

Having downloaded WEF 8 from the IBM internal Passport Advantage repository - this comes down as: -

-rw-rw-r--@  1 david_hay  staff  1196213521 22 Oct 14:15 WEB_EXP_FACTORY_V8.0_MP_ML.zip

I also downloaded the requisite version of Eclipse: -

-rw-r--r--@  1 david_hay  staff   215235232 22 Oct 14:38 eclipse-jee-helios-SR2-linux-gtk-x86_64.tar.gz

from here: -


Specifically, this is what I downloaded.

Installation was relatively straight forward :-)

Initially, I wasn't able to get the GUI ( Swing-based ) installer to work, but there is a useful console variant, which I've described below.

I did eventually get the Swing GUI working, by installing the libstdc++.so.5 RPM: -

yum install -y libstdc++.so.5

Anyway, back to the installation ....

Install Eclipse

$ cd root
$ tar xvzf ~/Downloads/eclipse-jee-helios-SR2-linux-gtk-x86_64.tar.gz

- This automatically creates a directory called Eclipse under my user's home directory i.e. /root/Eclipse.

IT GOES WITHOUT SAYING THAT ONE SHOULD NEVER RUN ANYTHING AS ROOT - THIS IS, HOWEVER, MY OWN DEMO VM SO THAT'S OK.

Install WEF

$ cd /tmp
$ mkdir WEF
$ cd WEF
unzip ~/Downloads/WEB_EXP_FACTORY_V8.0_MP_ML.zip

Archive:  /root/Desktop/WEB_EXP_FACTORY_V8.0_MP_ML.zip
   creating: config/
 extracting: config/eclipse.zip      
 extracting: config/EmployeeSampleDB.zip  
 extracting: config/factory.zip      
 extracting: config/ISALite.zip      
 extracting: config/jre.zip          
  inflating: config/linux-eclipse.tgz  
  inflating: config/linux_silent_install.properties  
 extracting: config/ProductDesignerTag.zip  
  inflating: config/wasce_setup-unix.bin  
  inflating: config/wasce_setup-win.exe  
  inflating: config/win_silent_install.properties  
  inflating: Factory.bin             
  inflating: Factory.exe             
  inflating: installer.properties    
....

chmod +x Factory.bin

$ ./Factory.bin

Preparing to install...
Extracting the JRE from the installer archive...
Unpacking the JRE...
Extracting the installation resources from the installer archive...
Configuring the installer for this system's environment...

Launching installer...

Preparing CONSOLE Mode Installation...

===============================================================================
Choose Locale...
----------------

    1- Deutsch
  ->2- English
    3- Español
    4- Français
    5- Italiano
    6- Português  (Brasil)

CHOOSE LOCALE BY NUMBER: 
===============================================================================
IBM Web Experience Factory                       (created with InstallAnywhere)
-------------------------------------------------------------------------------
===============================================================================
    International Program License Agreement
    
    Part 1 - General Terms
    
    BY DOWNLOADING, INSTALLING, COPYING, ACCESSING, CLICKING ON AN
    "ACCEPT" BUTTON, OR OTHERWISE USING THE PROGRAM, LICENSEE AGREES TO
    THE TERMS OF THIS AGREEMENT. IF YOU ARE ACCEPTING THESE TERMS ON
    BEHALF OF LICENSEE, YOU REPRESENT AND WARRANT THAT YOU HAVE FULL
    AUTHORITY TO BIND LICENSEE TO THESE TERMS. IF YOU DO NOT AGREE TO
    THESE TERMS,
    
    * DO NOT DOWNLOAD, INSTALL, COPY, ACCESS, CLICK ON AN "ACCEPT" BUTTON,
    OR USE THE PROGRAM; AND
    
    * PROMPTLY RETURN THE UNUSED MEDIA, DOCUMENTATION, AND PROOF OF
    ENTITLEMENT TO THE PARTY FROM WHOM IT WAS OBTAINED FOR A REFUND OF THE
    AMOUNT PAID. IF THE PROGRAM WAS DOWNLOADED, DESTROY ALL COPIES OF THE
    PROGRAM.
 
Press Enter to continue viewing the license agreement, or enter "1" to 
   accept the agreement, "2" to decline it, "3" to print it, or "99" to go back
   to the previous screen.: 1

===============================================================================
Installing...
-------------
 [==================|==================|==================|==================]
 [------------------|------------------|------------------|------------------]


WEF installs to /root/IBM.

Configuring Eclipse to use WEF

This was more straightforward than I'd expected, but not obviously documented anywhere :-( I  guess that most people use the GUI installation, hence why it's not really written down :-)

$ cd /root/eclipse
$ mkdir links
$ cd links
$ cp /root/IBM/Designer/eclipse/com.bowstreet.designer.link .

This little file merely tells Eclipse where to look to find WEF: -

$ cat com.bowstreet.designer.link

path=/root/IBM/Designer

Validate Setup

$ locate com.bowstreet.designer.link

/root/IBM/Designer/eclipse/com.bowstreet.designer.link
/root/eclipse/links/com.bowstreet.designer.link


$ ls -al /root/IBM/Designer/eclipse/com.bowstreet.designer.link

-rw-rw-r-- 1 root root 24 Oct 22 21:22 /root/IBM/Designer/eclipse/com.bowstreet.designer.link

$ ls -al /root/eclipse/links/com.bowstreet.designer.link

-rw-r--r-- 1 root users 24 Oct 22 15:25 /root/eclipse/links/com.bowstreet.designer.link

Apart from this, I did hit one other problem when I created my first WEF project, when attempting to "bind" via SOAP to my WebSphere Portal v7 server.

In the Linux terminal session, I could see: -

Oct 22, 2012 3:30:15 PM com.ibm.ws.ssl.config.SSLConfigManager
INFO: ssl.disable.url.hostname.verification.CWPKI0027I
Oct 22, 2012 3:30:16 PM com.ibm.ws.security.config.SecurityObjectLocator
INFO: Client code attempting to load security configuration
[2012-10-22 15:34:00:944] Creating session: anonymous1350916440945
com.bowstreet.designer.deploy.DeploymentException: Check your Server Host and SOAP Connector Port inputs, and make sure your server is running.  To verify your SOAP Connector port, go to the WebSphere Admin Console, select Application Servers > YOUR_SERVER > Ports and use the SOAP_CONNECTOR_ADDRESS.
at com.bowstreet.designer.deploy.jmx.JMXConnection.connectAdminClient(JMXConnection.java:242)
at com.bowstreet.designer.deploy.jmx.JMXConnection.<init>(JMXConnection.java:141)
at com.bowstreet.designer.webapp.deployment.RemoteWAS61$6.run(RemoteWAS61.java:439)
at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121)
Caused by: com.ibm.websphere.management.exception.ConnectorException: ADMC0016E: The system cannot create a SOAP connector to connect to host wp7.uk.ibm.com at port 10025.
at com.ibm.websphere.management.AdminClientFactory.createAdminClientPrivileged(AdminClientFactory.java:632)
at com.ibm.websphere.management.AdminClientFactory.access$000(AdminClientFactory.java:123)
at com.ibm.websphere.management.AdminClientFactory$1.run(AdminClientFactory.java:206)
at com.ibm.ws.security.util.AccessController.doPrivileged(AccessController.java:63)
at com.ibm.websphere.management.AdminClientFactory.createAdminClient(AdminClientFactory.java:202)
at com.bowstreet.designer.deploy.jmx.JMXConnection.connectAdminClient(JMXConnection.java:232)
... 3 more
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.GeneratedConstructorAccessor5.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:532)
at com.ibm.websphere.management.AdminClientFactory.createAdminClientPrivileged(AdminClientFactory.java:454)
... 8 more
Caused by: com.ibm.websphere.management.exception.ConnectorNotAvailableException: [SOAPException: faultCode=SOAP-ENV:Client; msg=Error opening socket: java.net.SocketException: java.lang.ClassNotFoundException: com.sun.net.ssl.internal.ssl.SSLSocketFactoryImpl; targetException=java.lang.IllegalArgumentException: Error opening socket: java.net.SocketException: java.lang.ClassNotFoundException: com.sun.net.ssl.internal.ssl.SSLSocketFactoryImpl]
at com.ibm.ws.management.connector.soap.SOAPConnectorClient.reconnect(SOAPConnectorClient.java:422)
at com.ibm.ws.management.connector.soap.SOAPConnectorClient.<init>(SOAPConnectorClient.java:222)
... 12 more
Caused by: [SOAPException: faultCode=SOAP-ENV:Client; msg=Error opening socket: java.net.SocketException: java.lang.ClassNotFoundException: com.sun.net.ssl.internal.ssl.SSLSocketFactoryImpl; targetException=java.lang.IllegalArgumentException: Error opening socket: java.net.SocketException: java.lang.ClassNotFoundException: com.sun.net.ssl.internal.ssl.SSLSocketFactoryImpl]
at org.apache.soap.transport.http.SOAPHTTPConnection.send(SOAPHTTPConnection.java:475)
at org.apache.soap.rpc.Call.WASinvoke(Call.java:451)
at com.ibm.ws.management.connector.soap.SOAPConnectorClient$4.run(SOAPConnectorClient.java:380)
at com.ibm.ws.security.util.AccessController.doPrivileged(AccessController.java:118)
at com.ibm.ws.management.connector.soap.SOAPConnectorClient.reconnect(SOAPConnectorClient.java:365)
... 13 more


I've seen - and blogged about this before - WebSphere Portlet Factory 6.1.5 - My First Failure .... and success.

The problem is with the stock OpenJDK JRE: -

$ java -version

java version "1.6.0_24"
OpenJDK Runtime Environment (IcedTea6 1.11.5) (rhel-1.50.1.11.5.el6_3-x86_64)
OpenJDK 64-Bit Server VM (build 20.0-b12, mixed mode)


which is easily fixed by "switching" to the IBM JRE ( that I happen to have installed on this, my IBM BPM v8 server ): -

$ source /opt/ibm/BPM/v8.0/profiles/ProcCtr01/bin/setupCmdLine.sh

java -version

java version "1.6.0"
Java(TM) SE Runtime Environment (build pxa6460_26sr1fp1-20120309_01(SR1 FP1))
IBM J9 VM (build 2.6, JRE 1.6.0 Linux amd64-64 20120308_104898 (JIT enabled, AOT enabled)
J9VM - R26_Java626_SR1_FP1_20120308_1511_B104898
JIT  - r11_20111028_21230ifx5
GC   - R26_Java626_SR1_FP1_20120308_1511_B104898
J9CL - 20120308_104898)
JCL  - 20120214_01

Now when I start Eclipse, I see normal "errors" : -

$ ./eclipse 

Oct 22, 2012 3:39:14 PM null null
WARNING: ssl.default.password.in.use.CWPKI0041W
Oct 22, 2012 3:39:15 PM null null
INFO: ssl.disable.url.hostname.verification.CWPKI0027I
Oct 22, 2012 3:39:15 PM null null
INFO: Client code attempting to load security configuration
CWPKI0308I: Adding signer alias "CN=wp7.uk.ibm.com, OU=Root Cert" to local
           keystore "JMXClientTrustStore" with the following SHA digest:
           93:F1:0D:2C:B2:C0:AC:2D:26:AB:35:22:76:7B:B4:8C:0B:95:9C:CA
Oct 22, 2012 3:39:16 PM null null
INFO: Client code attempting to load security configuration
[2012-10-22 15:39:23:233] Creating session: anonymous1350916763232
[2012-10-22 15:39:26:703] Discarding session: anonymous1350916763232
[Mon Oct 22 15:40:39 BST 2012] The following properties from "/root/workspace/BPM101/WebContent/WEB-INF/config/override.properties" will over-ride their counterparts in the standard IBM property files:
bowstreet.FullyParseAllPages=true
bowstreet.themeFile=/WEB-INF/factory/themes/blue_WEF8.0.uitheme
bowstreet.baseRddFile=/WEB-INF/factory/data_definitions/dojo_base_datadef.xml;/WEB-INF/factory/data_definitions/base_datadef.xml
bowstreet.pageautomation.uniqueIdGenerationLevel=1



The solution is to create a startup script that sources the WAS profile before starting Eclipse - something like this: -

#!/bin/sh
source /opt/ibm/BPM/v8.0/profiles/ProcCtr01/bin/setupCmdLine.sh 
/root/eclipse/eclipse




No comments:

Note to self - use kubectl to query images in a pod or deployment

In both cases, we use JSON ... For a deployment, we can do this: - kubectl get deployment foobar --namespace snafu --output jsonpath="{...