Saturday 30 June 2012

IBM Connections - "Security role to user/group mapping" reset after installing/uninstalling maintenance updates

I saw this in my IBM Connections Fixes RSS feed a few days back: -

Problem

"Security role to user/group mapping" is reset after installing or uninstalling maintenance updates.

Cause

"Security role to user/group mapping" information is written in the each application's ear (ex. Blogs.ear).
When maintenance update is installed or uninstalled, the fix application process repackages the EAR, then calls to re-install the EAR. It forces the node synchronization which overwrites what's actually there in DM and Node config directory.

Environment

All Platforms

Resolving the problem

If you have customized security role mappings in the WebSphere Application Server Integrated Solutions Console for the IBM Connections applications, these customized security roles will be needed to be re-mapped.

Tuesday 26 June 2012

Ooops, IBM HTTP Server and Red Hat Enterprise Linux

Saw this the other day, having installed IHS on Red Hat Enterprise Linux 6.2

...
[Fri Jun 22 21:01:04 2012] [notice] Using config file /opt/IBM/HTTPServer/conf/httpd.conf
[Fri Jun 22 21:01:04 2012] [notice] IBM_HTTP_Server/7.0.0.0 (Unix) configured -- resuming normal operations
[Fri Jun 22 21:01:04 2012] [notice] Core file limit is 0; core dumps will be not be written for server crashes
libgcc_s.so.1 must be installed for pthread_cancel to work
[Fri Jun 22 21:01:04 2012] pid 19395 mod_backtrace backtrace for sig 6 (thread "pid" 19395)
[Fri Jun 22 21:01:04 2012] pid 19395 mod_backtrace main() is at 8062200
[Fri Jun 22 21:01:04 2012] pid 19395 mod_backtrace end of backtrace

...

The problem was swiftly resolved with: -

$ yum install libgcc_s.so.1


TECH-P09 Web Application Bridge (WAB): “No Coding!” Integration Style for External Web Applications in WebSphere Portal

Saw this: -

TECH-P09 Web Application Bridge (WAB): "No Coding!" Integration Style for External Web Applications in WebSphere Portal

Jason Cornell, Product Manager, IBM Web Content Manager
Samit Narula, Web Experience Software Developer, IBM

The enterprise today provides web experience through multiple web applications which are non-uniform in technology used, standards followed, and so on. Web Application Bridge, aka WAB, as a technology allows an enterprise to use its existing or acquired infrastructure, however heterogeneous it might be, to be integrated within WebSphere Portal. Internally, WAB uses the latest features that the WebSphere platform offers. It provides an agile integration approach for legacy as well as the latest web applications, without needing to tap into exposed APIs or requiring any developer involvement. Another useful aspect of WAB is to facilitate a message-driven integration style that can even make different web applications interact with each other. Any deployment professional armed with just the knowledge of the topology and security environment of a web application can surface it within the WebSphere Portal using WAB. This session will provide details on what makes WAB such a potent integration mechanism. We will provide insights on how to integrate different types of web applications, how various authentication mechanisms can be configured for trust association, how WAB allows the external web application to be a part of the Portal collaboration environment, and trips and tricks for administrators.

on the WebSphere Portal Family Wiki.

It's a 53-minute video of a session that Jason and Samit gave at the recent Exceptional Web Experience conference in Austin, TX.

Definitely worth a watch ...

Running IBM HTTP Server via Linux scripts and sudo

This is to allow non-root users to start and stop IHS via sudo scripts. It also allows IHS to automatically start following a server restart.

As root


(1) Copy the init scripts into place

$ cp ~/ibmhttp* /etc/init.d/

(2) Set executable permissions

$ chmod a+x /etc/init.d/ibmhttp*

(3) Register the services

$ chkconfig --add ibmhttpd
$ chkconfig --add ibmhttpadmin

(4) Check the autostart options

$ chkconfig --list | grep ibm

ibmhttpadmin       0:off    1:off    2:off    3:on    4:on    5:on    6:off
ibmhttpd           0:off    1:off    2:off    3:on    4:on    5:on    6:off


(5) Add to the /etc/sudoers file

Add: -

hayd    ALL=NOPASSWD: /sbin/service ibmhttpd *
hayd    ALL=NOPASSWD: /sbin/service ibmhttpadmin *


to the end of /etc/sudoers.

As the non-root user e.g. hayd

(1) Check the sudo permissions

$ sudo -l

Matching Defaults entries for hayd on this host:
    requiretty, !visiblepw, always_set_home, env_reset, env_keep="COLORS
    DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS", env_keep+="MAIL PS1
    PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE
    LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY
    LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL
    LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
    secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin

User hayd may run the following commands on this host:
    (root) NOPASSWD: /sbin/service ibmhttpd *
    (root) NOPASSWD: /sbin/service ibmhttpadmin *


(2) Test the scripts

$ sudo /sbin/service ibmhttpd status

IBM HTTP Server is not running:

$ sudo /sbin/service ibmhttpadmin status

IBM HTTP Server is not running:

(3) Use the scripts

$ sudo /sbin/service ibmhttpd start

Starting IBM HTTP Server:                                  [  OK  ]

$ sudo /sbin/service ibmhttpadmin start

Starting IBM HTTP Server: /opt/IBM/HTTPServer/bin/adminctl start: admin http started
                                                           [  OK  ]

(4) Check processes and logs

$ ps auxw | grep -i httpd

root     22928  0.0  0.1   5488  2664 ?        Ss   01:02   0:00 /opt/IBM/HTTPServer/bin/httpd -d /opt/IBM/HTTPServer -k start
nobody   22930  0.0  0.0   5076  1444 ?        S    01:02   0:00 /opt/IBM/HTTPServer/bin/httpd -d /opt/IBM/HTTPServer -k start
nobody   22931  0.0  0.0   5488  1712 ?        S    01:02   0:00 /opt/IBM/HTTPServer/bin/httpd -d /opt/IBM/HTTPServer -k start
nobody   22932  0.0  0.0 283220  1844 ?        Sl   01:02   0:00 /opt/IBM/HTTPServer/bin/httpd -d /opt/IBM/HTTPServer -k start
root     23100  0.0  0.0   4312  1512 ?        Ss   01:14   0:00 /opt/IBM/HTTPServer/bin/httpd -f /opt/IBM/HTTPServer/conf/admin.conf
root     23102  0.0  0.0   4304   788 ?        S    01:14   0:00 /opt/IBM/HTTPServer/bin/httpd -f /opt/IBM/HTTPServer/conf/admin.conf
ihsadmin 23103  0.0  0.1  77164  3468 ?        Sl   01:14   0:00 /opt/IBM/HTTPServer/bin/httpd -f /opt/IBM/HTTPServer/conf/admin.conf


$ netstat -aon | grep 80

tcp        0      0 :::80                       :::*                        LISTEN      off (0.00/0/0)
tcp        0      0 :::8008                     :::*                        LISTEN      off (0.00/0/0)


$ cat /opt/IBM/HTTPServer/logs/error.log

[Sat Jun 23 01:02:03 2012] [notice] PLUGIN: mod_was_ap22_http: apache_log_header: WebSphere Plugins loaded.
[Sat Jun 23 01:02:03 2012] [notice] PLUGIN: mod_was_ap22_http: apache_log_header: --------------------Plugin Information-----------------------
[Sat Jun 23 01:02:03 2012] [notice] PLUGIN: mod_was_ap22_http: apache_log_header: Bld version: 7.0.0
[Sat Jun 23 01:02:03 2012] [notice] PLUGIN: mod_was_ap22_http: apache_log_header: Bld date: Aug 19 2008, 23:45:47
[Sat Jun 23 01:02:03 2012] [notice] PLUGIN: mod_was_ap22_http: apache_log_header: Webserver: IBM_HTTP_Server
[Sat Jun 23 01:02:03 2012] [notice] PLUGIN: mod_was_ap22_http: apache_log_header: --------------------------------------------------------------
[Sat Jun 23 01:02:03 2012] [notice] Using config file /opt/IBM/HTTPServer/conf/httpd.conf
[Sat Jun 23 01:02:03 2012] [notice] IBM_HTTP_Server/7.0.0.0 (Unix) configured -- resuming normal operations
[Sat Jun 23 01:02:03 2012] [notice] Core file limit is 0; core dumps will be not be written for server crashes


$ cat /opt/IBM/HTTPServer/Plugins/logs/webserver1/http_plugin.log

[Sat Jun 23 01:02:03 2012] 00005990 f77276c0 - ERROR: lib_security: loadSecurityLibrary: Failed to load gsk library from /opt/IBM/HTTPServer/Plugins/gsk7/gsk7_32
[Sat Jun 23 01:02:03 2012] 00005990 f77276c0 - ERROR: ws_transport: transportInitializeSecurity: Unable to load security library
[Sat Jun 23 01:02:03 2012] 00005990 f77276c0 - ERROR: ws_server: serverAddTransport: Failed to initialize security
[Sat Jun 23 01:02:03 2012] 00005990 f77276c0 - ERROR: ws_server: serverAddTransport: HTTPS Transport is skipped
[Sat Jun 23 01:02:03 2012] 00005990 f77276c0 - PLUGIN: Plugins loaded.
[Sat Jun 23 01:02:03 2012] 00005990 f77276c0 - PLUGIN: --------------------System Information-----------------------
[Sat Jun 23 01:02:03 2012] 00005990 f77276c0 - PLUGIN: Bld version: 7.0.0
[Sat Jun 23 01:02:03 2012] 00005990 f77276c0 - PLUGIN: Bld date: Aug 19 2008, 23:43:56
[Sat Jun 23 01:02:03 2012] 00005990 f77276c0 - PLUGIN: Webserver: IBM_HTTP_Server
[Sat Jun 23 01:02:03 2012] 00005990 f77276c0 - PLUGIN: Hostname = rhel6.uk.ibm.com
[Sat Jun 23 01:02:03 2012] 00005990 f77276c0 - PLUGIN: NOFILES = hard: 1024, soft: 1024
[Sat Jun 23 01:02:03 2012] 00005990 f77276c0 - PLUGIN: MAX COREFILE SZ = hard: INFINITE, soft: 0
[Sat Jun 23 01:02:03 2012] 00005990 f77276c0 - PLUGIN: DATA = hard: INFINITE, soft: INFINITE
[Sat Jun 23 01:02:03 2012] 00005990 f77276c0 - PLUGIN: --------------------------------------------------------------


( I'll come back to the security related errors later )

(5) Test the site via a browser i.e. http://localhost:80 or similar

(6) Reboot the server and check that the httpd tasks automatically start.

Enhancing WebSphere Portal & IBM Content Manager with Elastic Caching - Webcast - 18 July 2012

This popped up in my River of News earlier today: -

Websites and applications have become progressively more complex as our industry's technologies and methodologies advance. The load capacity and response times of modern applications are increasingly constrained by access to back-end datastores such as content repositories and general database systems which are difficult to scale up. Caching of content by applications as done by WebSphere's Dynamic Caching service can help with this problem but runs into a number of limitations including invalidation/consistency problems and application server memory constraints. 

WebSphere eXtreme Scale and the XC10 caching appliance can help address these challenges. If you are looking to improve customer experience by providing a basis for faster, more reliable web sites, the WebSphere eXtreme Scale product family offers an implementation of dynacache which stores cached content in an in-memory elastic data grid instead of using the default dynacache implementation which stores cached content in WebSphere Application Server heap space or on disk. There are numerous advantages to this configuration such as: caches can be much larger than what the application server heap would otherwise support while not paying the penalty of storing on disk, caches are shared between application server instances, and cached content can survive an application server restart. This implementation can be enabled without requiring any application code changes. 

Join us for a free webcast to learn: 

The benefits of distributed in-memory data grids aimed at high-performance/high-scale data-intensive applications 
Details surrounding the WebSphere eXtreme Scale dynacache provider 
The performance benefits achieved from moving a Portal Dynacache instance into a data grid hosted by an DataPower XC10 caching appliance 
The configuration steps needed to enable the WebSphere eXtreme Scale dynacache provider

Speakers: 

Yakura Coffee, Product Manager, IBM

https://event.on24.com/event/48/95/81/rt/1/speakerbios/speakerbios_customHTML1_1/yakura.jpg

Benjamin Parees, Senior Software Engineer, IBM

https://event.on24.com/event/48/95/81/rt/1/speakerbios/speakerbios_customHTML1_2/benjamin.jpg

Want to attend ? Then click here for the details.

Thursday 21 June 2012

Required Reading - WebSphere Application Server V7: Session Management

Session support allows a Web application developer to maintain state information across multiple user visits to the application. In this IBM® Redpaper™ publication, we discuss HTTP session support in WebSphere® Application Server V7 and how to configure it. We also discuss the support for stateful session bean failover.

This paper is the stand-alone version of chapter 12 of WebSphere Application Server V7 Administration and Configuration Guide, SG24-7615.

Table of contents
  • HTTP session management
  • Session manager configuration
  • Session identifiers
  • Local sessions
  • General properties for session management
  • Session affinity
  • Persistent session management
  • Invalidating sessions
  • Session security
  • Session performance considerations
  • Stateful session bean failover

Wednesday 20 June 2012

IBM Connections and NFS file locking

This from my mate, Ben, and is absolutely worth reading if you use IBM Connections and NFS.

...

A customer moved the shared storage (NAS) that Connections uses to new hardware. Check out by the testers showed that Connections was functioning correctly but by Monday morning it was apparent there were problems.

...


In brief, the client experienced an issue with the Red Hat Enterprise Linux nfslock service, which needs to be restarted. In addition, NFS v4 is recommended as it has better file-locking support.

Here's Ben's post: -


Tuesday 19 June 2012

Open Mic Webcast: WebSphere Portal Performance Tuning and Troubleshooting - 26 June 2012

Abstract

IBM will host an Open Mic webcast with Lotus Development and Support Engineers on 26 June 2012. The topic will be "WebSphere Portal Performance Tuning and Troubleshooting."

Content

During this virtual event, you will be able to chat with WebSphere Portal performance engineers. You can also post questions in advance by posting your questions as responses to this forum post.

Please join us to discuss your performance tuning and troubleshooting issues with WebSphere Portal performance Support and Development engineers.

Date: 26 June 2012

Time: 11:00 AM EDT (15:00 UTC, or GMT -4), for 60 minutes

For more information, please see the IBM Technote here.

Content Collector for IBM Connections

Stop just archiving. Start using your information.

• Content Collector for IBM Connections supports archiving files, wikis, blogs, forums, profiles, and activities.
• Content is collected, archived, indexed, and made available to search tools including eDiscovery Manager
• Content Collector for IBM Connections complements the other members of the Content Collector family of products, enabling content from all source systems - email, file systems, Microsoft SharePoint to be accessed from a single eDiscovery Manager search
• IBM Connections content hierarchies are maintained in the archive
• Upon retrieval by eDiscovery Manager, content is rendered in context and high fidelity
• Content Collector for IBM Connections requires FileNet Content Manager or Content Manager Enterprise Edition as a repository and leverages the capabilities of the chosen repository

Want to know more ? Then please visit this link: -

Configuring Firefox to work with SPNEGO / Kerberos

I've spoken and presented at length on the solution to provide desktop Single Sign-On (SSO) between Microsoft Windows and WebSphere Application Server: -


and made reference to the option to also configure Mozilla Firefox to support SPNEGO via the network.negotiate-auth.trusted-uris property


However, what I hadn't mentioned was that one can add multiple sites into this field.

What I'd failed to remember is that the separator to be used is a comma (,) - which explained why SSO wasn't working for the second and third sites :-)


Thankfully, this site - Enabling NTLM Authentication (Single Sign-On) in Firefox - came to the rescue. Since Matt Sivel wrote his post, Mozilla have deprecated the network.automatic-ntlm-auth.trusted-uris setting, replacing it with network.negotiate-auth.trusted-uris.

However, Matt's point about the comma saved me :-)




Monday 18 June 2012

Multimedia Library for IBM Connections, Multimedia Library for IBM Quickr , Multimedia Library for IBM Sametime , Multimedia Library for IBM Lotus iNotes increases productivity

I'm a big fan of the MML solutions, especially as part of an end-user / business adoption process.

Therefore, I'm pleased to see that IBM has now moved the MML solution into Passport Advantage (PPA): -

Multimedia Libraries are software-specific, individual collections of video tutorials that show end users how to perform tasks. Use these Multimedia Libraries to enhance skills development:

• Multimedia Library for IBM Quickr 8.2 and 8.5.x
• Multimedia Library for IBM Sametime 8.x
• Multimedia Library for IBM Lotus iNotes
• Multimedia Library for IBM Connections 3.0
Each Multimedia Library contains between 275 and 350 tutorials, delivered right to the desktop. Collections are useful to help users develop skills needed to increase productivity and reduce help desk calls.

Benefits

• Affordable, enterprise-licensed solution
• Available in 11 languages
• Helps reduce skill-based support calls
• Contains individual clips that can be shared via email to prepare for a product rollout or upgrade
• Includes step-by-step text instructions
• Can be embedded into the IBM Lotus Notes® client or posted to an intranet

The full announcement is here: -

Friday 15 June 2012

Is it London or is it Coruscant ?

Coruscant



London

Photo: Coruscant Cityscape

Seriously, the first picture is, of course, London, as seen in this most excellent BBC News video: -


which I'd urge you to check out - even with the sound off, it's an amazing collection of still shots, shot from, around and within The Shard, which is currently Europe's tallest building.

The Coruscant image is taken from Jack Shelley's post in the Planetizen blog here, and I thank him for sharing it.

The Shard also has its own web site here and outlines the restaurants, hotel, offices and residential options available.

I, for one, would love to have dinner there when it fully opens later in 2012.

Enjoy :-)


Thursday 14 June 2012

Patching IBM HTTP Server and WebSphere Plugin Java SDKs

  When patching a WAS environment, there are four things that we usually patch: -

  • IBM HTTP Server
  • IBM WebSphere Plugin
  • IBM WebSphere Java Software Development Kit (SDK)
  • IBM WebSphere Application Server

but we often forget that there are two other Java SDKs to patch: -

  • IBM HTTP Server Java SDK ( /opt/IBM/HTTPServer/java/jre )
  • IBM WebSphere Plugin Java SDK ( /opt/IBM/HTTPServer/Plugin/java/jre )

The Plugin can use the same Java SDK fix pack as WAS, but you may well find that the IHS SDK needs a different one.

This will be definitely be the case for 64-bit Linux, as IHS is only available as a 32-bit binary, and the SDK will have the same "bitness".

As an example, here's a before and after for an IHS SDK update: -

Before applying the WAS 7.0.0.17 Java SDK fix

 $ /opt/IBM/HTTPServer/java/jre/bin/java -version

java version "1.6.0"
Java(TM) SE Runtime Environment (build pxi3260sr2-20080818_01(SR2))
IBM J9 VM (build 2.4, J2RE 1.6.0 IBM J9 2.4 Linux x86-32 jvmxi3260-20080816_22093 (JIT enabled, AOT enabled)
J9VM - 20080816_022093_lHdSMr
JIT  - r9_20080721_1330ifx2
GC   - 20080724_AA)
JCL  - 20080808_02

After applying the WAS 7.0.0.17 Java SDK fix

$ /opt/IBM/HTTPServer/java/jre/bin/java -version

java version "1.6.0"
Java(TM) SE Runtime Environment (build pxi3260sr9fp1ifix-20110401_01(SR9 FP1+IZ95392+IZ95393+IZ97453))
IBM J9 VM (build 2.4, JRE 1.6.0 IBM J9 2.4 Linux x86-32 jvmxi3260sr9-20110216_75791 (JIT enabled, AOT enabled)
J9VM - 20110216_075791
JIT  - r9_20101028_17488ifx4
GC   - 20101027_AA)
JCL  - 20110401_02

I'll add more details about the other fixes later ....

IBM Tivoli Directory Integrator and SSL

We saw this error today: -

2012-06-14 16:09:04,360 INFO  [AssemblyLine.AssemblyLines/populate_from_dns_file.1] - [PopFromDns_lookup_dn] [lookup_user] CTGDIS495I handleException , initialize, javax.naming.CommunicationException: simple bind failed: ldap.uk.ibm.com:636 [Root exception is javax.net.ssl.SSLHandshakeException: com.ibm.jsse2.util.h: PKIX path building failed: java.security.cert.CertPathBuilderException: PKIXCertPathBuilderImpl could not build a valid CertPath.; internal cause is:

        java.security.cert.CertPathValidatorException: The certificate issued by O=UK,O=IBM,O=COM is not trusted; internal cause is:

        java.security.cert.CertPathValidatorException: Certificate chaining error]
2012-06-14 16:09:04,362 ERROR [AssemblyLine.AssemblyLines/populate_from_dns_file.1] - [PopFromDns_lookup_dn] [lookup_user] CTGDIS810E handleException - cannot handle exception , initialize

javax.naming.CommunicationException: simple bind failed:
ldap.uk.ibm.com:636 [Root exception is javax.net.ssl.SSLHandshakeException: com.ibm.jsse2.util.h: PKIX path building failed: java.security.cert.CertPathBuilderException: PKIXCertPathBuilderImpl could not build a valid CertPath.; internal cause is:

        java.security.cert.CertPathValidatorException: The certificate issued by O=UK,O=IBM,O=COM is not trusted; internal cause is:

        java.security.cert.CertPathValidatorException: Certificate chaining error]

in a new IBM Connections 3.0.1 environment, when running: -

$ ./populate_from_dn_file.sh

Having followed my own advice to check / update the SSL certificates: -

/opt/IBM/TDI/V7.0/jvm/jre/bin/keytool -list -keystore /opt/IBM/TDI/V7.0/jvm/jre/bin/keystore.jks -storepass passw0rd

but I was still getting the same exception, and was starting to question my sanity.

Then I Google'd the error and found this thread: -

SSL to Active directory

<snip>
* The error of "The certificate issued by CN=minca, DC=ad, DC=huseby,
DC=com is not trusted" is probably an issue of the TDI Server pointing
to the wrong JKS file
, or you do not have all the required public
certificates in the trustStore to validate the certificate presented
by the AD Server.

* Enable the "javax.net.debug=true" in the solution.properties.  By
doing this, more information about the SSL handshake between the TDI
server and AD machine will be dumped to the TDI Config Editor console
log.  Have a review the output..towards the top of the log you will be
able to validate which JKS files the server is using.  You should also
be able to read through the logs..and see which certificate is causing
the problem. 
</snip>

I checked further, and found that we were missing BOTH of the following files: -

/opt/IBM/TDI/V7.0/tdisol_AD/TDI/solution.properties
/opt/IBM/TDI/V7.0/tdisol_AD/TDI/etc/global.properties

The key lines are: -

javax.net.ssl.trustStore=/opt/IBM/TDI/V7.0/jvm/jre/bin/keystore.jks
javax.net.ssl.trustStorePassword=passw0rd
javax.net.ssl.trustStoreType=jks

It seems that solution.properties is the more critical of the two files: the problem didn't go away until I updated solution.properties, so I'm guessing that global.properties is ignored, perhaps because we are using a solution directory: -

/opt/IBM/TDI/V7.0/tdisol_AD/TDI

especially as the forum thread also said: -

<snip>
* Are you using a Solution Directory, or the Install Directory as the
base for your TDI solutions?
Depending on the answer, you will either be using the
global.properties or solution.properties file.
* I will assume you are using the solution.properties file in your
Solution Directory.
</snip>

*UPDATE*

A friend asked whether I'd seen similar problems when running collect_dns.sh. This is my response: -


Thanks for the email - I didn't explicitly run collect_dns.sh but instead using populate_from_dn_file.sh, reading from a hand-edited collect.dns file.

The failure was, I think, on our part - the solution.properties file hadn't been defined, so ITDI didn't know where to go to get at the keystore.jks file.

I'm guessing that, because we chose to use a solution directory, created AFTER the ITDI installation and because the etc/global.properties doesn't reference the specific keystore, this wasn't ever going to work.

Comment lines: Tom Alcott: Everything you always wanted to know about WebSphere Application Server but were afraid to ask

This is a rather useful series of articles to which I often return, most recently today when advising a colleague about cross-data centre WAS cells.

<snip>
Additionally, I'm going to assume that you are not going to run a single WebSphere Application Server cell across two data centers; this is a very bad idea and should not be considered for all the reasons I've mentioned before.
</snip>






Definitely worth a read .....

Wednesday 13 June 2012

There's something new for IBM WebSphere Portal and IBM Web Content Manager

Getting Started with Your Web Experience is an online application that hosts tutorials to help you become familiar with WebSphere Portal and Web Content Manager. The content developers for those products will continue to create new tutorials over the next few months. 

Today you can use the tutorials to learn how to install WebSphere Portal and configure it to work with a DB2 database. Coming soon are tutorials about Web Content Manager and Portal fundamentals, how to start setting up a content management system and more.

Table of Contents
• 1 Roles
• 2 Learn the Basics
• 3 Beyond the Basics
• 4 Special Features
• 5 Printed Editions
• 6 About Browsers
• 6.1 Potential Browser Issues

IBM Web Content Manager - Cleanup of WCM versions

This from my IBM colleague, Thomas Hurek

When you install WebSphere Portal / Web Content Manager version 7 and 8 versioning is enabled by default. That means whenever you update a WCM artifact an additional version is created. After some time you have a lot of versions and this can slow down your system. 

If you want to find out how many version nodes you have you can run the following SQL query and check for the number of entries in the jcr:versioning workspace (replace JCR with the according schema):

SELECT JCR.ICMSTJCRWS.WSID AS WORKSPACE_ID, WSNAME AS WORKSPACE_NAME, COUNT(*) AS NODE_COUNT 
FROM JCR.ICMSTJCRWSNODES, JCR.ICMSTJCRWS 
WHERE JCR.ICMSTJCRWSNODES.WSID > 0 AND JCR.ICMSTJCRWS.WSID = JCR.ICMSTJCRWSNODES.WSID 
GROUP BY JCR.ICMSTJCRWS.WSID, WSNAME


My recommendation is to only enable versioning for the design items and keep versioning set to manual for content items and site areas.

Want to know more ? Then read the rest of Thomas' article here.



DB2 UDB - Getting information about table size, state etc.

Found this: -


whilst looking for a mechanism to determine the size, in KB, of DB2 database tables.

The ADMINTABINFO administrative view returns size and state information for tables, materialized query tables (MQT) and hierarchy tables only. These table types are reported as T for table, S for materialized query tables and H for hierarchy tables in the SYSCAT.TABLES catalog view. The information is returned at both the data partition level and the database partition level for a table.

The schema is SYSIBMADM.

Example 1: Retrieve size and state information for all tables

SELECT * FROM SYSIBMADM.ADMINTABINFO

Example 2: Determine the amount of physical space used by a large number of sparsely populated tables.

SELECT TABSCHEMA, TABNAME, SUM(DATA_OBJECT_P_SIZE), 
   SUM(INDEX_OBJECT_P_SIZE), SUM(LONG_OBJECT_P_SIZE), 
   SUM(LOB_OBJECT_P_SIZE), SUM(XML_OBJECT_P_SIZE)
   FROM SYSIBMADM.ADMINTABINFO GROUP BY TABSCHEMA, TABNAME

Example 3: Identify tables that are eligible to use large RIDs, but are not currently enabled to use large RIDs.

SELECT TABSCHEMA, TABNAME FROM SYSIBMADM.ADMINTABINFO 
   WHERE LARGE_RIDS = 'P'

Example 4: Identify which tables are using type-1 indexes and require a reorganization to convert to type-2 indexes.

SELECT TABSCHEMA, TABNAME FROM SYSIBMADM.ADMINTABINFO 
   WHERE INDEX_TYPE = 1

Example 5: Identify which tables have XML data in type-1 format and require an online table move to convert to type-2 format.

SELECT TABSCHEMA, TABNAME FROM SYSIBMADM.ADMINTABINFO
   WHERE XML_RECORD_TYPE=1

Example 4 (sic): Check the current type of statistics information collected for table T1

SELECT SUBSTR(TABSCHEMA, 1, 10) AS TBSCHEMA, SUBSTR(TABNAME, 1, 10) 
   AS TBNAME, STATSTYPE FROM SYSIBMADM.ADMINTABINFO WHERE TABNAME = 'T1';

TBSCHEMA   TBNAME     STATSTYPE
---------- ---------- ---------
DB2USER1   T1         U        

  1 record(s) selected.

plus: -

ADMIN_GET_TAB_INFO_V97 table function

The ADMIN_GET_TAB_INFO_V97 table function returns the same information as the ADMINTABINFO administrative view, but allows you to specify a schema and table name.

Example 1: Retrieve size and state information for the table DBUSER1.EMPLOYEE.

SELECT * FROM TABLE (SYSPROC.ADMIN_GET_TAB_INFO_V97('DBUSER1', 'EMPLOYEE')) 
   AS T

Example 2: Suppose there exists a non-partitioned table (DBUSER1.EMPLOYEE), with all associated objects (for example, indexes and LOBs) stored in a single table space. Calculate how much physical space the table is using in the table space:

SELECT (data_object_p_size + index_object_p_size + long_object_p_size + 
   lob_object_p_size + xml_object_p_size) as total_p_size 
   FROM TABLE( SYSPROC.ADMIN_GET_TAB_INFO_V97( 'DBUSER1', 'EMPLOYEE' )) AS T

Calculate how much space would be required if the table were moved to another table space, where the new table space has the same page size and extent size as the original table space:

SELECT (data_object_l_size + index_object_l_size + long_object_l_size + 
   lob_object_l_size + xml_object_l_size) as total_l_size 
   FROM TABLE( SYSPROC.ADMIN_GET_TAB_INFO_V97( 'DBUSER1', 'EMPLOYEE' )) AS T

Example 3: Determine the total size for the compression dictionaries for the table DBUSER1.EMPLOYEE.

SELECT SUBSTR(TABSCHEMA,1,10) AS TBSCHEMA, SUBSTR(TABNAME,1,10) AS TBNAME, 
   DICTIONARY_SIZE + XML_DICTIONARY_SIZE AS TOTAL_DICTIONARY_SIZE
   FROM TABLE(SYSPROC.ADMIN_GET_TAB_INFO_V97('DBUSER1','EMPLOYEE'))

Example 4: Determine the amount of space reclaimable from a multidimensional clustering table SAMPLE.STAFF:

SELECT RECLAIMABLE_SPACE 
   FROM TABLE(SYSPROC.ADMIN_GET_TAB_INFO_V97('SAMPLE','STAFF'))


Syncing Notes from iPad to iTunes to iPhone to iCloud ….

Have started making use of the Notes app on the iPad, and was annoyed that I'd left a particular note ( my book list ) on the iPad, which was safely at home whilst I was out book-shopping with my iPhone.

Having enabled iCloud on both devices, I'd assumed that the notes would magically pass through the ether from one device to another.

However, I've subsequently learned that that is ONLY the case for NEW notes i.e. ones created AFTER the iCloud integration was enabled.

This discussion thread on the Apple site helped me here: -


including: -

<snip>
Only notes that you created after you set up your iCloud account will sync btw your iPad and iPhone.

If you have a number of notes that you want to sync, copy the text and paste into a new note.  Then delete the old one.  A little tedious, but works.
</snip>

and, more importantly, this: -

<snip>
I found a good way to do this (on a Mac, I don't know about Windows):

1) First you'll need to sync your iPhone/iPad with iTunes. Make sure you've checked the box to "Sync Notes" under "Other" on the "Info" panel of you device. Also, make sure to uncheck the box for "Replace information on this phone" in the "Advanced" pane and resolve any conflicts properly.

2) Once your notes are identical on your computer and your iPhone/iPad, open up Mail.app on your COMPUTER and scroll down your accounts tab on the left (panel may be hidden by default) until you find the "Reminders" section. You should have a "Notes" section that has several accounts. Mine had notes from a Gmail acct, "On My Mac", and "iCloud".

3) Merge all the notes from the "On My Mac" acct and any others you need by selecting them all and dragging them to the "iCloud" acct. Once you're sure they're there, check back on your device that all your notes are now populating in the "iCloud" acct. (this may take 30 secs or so.)

4) Optional: I then deleted the gmail notes folder and the "On My Mac" folder to make sure any new notes would be created in the iCloud acct. I don't know if this will work or not.

 5) Fianally, I deleted all the notes from the other accounts on my iPhone. I had to do this one at a time, which sucked, but someone my find a faster way. All I know is it works.
</snip>

For me, with a small number of notes, steps (1) and (2) did the job - once I enabled Notes to sync from the iPad via iTunes, they were immediately available in the Mac mail app, and also on the iPhone ( perhaps because I'd previously set Notes to sync ).

I then created a new note on the iPad, and can see it on the iPhone.

Job done :-)

Aide Memoire - Checking fixes and fix packs applied to IBM Connections 3.0.1

I've applied a lot of fixes to a lot of IBM Connections environments over the past few years, but I'd forgotten how to check what is actually applied.

Thankfully, a fairly quick Internet search reminded me of the -fix and -fixpack options of the Update Installer.

As an example, here's one of our non-production IC 3.0.1 environments: -

$ . /opt/IBM/WebSphere/AppServer/profiles/Dmgr01/bin/setupCmdLine.sh 
cd /opt/IBM/LotusConnections/updateInstaller 
./updateSilent.sh -fix -installDir /opt/IBM/LotusConnections/

Listing installed fixes: 
  Fix name: LO63004 
  Fix name: LO62254 
  Fix name: LO66468 
  Fix name: LO60006 
  Fix name: LO63965 
  Fix name: LO61851 
  Fix name: LO64314


$ . /opt/IBM/WebSphere/AppServer/profiles/Dmgr01/bin/setupCmdLine.sh 
cd /opt/IBM/LotusConnections/updateInstaller 
./updateSilent.sh -fixpack -installDir /opt/IBM/LotusConnections/

Listing installed fix packs: 
  No fix packs are currently installed.

Simple as ever

Lotus Notes - Internet Emails and Images

I've seen this a few times recently - colleagues and partners send me emails, which include images i.e. signature blocks etc. but the images come through as attachments rather than in-line.

I had this issue myself last year - I was emailing a large community of people, and was using their internet addresses i.e. david_hay@uk.ibm.com rather than their Notes IDs i.e. Dave Hay/UK/IBM.

This is easily resolved in the Notes location document, as follows: -


In other words, change Format for messages address to internet addresses from Notes Rich Text Format to MIME Format.

This Wiki article says it much better :-)


Caveat: It goes without saying, but I'll say it anyway, if in doubt about this setting, please check with your Domino administrator - there may be a good reason why it's set other than MIME Format.


Monday 11 June 2012

Troubleshooting Guide for WebSphere Application Server

Saw this on Twitter from @IBM_AppServer 

Abstract

The Troubleshooting Guide helps you get started on the troubleshooting process. It takes you through the process of identifying which component is causing the problem, finding the appropriate troubleshooting information, then collecting any necessary MustGather information, and finally submitting a problem to IBM® Support.


Security Threat and Identity & Access Management Event - 27th June in South Bank

This arrived in my in-box earlier today: -

Driving Towards Optimised Enterprise Security
IBM South Bank
Wednesday 27 June 2012 - 0930-1645


To register or for more details please contact zoeshelley@uk.ibm.com

Thursday 7 June 2012

UK Tivoli User Group Meeting, Tracks include Monitoring, End Point Management, TWS, Storage & Netcool - IBM South Bank - Monday 25 June 2012

Something for the calendar, coming really soon - definitely worth a look if you are interesting in security, workload management, storage management, monitoring, service management etc. etc. etc.

The agenda is being maintained online here and should be finalised by Monday 11 June

IBM Sametime Configuration Validator: now available for download

This from the Sametime Blog: -

I'm happy to let you guys know we have published a new tool designed to help expedite deployment of Sametime server components. The tool is called IBM Sametime Configuration Validator. It's an Eclipse-based tool that our support team developed initially for internal use and now, after some scrubbing and polishing, we're making it available to customers and business partners. Thanks to Jeff Miller and the rest of the team for such a good job.
 
IBM Sametime Configuration Validator does something very simple yet very useful. It harvests the entire configuration of a Sametime environment and validates the settings against a standard validation profile based on best practices and known settings. What it does is totally deterministic, i.e., total grunt work, and very powerful because now you don't have to do it manually.
 
The tool generates reports that tell you how the configuration stands against the standard profile and points out potential problems you may encounter. The report doesn't necessarily tell you that there's something wrong with your configuration. But, based on what's known to work, it'll tell you whether something may potentially go awry. That way you can nip any bad mojo in the bud and go back to relaxing.

as mentioned by @ICSEducation on Twitter.

The tool is available for download here.

Trying to find out what Mac OSX process is using a particular app

I was trying to remove / trash an app from my Mac ( Xcode.app for the record ), but Finder wasn't allowing me to empty the trash, telling me that something was using the app. even though I knew that it was not running.

To find out what, I put the app back into /Applications ( using the "Put Back" option in Finder / Trash, and then opened up a command prompt.

First I looked to see what was left in the Xcode app folder: -

$ find /Applications/Xcode.app/

/Applications/Xcode.app/
/Applications/Xcode.app//Contents
/Applications/Xcode.app//Contents/Resources
/Applications/Xcode.app//Contents/Resources/java-source_Icon.icns

Then I checked to see what was locking that one remaining file - java-source_lcon.icns: _

$ lsof /Applications/Xcode.app/Contents/Resources/java-source_Icon.icns 

COMMAND   PID      USER   FD   TYPE DEVICE SIZE/OFF     NODE NAME
SystemUIS 181 david_hay  txt    REG   14,2    44028 10107074 /Applications/Xcode.app/Contents/Resources/java-source_Icon.icns


Then I killed the process: -

$ kill -9 181

( which caused the OSX menu bar to restart )

Then I checked to see whether the lock had been released: -

lsof /Applications/Xcode.app/Contents/Resources/java-source_Icon.icns 

which reported nowt, nothing, nil, nada.

Then I trashed the app again.

Then I emptied the trash :-)

Job done !

More on automation - this time it's the DB2 UDB 9.7.0.2 fixpack ....

Following on from my earlier posts: -

Following the script - installing IBM DB2 UDB using a response file ( silent installation )
Validating a successful DB2 UDB installation

I've also run through the process to automate the deployment of the 9.7.0.2 fix pack ( other fix packs are available ).

Unpack the fixpack

$ mkdir /tmp/fixpack
$ cd /tmp/fixpack
$ tar xvzf ~/v9.7fp2_linuxx64_universal_fixpack.tar.gz

Check the installed level

$ /tmp/fixpack/universal/db2ls

Install Path                       Level   Fix Pack   Special Install Number   Install Date                  Installer UID
---------------------------------------------------------------------------------------------------------------------
/opt/ibm/db2/V9.7                 9.7.0.1        1                            Mon Jun  4 20:03:18 2012 BST             0

$ /opt/ibm/db2/V9.7/bin/db2level

DB21085I  Instance "db2inst1" uses "64" bits and DB2 code release "SQL09071"
with level identifier "08020107".
Informational tokens are "DB2 v9.7.0.1", "s091114", "IP23034", and Fix Pack
"1".
Product is installed at "/opt/ibm/db2/V9.7".


Install the fix pack

$ /tmp/fixpack/universal/installFixPack -b /opt/ibm/db2/V9.7

The execution completed successfully.

For more information see the DB2 installation log at

"/tmp/installFixPack.log.5821".

$ cat /tmp/installFixPack.log.5821

...
Updating DB2 file sets :.......Success
Setting DB2 library path :.......Success
Executing control tasks :.......Success
Updating global registry :.......Success
Starting DB2 Fault Monitor :.......Success
Updating the db2ls link :.......Success
Updating the DB2 Administration Server :.......Success
The instance "db2inst1" has been updated successfully.

The following instances were successfully updated:  db2inst1


Updating existing DB2 instances :.......Success

...

Check the installed level

$ /tmp/fixpack/universal/db2ls

Install Path                       Level   Fix Pack   Special Install Number   Install Date                  Installer UID
---------------------------------------------------------------------------------------------------------------------
/opt/ibm/db2/V9.7                 9.7.0.2        2                            Wed Jun  6 21:58:30 2012 BST             0

$ /opt/ibm/db2/V9.7/bin/db2level

DB21085I  Instance "db2inst1" uses "64" bits and DB2 code release "SQL09072"
with level identifier "08030107".
Informational tokens are "DB2 v9.7.0.2", "s100514", "IP23089", and Fix Pack
"2".
Product is installed at "/opt/ibm/db2/V9.7".




Monday 4 June 2012

Validating a successful DB2 UDB installation

Hot on the heels of my last post - Following the script - installing IBM DB2 UDB using a response file ( silent installation ) - I thought I'd run through the steps to validate my installation: -

Check product levels

$ /opt/ibm/db2/V9.7/bin/db2level

DB21085I  Instance "db2inst1" uses "64" bits and DB2 code release "SQL09071"
with level identifier "08020107".
Informational tokens are "DB2 v9.7.0.1", "s091114", "IP23034", and Fix Pack
"1".
Product is installed at "/opt/ibm/db2/V9.7".


List instances

$ /opt/ibm/db2/V9.7/bin/db2ilist

db2inst1

Log in as the instance owner

$ su - db2inst1

Create a database

$ db2 create db test

SQL0970N  The system attempted to write to a read-only file.  SQLSTATE=55009

This looks familiar -

SQL0970N when running DB2SAMPL on Unix

Check /tmp permissions

$ ls -al /

...
drwxr-xr-x.  23 root root  4096 Jun  4 20:26 tmp
...

Add global write permissions to /tmp, recursively

$ chmod -R a+w /tmp/

Check /tmp permissions

$ ls -al /

...
drwxrwxrwx.  23 root root  4096 Jun  4 20:26 tmp
...

Create the database again

$ db2 create db test

DB20000I  The CREATE DATABASE command completed successfully.

Connect to our new database

$ db2 connect to test

   Database Connection Information

 Database server        = DB2/LINUXX8664 9.7.1
 SQL authorization ID   = DB2INST1
 Local database alias   = TEST


Create a table

$ db2 "create table loanrequests(name varchar(30) not null,custnum varchar(10) not null primary key,amount float not null)"

DB20000I  The SQL command completed successfully.


List the tables

$ db2 list tables

Table/View                      Schema          Type  Creation time            
------------------------------- --------------- ----- --------------------------
LOANREQUESTS                    DB2INST1        T     2012-06-04-20.44.44.189699

  1 record(s) selected.


Describe the table

$ db2 "describe select * from db2inst1.loanrequests"

 Column Information

 Number of columns: 3

 SQL type              Type length  Column name                     Name length
 --------------------  -----------  ------------------------------  -----------
 448   VARCHAR                  30  NAME                                      4
 448   VARCHAR                  10  CUSTNUM                                   7
 480   DOUBLE                    8  AMOUNT                                    6


Insert some data

$ db2 "insert into db2inst1.loanrequests values('Dave Hay','006734',12345.67)"

DB20000I  The SQL command completed successfully.

$ db2
"insert into db2inst1.loanrequests values('Homer Simpson','123456',456.78)"

DB20000I  The SQL command completed successfully.

$ db2
"insert into db2inst1.loanrequests values('Marge Simpson','661222',123.42)"

DB20000I  The SQL command completed successfully.

$ db2
"insert into db2inst1.loanrequests values('Lisa Simpson','123123',21323.23)"

DB20000I  The SQL command completed successfully.

$ db2 "insert into loanrequests values('Bart Simpson','43215',6651.21)"

DB20000I  The SQL command completed successfully.

Query the table

$ db2 "select * from db2inst1.loanrequests"

NAME                           CUSTNUM    AMOUNT                 
------------------------------ ---------- ------------------------
Dave Hay                       006734       +1.23456700000000E+004
Homer Simpson                  123456       +4.56780000000000E+002
Marge Simpson                  661222       +1.23420000000000E+002
Lisa Simpson                   123123       +2.13232300000000E+004
Bart Simpson                   43215        +6.65121000000000E+003

  5 record(s) selected.


Looking good :-)

Following the script - installing IBM DB2 UDB using a response file ( silent installation )

Right, the next instalment of the exciting series: -

Following the script - installing IBM HTTP Server using a response file ( silent installation )
Following the script - installing and using IBM WebSphere Update Installer using a response file ( silent installation )
Following the script - installing IBM Tivoli Directory Integrator using a response file ( silent installation )

is to install DB2 UDB 9.7 using a response file.

For some reason, DB2 doesn't ship with any sample response files on disk, so I needed to run through the GUI installation, and generate a response file. Thankfully, the GUI doesn't actually perform the installation, but merely generates the file - this is of use when installing onto multiple server nodes, especially where there's no GUI available.

So here is the response file in all its glory: -

LIC_AGREEMENT       = ACCEPT
PROD       = ENTERPRISE_SERVER_EDITION
FILE       = /opt/ibm/db2/V9.7
INSTALL_TYPE       = CUSTOM
COMP       = COMMUNICATION_SUPPORT_TCPIP
COMP       = JDK
COMP       = JAVA_SUPPORT
COMP       = BASE_DB2_ENGINE
COMP       = REPL_CLIENT
COMP       = LDAP_EXPLOITATION
COMP       = SQL_PROCEDURES
COMP       = DB2_DATA_SOURCE_SUPPORT
COMP       = BASE_CLIENT
COMP       = CONNECT_SUPPORT
DAS_CONTACT_LIST       = LOCAL
DAS_USERNAME       = dasusr1
DAS_GROUP_NAME       = dasadm1
DAS_HOME_DIRECTORY       = /home/dasusr1
DAS_PASSWORD       = 547728531534502455097246316284412703433439576433541379526367333363795314025447185737070
ENCRYPTED       = DAS_PASSWORD

INSTANCE       = inst1
inst1.TYPE       = ese
inst1.NAME       = db2inst1
inst1.GROUP_NAME       = db2iadm1
inst1.HOME_DIRECTORY       = /home/db2inst1
inst1.PASSWORD       = 547728531534502455097246316284412703433439576433541379526367333363795314025447185737070
ENCRYPTED       = inst1.PASSWORD
inst1.AUTOSTART       = YES
inst1.SVCENAME       = db2c_db2inst1
inst1.PORT_NUMBER       = 50000
inst1.FCM_PORT_NUMBER       = 60000
inst1.MAX_LOGICAL_NODES       = 4
inst1.CONFIGURE_TEXT_SEARCH       = NO
inst1.FENCED_USERNAME       = db2fenc1
inst1.FENCED_GROUP_NAME       = db2fadm1
inst1.FENCED_HOME_DIRECTORY       = /home/db2fenc1
inst1.FENCED_PASSWORD       = 560741752337471467346923905234405983312332393347245601931143497330598141735228590035459
ENCRYPTED       = inst1.FENCED_PASSWORD
LANG       = EN
INSTALL_TSAMP = NO


Note that the generated response file has encrypted passwords. To overcome this, we change the file as follows: -

LIC_AGREEMENT       = ACCEPT
PROD       = ENTERPRISE_SERVER_EDITION
FILE       = /opt/ibm/db2/V9.7
INSTALL_TYPE       = CUSTOM
COMP       = COMMUNICATION_SUPPORT_TCPIP
COMP       = JDK
COMP       = JAVA_SUPPORT
COMP       = BASE_DB2_ENGINE
COMP       = REPL_CLIENT
COMP       = LDAP_EXPLOITATION
COMP       = SQL_PROCEDURES
COMP       = DB2_DATA_SOURCE_SUPPORT
COMP       = BASE_CLIENT
COMP       = CONNECT_SUPPORT
DAS_CONTACT_LIST       = LOCAL
DAS_USERNAME       = dasusr1
DAS_GROUP_NAME       = dasadm1
DAS_HOME_DIRECTORY       = /home/dasusr1
DAS_PASSWORD       = passw0rd
INSTANCE       = inst1
inst1.TYPE       = ese
inst1.NAME       = db2inst1
inst1.GROUP_NAME       = db2iadm1
inst1.HOME_DIRECTORY       = /home/db2inst1
inst1.PASSWORD       = passw0rd
inst1.AUTOSTART       = YES
inst1.SVCENAME       = db2c_db2inst1
inst1.PORT_NUMBER       = 50000
inst1.FCM_PORT_NUMBER       = 60000
inst1.MAX_LOGICAL_NODES       = 4
inst1.CONFIGURE_TEXT_SEARCH       = NO
inst1.FENCED_USERNAME       = db2fenc1
inst1.FENCED_GROUP_NAME       = db2fadm1
inst1.FENCED_HOME_DIRECTORY       = /home/db2fenc1
inst1.FENCED_PASSWORD       = passw0rd
LANG       = EN
INSTALL_TSAMP = NO


In other words, we explicitly set the passwords, and remove the lines: _

ENCRYPTED       = inst1.PASSWORD
ENCRYPTED       = DAS_PASSWORD
ENCRYPTED       = inst1.FENCED_PASSWORD

(a) Unpack the product

$ cd /tmp
$ tar xvf /mnt/Products/DB297/db297linux64.tar

(b) Place the response file in a suitable location - I chose /root

(c) Install the product

$ cd /tmp/ese
$ ./db2setup -r /root/db2ese.rsp

(d) Wait a bit - my installation took ~22 minutes

DB2 Setup log file started at:  Mon Jun  4 19:52:43 2012 BST
DB2 Setup log file finished at:  Mon 04 Jun 2012 20:14:00 BST BST


(e) Check the log

$ cat /tmp/db2setup.log

...
Installing DB2 file sets :.......Success
Setting DB2 library path :.......Success
Executing control tasks :.......Success
Updating global registry :.......Success
The installation of IBM Tivoli Monitoring for Databases  has completed. The log
file can be found at /opt/ibm/db2/V9.7/itma/logs/itm_install.log.

Starting DB2 Fault Monitor :.......Success
Updating the db2ls link :.......Success
Registering DB2 licenses :.......Success
Setting default global profile registry variables :.......Success
Creating the DB2 Administration Server :.......Success
Initializing instance list :.......Success
Command to be run: "cd /opt/ibm/db2/V9.7/;/opt/ibm/db2/V9.7/instance/db2icrt -a server -s ese -u db2fenc1 -p db2c_db2inst1 db2inst1".
The instance "db2inst1" has been created successfully.

The value "SVCENAME=db2c_db2inst1" was set in the DBM CFG file for the
"db2inst1" instance.

The value "DB2AUTOSTART=YES" was set in the Profile Registry for the "db2inst1"
instance.

Configuring DB2 instances :.......Success
Configuring the DB2 Administration Server :.......Success
Updating global profile registry :.......Success
...

(f) Check the product's version

$ /opt/ibm/db2/V9.7/bin/db2level

DB21085I  Instance "db2inst1" uses "64" bits and DB2 code release "SQL09071"
with level identifier "08020107".
Informational tokens are "DB2 v9.7.0.1", "s091114", "IP23034", and Fix Pack
"1".
Product is installed at "/opt/ibm/db2/V9.7".

I'll cover the 9.7.0.2 fix pack installation at a later date, once I've downloaded the 600 MB file from here :-)


Following the script - installing IBM Tivoli Directory Integrator using a response file ( silent installation )

Following on from my previous posts: -

Following the script - installing IBM HTTP Server using a response file ( silent installation )
Following the script - installing and using IBM WebSphere Update Installer using a response file ( silent installation )

here's the next (hopefully) exciting instalment in the series, within which I intend to install all of the IBM Connections and IBM WebSphere Portal solution stack using command line, response files, scripts etc.

So, here we are with IBM Tivoli Directory Integrator (ITDI).

This is a fairly simple process - however, I did cheat initially; I used the GUI to record and create a response file, via the command line: -

$ ./install_tdiv70_linux_x86_64.bin -console -options-record /tmp/installer.properties

(a) Unpack the product ( I'm using the 64-bit version of ITDI to match my installation of Red Hat Enterprise Linux 6.2 )

- See this blog post - IBM Tivoli Directory Integrator - Which Version is Which ? - in order to work which version you have

$ cd /tmp
$ tar xvf /mnt/Products/TDI70/C1IU2ML.tar

(b) Create the response file

$ cd /tmp
$ vi installer.properties

-V TDI_Install_Current="true"
-V TDI_Add_Features="false"
-V TDI_Upgrade_Previous="false"
-V licenseAccepted=true
-P installLocation="/opt/IBM/TDI/V7.0"
-V IS_SELECTED_INSTALLATION_TYPE=custom
-P tdiServerFeature.active=true
-P tdiCEFeature.active=false
-P tdiCEUpdateSiteFeature.active=false
-P tdiJavadocsFeature.active=false
-P tdiExamplesFeature.active=false
-P tdiIEHSFeature.active=false
-P tdiLWIFeature.active=false
-P tdiAMCFeature.active=false
-V TDI_Soldir_UnderHome="false"
-V TDI_Soldir_InstallDir="false"
-V TDI_Soldir_SelectDir="false"
-V TDI_Soldir_Working="true"
-V TDI_Bundled_ISC_Chosen="false"
-V TDI_Custom_ISC_Chosen="false"
-V TDI_No_ISC_Chosen="false"
-V TDI_Migrate_Cloudscape="false"


- There's a couple of things to note here; I'm installing to the default location, I'm performing a custom install, and I am only installing the ITDI server
- Additionally, I'm going to use a working directory, rather than my home or installation directory, for the ITDI solution ( TDISOL )

(c) Perform the installation

$ cd /tmp
$ ./linux_x86_64/install_tdiv70_linux_x86_64.bin -options /tmp/installer.properties -silent

(d) Wait for a few minutes - 2.5 in my case

(e) Check the logs for completion

$ cat /tmp/tdiv70install.log

..
(04-Jun-2012 18:13:35), Install, com.ibm.eec.pit.ismp.product.actions.CreateLinuxShortcutAction, msg1, The Directory entry IBM Tivoli Directory Integrator v7.0 {2} was installed successfully.
(04-Jun-2012 18:13:36), Install, com.ibm.eec.pit.ismp.product.actions.CreateLinuxShortcutAction, msg1, The Application entry Uninstall IBM Tivoli Directory Integrator V7.0 was installed successfully.

...

(f) Validate the installation

$ /opt/IBM/TDI/V7.0/bin/applyUpdates.sh -queryreg

Information from .registry file in: /opt/IBM/TDI/V7.0
Edition: General Purpose
Level: 7.0.0.0
License: None

Fixes Applied
=-=-=-=-=-=-=
None

Components Installed
=-=-=-=-=-=-=-=-=-=
BASE
SERVER
PLUGINS


(g) Prepare for the 7.0.0.5 fix pack - this is the minimum level that IBM Connections 3.0.1 requires/supports

$ cp /mnt/Products/TDI70/7.0.0-TIV-TDI-FP0005.zip /tmp/
$ unzip -j 7.0.0-TIV-TDI-FP0005.zip 7.0.0-TIV-TDI-FP0005/TDI-7.0-FP0005.zip

(h) Replace the installed UpdateInstaller.jar with one shipped in the ZIP file

- I've blogged about this previously

$ mv /opt/IBM/TDI/V7.0/maintenance/UpdateInstaller.jar /opt/IBM/TDI/V7.0/maintenance/UpdateInstaller.jar.ORIGINAL
$ unzip -j 7.0.0-TIV-TDI-FP0005.zip 7.0.0-TIV-TDI-FP0005/UpdateInstaller.jar -d /opt/IBM/TDI/V7.0/maintenance/

Archive:  7.0.0-TIV-TDI-FP0005.zip
  inflating: /opt/IBM/TDI/V7.0/maintenance/UpdateInstaller.jar

- Note that the -d option specifies the target directory and the -j option tells unzip to ignore the path of the file within the ZIP file

(i) Install the fix pack

$ /opt/IBM/TDI/V7.0/bin/applyUpdates.sh -update /tmp/TDI-7.0-FP0005.zip

(j) Wait a while - 2.5 minutes

...
CTGDKO023I Applying fix 'TDI-7.0-FP0005' using backup directory '/opt/IBM/TDI/V7.0/maintenance/BACKUP/TDI-7.0-FP0005'.
CTGDKO027I Updating SERVER.
CTGDKO027I Updating PLUGINS.

...

(k) Check the current installed version

$ /opt/IBM/TDI/V7.0/bin/applyUpdates.sh -queryreg

Information from .registry file in: /opt/IBM/TDI/V7.0
Edition: General Purpose
Level: 7.0.0.5
License: None

Fixes Applied
=-=-=-=-=-=-=
TDI-7.0-FP0005(7.0.0.0)

Components Installed
=-=-=-=-=-=-=-=-=-=
BASE
SERVER
   -TDI-7.0-FP0005
PLUGINS
   -TDI-7.0-FP0005


Sorted.

Following the script - installing and using IBM WebSphere Update Installer using a response file ( silent installation )

Following on from my previous post, I'm intending to document all of the steps required to build out an IBM Connections or IBM WebSphere Portal infrastructure, using command line, shell scripts, response files etc.

So here goes the next step, installing the IBM WebSphere Update Installer ( required to patch IBM HTTP Server, WebSphere Plugin, WebSphere Application Server etc. ).

(a) Download the Update Installer - I'm using the current latest version 7.0.0.23 ( as of May 28, 2012 )

IBM Update Installer V7.0.0.23 for WebSphere Software for Linux

(b) Unpack the Update Installer

$ cd /tmp
$ tar xvzf /mnt/Products/Fixes/WAS7/7.0.0.23-WS-UPDI-LinuxAMD64.tar.gz

(c) Amend the response file: -

$ cd /tmp/UpdateInstaller
$ vi responsefile.updiinstaller.txt

-OPT silentInstallLicenseAcceptance="true"
-OPT disableOSPrereqChecking="false"
-OPT installLocation="/opt/IBM/WebSphere/UpdateInstaller"   


(d) Install the Update Installer

$ cd /tmp/UpdateInstaller
$ ./install -options /tmp/UpdateInstaller/responsefile.updiinstaller.txt -silent

(e) Wait a bit - just under two minutes in my case

(f) Check the logs for success

$ cat /opt/IBM/WebSphere/UpdateInstaller/logs/install/log.txt

...
(04-Jun-2012 15:20:33), Install, com.ibm.ws.install.ni.ismp.actions.SettleNIFRegistryAction, msg1, Current install/uninstall process is successful. Process type is: install
(04-Jun-2012 15:20:33), Install, com.ibm.ws.install.ni.ismp.actions.SetExitCodeAction, msg1, CWUPI0000I: EXITCODE=0
(04-Jun-2012 15:20:33), Install, com.ibm.ws.install.ni.ismp.actions.ISMPLogSuccessMessageAction, msg1, INSTCONFSUCCESS

...

(g) Prepare the required updates - I'm going to use 7.0.0.19

IBM HTTP Server                 -    7.0.0-WS-IHS-LinuxX64-FP0000019.pak
WebSphere Plugin                -    7.0.0-WS-PLG-LinuxX64-FP0000019.pak
WebSphere Application Server    -    7.0.0-WS-WAS-LinuxX64-FP0000019.pak
WebSphere Java SDK              -    7.0.0-WS-WASSDK-LinuxX64-FP0000019.pak

WebSphere Java SDK ( 32-bit )    -   7.0.0-WS-WASSDK-LinuxX32-FP0000019.pak

$ cd /opt/IBM/WebSphere/UpdateInstaller/maintenance/
$ cp /mnt/Products/Fixes/WAS7/*FP0000019.pak .

(h) Set up the response file - this time around I'm just going to install the IHS, Plugin and SDK fix packs for IBM HTTP Server

- This results in two response files; one for IHS, and one for the Plugin
- This is because the two components have different installation paths
- Also note that we're using the 32-bit SDK for IHS and the 64-bit SDK for the Plugin

$ cd /opt/IBM/WebSphere/UpdateInstaller/responsefiles
$ vi installIHSFixes.txt

-OPT checkFilePermissions="true"
-W maintenance.package="/opt/IBM/WebSphere/UpdateInstaller/maintenance/7.0.0-WS-IHS-LinuxX64-FP0000019.pak;/opt/IBM/WebSphere/UpdateInstaller/maintenance/7.0.0-WS-WASSDK-LinuxX32-FP0000019.pak"
-OPT disableNonBlockingPrereqChecking="true"
-W product.location="/opt/IBM/HTTPServer/"
-W update.type="install"


$ vi installPluginFix.txt

-OPT checkFilePermissions="true"
-W maintenance.package="/opt/IBM/WebSphere/UpdateInstaller/maintenance/7.0.0-WS-PLG-LinuxX64-FP0000019.pak;/opt/IBM/WebSphere/UpdateInstaller/maintenance/7.0.0-WS-WASSDK-LinuxX64-FP0000019.pak"
-OPT disableNonBlockingPrereqChecking="true"
-W product.location="/opt/IBM/HTTPServer/Plugins"
-W update.type="install"


(i) Check the currently installed versions: -

$ /opt/IBM/HTTPServer/bin/versionInfo.sh

...
Installed Product
--------------------------------------------------------------------------------
Name                     IBM HTTP Server
Version                  7.0.0.0
ID                       IHS
Build Level              sup0833.39
Build Date               8/20/08
Architecture             Intel (32 bit)

...

$ /opt/IBM/HTTPServer/Plugins/bin/versionInfo.sh

...
Installed Product
--------------------------------------------------------------------------------
Name                     Web server plug-ins for IBM WebSphere Application Server
Version                  7.0.0.0
ID                       PLG
Build Level              sup0833.39
Build Date               8/20/08

...

$ /opt/IBM/HTTPServer/java/jre/bin/java -version

java version "1.6.0"
Java(TM) SE Runtime Environment (build pxi3260sr2-20080818_01(SR2))
IBM J9 VM (build 2.4, J2RE 1.6.0 IBM J9 2.4 Linux x86-32 jvmxi3260-20080816_22093 (JIT enabled, AOT enabled)
J9VM - 20080816_022093_lHdSMr
JIT  - r9_20080721_1330ifx2
GC   - 20080724_AA)
JCL  - 20080808_02

$ /opt/IBM/HTTPServer/Plugins/java/jre/bin/java -version

java version "1.6.0"
Java(TM) SE Runtime Environment (build pxa6460sr2-20080818_01(SR2))
IBM J9 VM (build 2.4, J2RE 1.6.0 IBM J9 2.4 Linux amd64-64 jvmxa6460-20080816_22093 (JIT enabled, AOT enabled)
J9VM - 20080816_022093_LHdSMr
JIT  - r9_20080721_1330ifx2
GC   - 20080724_AA)
JCL  - 20080808_02

(j) Install the fix packs

IHS / SDK

$ cd /opt/IBM/WebSphere/UpdateInstaller
$ ./update.sh -options /opt/IBM/WebSphere/UpdateInstaller/responsefiles/installIHSFixes.txt -silent

Plugin

$ cd /opt/IBM/WebSphere/UpdateInstaller
$ ./update.sh -options /opt/IBM/WebSphere/UpdateInstaller/responsefiles/installPluginFix.txt -silent

(k) Wait a while - the two updates took about 4 minutes in total

(l) Check the logs: -

IHS

$ cat /opt/IBM/HTTPServer/logs/update/7.0.0-WS-IHS-LinuxX64-FP0000019.install/updatelog.txt

...
(04-Jun-2012 15:47:15), Install, com.ibm.ws.install.ni.ismp.actions.SettleNIFRegistryAction, msg1, Current install/uninstall process is successful. Process type is: maintenance
(04-Jun-2012 15:47:15), Install, com.ibm.ws.install.ni.ismp.actions.SetExitCodeAction, msg1, CWUPI0000I: EXITCODE=0
(04-Jun-2012 15:47:15), Install, com.ibm.ws.install.ni.ismp.actions.ISMPLogSuccessMessageAction, msg1, INSTCONFSUCCESS

...

SDK

$ cat /opt/IBM/HTTPServer/logs/update/install/updatelog.txt

...
(04-Jun-2012 16:57:20), Install, com.ibm.ws.install.ni.ismp.actions.SettleNIFRegistryAction, msg1, Current install/uninstall process is successful. Process type is: maintenance
(04-Jun-2012 16:57:20), Install, com.ibm.ws.install.ni.ismp.actions.SetExitCodeAction, msg1, CWUPI0000I: EXITCODE=0
(04-Jun-2012 16:57:20), Install, com.ibm.ws.install.ni.ismp.actions.ISMPLogSuccessMessageAction, msg1, INSTCONFSUCCESS

...

Plugin

$ cat /opt/IBM/HTTPServer/Plugins/logs/update/7.0.0-WS-PLG-LinuxX64-FP0000019.install/updatelog.txt

...
(04-Jun-2012 16:22:08), Install, com.ibm.ws.install.ni.ismp.actions.SettleNIFRegistryAction, msg1, Current install/uninstall process is successful. Process type is: maintenance
(04-Jun-2012 16:22:08), Install, com.ibm.ws.install.ni.ismp.actions.SetExitCodeAction, msg1, CWUPI0000I: EXITCODE=0
(04-Jun-2012 16:22:08), Install, com.ibm.ws.install.ni.ismp.actions.ISMPLogSuccessMessageAction, msg1, INSTCONFSUCCESS

...

Plugin SDK

$ cat /opt/IBM/HTTPServer/Plugins/logs/update/7.0.0-WS-WASSDK-LinuxX64-FP0000019.install/updatelog.txt
...
(04-Jun-2012 16:42:02), Install, com.ibm.ws.install.ni.ismp.actions.SettleNIFRegistryAction, msg1, Current install/uninstall process is successful. Process type is: maintenance
(04-Jun-2012 16:42:02), Install, com.ibm.ws.install.ni.ismp.actions.SetExitCodeAction, msg1, CWUPI0000I: EXITCODE=0
(04-Jun-2012 16:42:02), Install, com.ibm.ws.install.ni.ismp.actions.ISMPLogSuccessMessageAction, msg1, INSTCONFSUCCESS
...

(m) Check the versions now

$ /opt/IBM/HTTPServer/bin/versionInfo.sh

...
Installed Product
--------------------------------------------------------------------------------
Name                     IBM HTTP Server
Version                  7.0.0.19
ID                       IHS
Build Level              cf191132.09
Build Date               8/13/11
Architecture             Intel (32 bit)

...

$ /opt/IBM/HTTPServer/Plugins/bin/versionInfo.sh

...
Installed Product
--------------------------------------------------------------------------------
Name                     Web server plug-ins for IBM WebSphere Application Server
Version                  7.0.0.19
ID                       PLG
Build Level              cf191132.09
Build Date               8/13/11
Architecture             AMD (64 bit)

...

$ /opt/IBM/HTTPServer/java/jre/bin/java -version

java version "1.6.0"
Java(TM) SE Runtime Environment (build pxi3260sr9fp2ifix-20110727_01(SR9 FP2+IV03622))
IBM J9 VM (build 2.4, JRE 1.6.0 IBM J9 2.4 Linux x86-32 jvmxi3260sr9-20110712_86803 (JIT enabled, AOT enabled)
J9VM - 20110712_086803
JIT  - r9_20101028_17488ifx17
GC   - 20101027_AA)
JCL  - 20110727_04


$ /opt/IBM/HTTPServer/Plugins/java/jre/bin/java -version

java version "1.6.0"
Java(TM) SE Runtime Environment (build pxa6460sr9fp2ifix-20110727_01(SR9 FP2+IV03622))
IBM J9 VM (build 2.4, JRE 1.6.0 IBM J9 2.4 Linux amd64-64 jvmxa6460sr9-20110712_86803 (JIT enabled, AOT enabled)
J9VM - 20110712_086803
JIT  - r9_20101028_17488ifx17
GC   - 20101027_AA)
JCL  - 20110727_04


As ever, the job is a good 'un

Visual Studio Code - Wow 🙀

Why did I not know that I can merely hit [cmd] [p]  to bring up a search box allowing me to search my project e.g. a repo cloned from GitHub...