Thursday 31 December 2009

Naughty [NumLock] key on Thinkpad R50e running Ubuntu

It's been a constant pain in the proverbial to use this Thinkpad R50e, running Ubuntu 9.04, with and without an external keyboard.

It spends much of its life fixed to a desk with an external USB keyboard, connected via a four port USB hub/speaker combination. In this manner, the [NumLock] key needs to be pressed ( on the external keyboard ) for the numeric keys to be usable.

However, when the hub etc. is unplugged e.g. when the laptop goes on the road, the [NumLock] light stays illuminated, meaning that the numeric keys on the Thinkpad's own keypad become activated, preventing half the keyboard from being used for its proper purpose e.g. the U key becomes a 4, the K key becomes a 2 etc. etc. etc.

The problem is that it's not easy to disable [NumLock] from within the Gnome X11 environment - switching to another virtual terminal using [Ctrl][Alt][F1] etc. sometimes works, but that's not a particularly elegant solution.

There are probably better ways, but a Google search found me NumlockX
which does the job far more elegantly.

I installed it as follows: -

sudo apt-get install numlockx

It has three parameters, easily displayed using the command numlockx -? which are: -

on - turns NumLock on in X ( default )
off - turns NumLock off in X
toggle - toggles the NumLock on and off in X

However, I didn't want to have to open a shell merely to do this, so I wrote a simple script: -

#!/bin/bash
numlockx off

saved as numlock.sh which, having set as executable ( chmod +x ) in my user's home directory, I then created a desktop shortcut ( via a Custom Application Launcher ) to it.

I placed this shortcut on the bottom panel, alongside Firefox, Thunderbird, Open Office, Skype etc. and now have a simple way of toggling the NumLock off.

If I wanted to, I could have amended the script to read: -

#!/bin/bash
numlockx toggle

to that I could change the state on AND off, at the click of a mouse button.

Simple ....

Problem with CUPS and Samba on Ubuntu 9.04 ( Jaunty Jalope )

Had an interesting problem with my 10 year old HP PSC500 printer, whilst trying to print a PDF file from Document Viewer.

Not having been aware of changing anything since this last worked, I was assuming that my Ubuntu box's configuration hadn't changed drastically, and I'd already checked the power and parallel ( old skool ) printer cables.

The error message that kept popping up was: -

"Failed To Print Document, Too Many Failed Attempts"

which wasn't particularly meaningful.

I started and stopped the printer via the CUPS web UI at: -

http://localhost:631/printers/

but to no avail.

I'd also tried starting and stopping CUPS, via the shell commands: -

sudo service cups restart

When I checked the CUPS error log /var/logs/cups/error.log, I saw the following errors, which appeared relevant: -


E [31/Dec/2009:13:56:27 +0000] cupsdReadClient: 17 IPP Read Error!

E [31/Dec/2009:13:58:13 +0000] cupsdReadClient: 17 IPP Read Error!

E [31/Dec/2009:14:00:01 +0000] cupsdReadClient: 17 IPP Read Error!

 A quick Google search suggested that the problem might be with Samba (!) rather than CUPS, even though I'm printing directly from the application on the PC to which the printer is connected.

Be that as it may, I tried restarting Samba: -

sudo service samba restart

and tried to reprint the offending document.

Lo and behold, the printer started printing and we're back in the game ....

Weird but true ...

IBM WebSphere eXtreme Scale 6 by Anthony Chaves - my thoughts thus far

As mentioned previously, I'm working my way through Anthony Chaves' book on WebSphere eXtreme Scale. It's a very good book, but it is as much aimed at an application developer as at an infrastructure architect like me.

In my simple world, the main benefit of a data grid is that vast amounts of data can be held in memory, spread across as many processors as is necessary to handle the performance and storage requirements. This means that a data-centric application, such as that used in the banking and financial sectors, can access data far more quickly. The book has a great chart that compares data access times from the CPU registers ( ~ 1 nanosecond ) through main memory ( ~ 150 nanoseconds ) to secondary storage cache aka disk cache ( ~ 50 microseconds ) to secondary storage itself ( ~ 12 milliseconds ).

To quote from the book itself "... Accessing data on a hard drive platter is one million times slower than accessing that same data in main memory and one billion times slower than accessing that data in a register..."

The chapter goes on to compare the relative cost and capacity of CPU registers against disk storage - this makes perfect sense; I'm typing this on a Macbook Pro which has 6 MB of Level 2 cache ( access time is around 20 nanoseconds ), 4 GB of main memory ( access time is around 150 nanoseconds ) and 320 GB of hard disk ( access time is around 12 milliseconds ). I recently bought a 320 GB SATA hard disk for 30 pounds, and a 1 TB SATA hard disk for 60 pounds, but I'm guessing that it'd cost me a heck of a lot more to add more main memory, and I've got little or no chance of adding extra L2 cache, unless Apple happens to provide a quad core CPU with 16 MB as an upgrade - not likely :-)

The net benefit of the datagrid approach is that a programmer can ensure that data is held as close as possible to the processor cores, and not need to rely upon costly ( in performance terms ) database interactions - the Java Enterprise Edition (JEE) approach of database access is immensely powerful in terms of allowing a programmer to interact with a relational database without knowing or caring on what platform it runs - this abstraction via the Java Naming and Directory Interface (JNDI) and Java Database Connectivity (JDBC) APIs, via statement and connection pools etc. is very very useful, but does add latency to each and every database interaction. Caching data in memory helps, but only for read operations. Similarly, object locking takes a similar amount of time - each time I want to update a database record, I have to go to and from the database application itself.

Whilst not solving every problem, datagrids can help to mitigate against this, and the API appears immensely flexible in terms of read/write, locking, caching etc.

As a non-developer, I'm not going to see all of the benefits, but it's definitely worth considering, especially where performance and scalability are crucial requirements.

In terms of the book, Mr Chaves clearly knows his subject, and writes extremely well - it should be noted that he does jump into Java code quite quickly, with the first snippets of code appearing on page 17. It's in the later chapters that he goes into the architecture and the cost vs. benefit analysis of the datagrid methodology.

The book is aimed at the WebSphere eXtreme Scale product, and Mr Chaves even goes through the process of obtaining and installing the product, but the concepts are appropriate to any similar datagrid product.

I've got a lot more book to work through, but I'm impressed thus far - again, as an architect rather than a developer, with 10 years of Java experience behind me ( even at the basic J2EE / JEE level with servlets, portlets, JSPs, entity beans, session beans etc. ), the book is eminently readable, and I'd be happy to recommend it to anyone. The author's style is friendly without being patronising - it's not "Datagrids for Dummies" but that's probably a good thing :-)

Wednesday 30 December 2009

Integrating IBM Lotus Connections 2.5 with other applications

I may well have blogged about this article previously, but it's definitely worthy of a read, and quite appropriate to me at this time.

Summary: This article takes a deep dive into IBM Lotus Connections 2.5 Application Programming Interfaces (APIs). Through practical examples, we explain how to work with the Connections 2.5 APIs and how to use them to integrate Lotus Connections into other applications.

Wednesday 23 December 2009

Sametime 8.5 - Should You Wait and Other Burning Questions?

An extremely useful posting from Gabriella Davis at Turtle Partnership, that's definitely worth a read if you're considering the newly-released Sametime 8.5 product set: -

<snip>
As most of you know by now, Sametime 8.5 and all its new components shipped yesterday.  In summary Sametime 8.5 offers you:
  • Community  Server on a Domino platform (supported for Domino 8.5 but otherwise little changed from ST8.0.2)
  • Meeting Server on WAS 7.0 (replaces existing Domino based scheduled meetings with persistent, always available, meeting 'spaces')
  • Media Server on WAS 7.0 (audio and video services for the Meeting Server)
  • Proxy Server on WAS 7.0 (no download Ajax browser client for IM, customisable / brandable via CSS) 
The whole environment is then managed by the Sametime System Console on WAS 7.0. 
</snip>

Determining the best IBM Lotus Web Content Management delivery option for your needs

One of my ISSL colleagues shared this via Twitter: -

Summary

There are various content delivery options available in IBM Lotus Web Content Management (hereafter called "Web Content Management"), and choosing the one that's right for you can improve the current performance and future scalability of your deployed environment. This article explains the available rendering options and how to choose the best one for your Web sites.

Wednesday 16 December 2009

New Redpiece - IBM Lotus Domino Integration using IBM Tivoli Directory Integrator

Am using TDI more and more now on Lotus Connections projects, and am starting to see it in the context of Domino engagements as well.

One of my current projects is to use TDI to pull Domino users out of a group and propagate them into the Profiles database that is a key part of Lotus Connections.

I haven't yet read this redpiece, but it comes from a good source - one of the authors, Eddie Hartman, is one of the most knowledgeable TDI people I've ever "met".

Here's the abstract: -

In this IBM Redpaper publication we take you step-by-step through a series of integration scenarios to help you start building your own solutions with IBM Tivoli Directory Integrator. Once you have mastered some basic skills you will be wiring your IBM Lotus Domino applications (both the shrink-wrapped and home-grown varieties) more tightly into your infrastructure, and you will also be sharing data between IBM Lotus Domino and other systems more simply and easily that you probably thought was possible.

and here's the URL: -


Whilst we're on the subject, here's two more useful TDI-related URLs: -

Thursday 10 December 2009

Shelling out on Ubuntu 9.10 ( Karmic Koala )

Having not really had a chance to do much with Ubuntu recently ( mainly since I crossed over to the Cupertino side with the absolutely awesome Apple Macbook Pro and OSX ), I've got back into the game recently, as I build a play/dev. box on my trusty old 2007-AE7 Thinkpad T60p.

I installed Ubuntu 9.10 Karmic Koala on the beast the other week, and have most recently installed: -

Lotus Mobile Connect 6.1.3.0-1.3
DB2 UDB 9.1.0.5
Lotus Domino 8.5.1
Tivoli Directory Integrator 6.1.1 FP7

( appreciating that all/most of the above are completely UNSUPPORTED by IBM on Ubuntu )

The reason for this is that I'm trying to crack a problem with TDI whereby I want to bring users who are members of a Domino group into Lotus Connections 2.5 via TDI. This doesn't work out of the box, mainly due to the way that Domino groups work when exposed via LDAP.

Therefore, I needed to create a custom TDI Assembly Line, which I've now done. My AL populates a file called collect.dns.

Once the AL has done the job of pulling the users from the group, I then need it to populate those same users into Connections, via the underlying Profiles database.

Rather than reinventing the wheel, I need my AL to call one of the Connections Wizard's underlying scripts - populate_from_dn_file.sh - which takes the contents of the aforementioned collect.dns file and posts it into the Profiles DB.

In order to have my AL call the existing script, I needed to use the Command Line Collector.

However, when I tried to validate that the populate_from_dn_file.sh script worked ( outside TDI ), I got the following error: -

./tdienv.sh: 4: [[: not found
./tdienv.sh: 7: [[: not found
./tdienv.sh: 10: [[: not found
./populate_from_dn_file.sh: 10: [[: not found
./populate_from_dn_file.sh: 14: [[: not found
./populate_from_dn_file.sh: 18: [[: not found

After a quick Google, I discovered that the problem is that the TDI scripts use the SH shell which, for some weird reason on Ubuntu, is actually linked to the /bin/dash shell.

Obvious, heh ? NOT !

The solution ?

sudo mv /bin/sh /bin/sh.bak
sudo ln -s /bin/bash /bin/sh

In essence, we backup the old version of /bin/sh and replace it with a version that links to /bin/bash.

Nice one !

I'll post more on the TDI hacking once I've got it working properly, and tested :-)


Thursday 3 December 2009

WebSphere Portlet Factory 6.1.5 - My First Failure .... and success

Having recently installed WebSphere Portal Express 6.1.5, I went one step further on Wednesday and installed WebSphere Portlet Factory Designer 6.1.5 onto the same Red Hat Enterprise Linux VMware image.

Hmmmmm, things did not go quite as smoothly as I'd expected.

I downloaded/installed in this order: -

a) Sun JRE 1.6.0_17-bo4 - jre-6u17-linux-i586-rpm.bin - from here http://javadl.sun.com/webapps/download/AutoDL?BundleId=35674
c) WebSphere Portlet Factory Designer 6.1.5 - CZ7RYML.zip

In case it's relevant, I "merely" installed Eclipse by expanding the TAR file into /opt/eclipse.

So far so good.

Whilst creating a WPF project, I'm prompted to create a new Server Configuration for the deployment of the project to WebSphere Application Server / WebSphere Portal.

Since 6.1 was released, WPFD can connect to WAS via SOAP as well as the more traditional HTTP method. I think I'm right in saying that this allows for remote deployment of WARs ( where WPFD is on one machine and WAS/WP is on another ) so it's a good feature to have.

Having taken the defaults for the WAS/WP 6.1 configuration: -




















I clicked the "Test Connection" button ..... and saw .....









Check your Host and SOAP Connector port inputs. To verify your SOAP Connector port, go to the WebSphere Admin Console, select Application Servers > YOUR_SERVER > Ports and use the SOAP_CONNECTOR_ADDRESS

I followed the advice in the dialogue box and checked that the WebSphere_Portal instance of WAS was running, and the SOAP_CONNECTOR_ADDRESS was indeed 10033. I even proved it using the WSAdmin script as follows: -

/opt/IBM/WebSphere/PortalExpress/AppServer/bin/wsadmin.sh -port 10033 -user wpsadmin -password passw0rd -lang jython

By this time I was getting very desperate, and was using netstat -aon | grep 10033 to prove that the port was available, and even checked that the firewall - IPTables - was NOT running.

I then tried starting WPF in debug mode ( by running /opt/eclipse/eclipse -debug ) and then saw the following exceptions when I clicked the "Test Connection" button: -

INFO: ssl.disable.url.hostname.verification.CWPKI0027I com.ibm.websphere.management.exception.ConnectorException: ADMC0053E: The system cannot create a SOAP connector to connect to host localhost at port 10033 with SOAP connector security enabled.
Caused by: [SOAPException: faultCode=SOAP-ENV:Client; msg=Error opening socket: java.net.SocketException: java.lang.ClassNotFoundException: com.ibm.websphere.ssl.protocol.SSLSocketFactory; targetException=java.lang.IllegalArgumentException: Error opening socket: java.net.SocketException: java.lang.ClassNotFoundException: com.ibm.websphere.ssl.protocol.SSLSocketFactory]
com.bowstreet.designer.deploy.DeploymentException: An error occured trying to create the admin client. Check your Server Configuration inputs, and make sure your server is running.

At this point, I decided to call in the heavy mob - thanks to two of the smart people in the US, Jonathan B and Kevin T, I was able to crack it.

The ClassNotFound exception against com.ibm.websphere.ssl.protocol.SSLSocketFactory helped indicate the problem - Kevin advised me to check that the class did exist in the right place: -

/opt/IBM/WebSphere/PortletFactory/Designer/eclipse/plugins/com.bowstreet.designer.JMXConnection_6.1.5/WAS6.1/com.ibm.ws.security.crypto_6.1.0.jar

and then suggested that the problem MIGHT be a JRE issue; apparently the com.ibm.websphere.ssl.protocol.SSLSocketFactory class has a dependancy on the IBM Java Runtime Environment.

I proved this by changing my environment to use the IBM JRE that's packaged with WebSphere Application Server instead of the Sun JRE, by use of the setupCmdLine.sh, as follows: -

Before changing the environment

$ java -version

java -version
java version "1.6.0_17"
Java(TM) SE Runtime Environment (build 1.6.0_17-b04)
Java HotSpot(TM) Client VM (build 14.3-b01, mixed mode, sharing)

Change the environment

. /opt/IBM/WebSphere/PortalExpress/AppServer/profiles/wp_profile/bin/setupCmdLine.sh

( noting the leading DOT SPACE )

After changing the environment

$ java -version

java version "1.5.0"
Java(TM) 2 Runtime Environment, Standard Edition (build pxi32devifx-20090811 (SR10 +IZ56666+IZ56751))
IBM J9 VM (build 2.3, J2RE 1.5.0 IBM J9 2.3 Linux x86-32 j9vmxi3223-20090707 (JIT enabled)
J9VM - 20090706_38445_lHdSMr
JIT - 20090623_1334_r8
GC - 200906_09)
JCL - 20090811


Having done this, I was able to restart Designer, and deploy my project using SOAP.

In short, if you see similar exceptions re SSLSocketFactory, check that you're not running the Sun JRE.

Tuesday 1 December 2009

Oooh, shiny, WebSphere Portal and WebSphere Process Server together ...

as per this developerWorks article: -

"...The guide contains the steps for building a two-node portal cluster running on WebSphere Application Server 6.1.0.15 and integrating this environment with WebSphere Process Server 6.1.0.1 in the same WAS cell, including the transfer of Portal's Derby database to an external database server..."

This is something I really need to read ( I feel the need, the need to read or, perhaps, the need to speed read ).

Monday 30 November 2009

Installing WebSphere Portal Express 6.1.5 on Linux

Following on from my earlier post, I've now documented my first installation of WebSphere Portal Express 6.1.5 here: -

Installing%20WebSphere%20Portal%20Express%206.1.5%20on%20Linux.pdf

Enjoy !

Creating an IBM Lotus Web Content Management site structure with one click

An interesting article over on developerWorks: -

If you work with IBM Lotus Web Content Management, one of your recurring tasks is defining site structure. This task by its nature is time-consuming and repetitive; you are required to take more than 10 distinct steps to create a single site or site area. Moreover, site structures are not portable by design; you cannot export your site structure from one library on one server to a different library on a different server. Instead, you need to recreate the entire site structure manually.

Because the number of sites and site areas that make up a single site structure can reach the thousands, you need a method to automate the process of defining the site structure and to make it easier to move, export, and import. In this article, you can learn a simple way to define your site structure as an XML file and deploy it accordingly. 


Friday 27 November 2009

Installing WebSphere Portal 6.1.5 on Linux ....

Having had a bit of a download fest in the office yesterday, I thought I'd start to document my first 6.1.5 installation.

I downloaded two deployments of WebSphere Portal: -

WebSphere Portal Express

- includes Lotus Web Content Management
- installs on/with/using DB2 UDB Express

WebSphere Portal Server

- just the portal framework with no WCM
- installs on/with/using Apache Derby ( aka Cloudscape )

For WebSphere Portal Express, I searched for, and downloaded elements of, the package known as: -

IBM WebSphere Portal Express for Linux x86, V6.1.5 Multilingual eAssembly (CR9UKML)

IL-Setup IBM WebSphere Portal Express V6.1.5 - IBM WebSphere Portal Express Install V6.1.5 (W-Setup, I-Setup, IL-Setup) Multiplatform Multilingual (CZ8G8ML)
IL-1 IBM WebSphere Portal V6.1.5, WebSphere Portal Express V6.1.5 and Lotus Web Content Management V6.1.5 - WebSphere Application Server Network Deployment for Linux on x86-32, V6.1.0.27 (IL-1) Multilingual (CZ8H5ML)
IL-2 WebSphere Portal Express V6.1 - DB2 UDB Express Edition for Linux on x86, 32-bit (IL-2) Multilingual (C1HA2ML)
IL-3 IBM WebSphere Portal Express V6.1.5 - Portal Server Express component V6.1.5 (Disk 1 of 3)(W-3, I-3, IL-3) Multiplatform Multilingual (CZ8I8ML)
IL-4 IBM WebSphere Portal Express V6.1.5 - Portal Server Express component V6.1.5 (Disk 2 of 3)(W-4, I-4, IL-4) Multiplatform Multilingual (CZ8I9ML)
IL-5 IBM WebSphere Portal Express V6.1.5 - Portal Server Express component V6.1.5 (Disk 3 of 3)(W-5, I-5, IL-5) Multiplatform Multilingual (CZ8IAML)

and unpacked them using the following shell script ( unpack.sh ): -

unzip CZ8G8ML.zip    -d IL-Setup
mkdir                   IL-1
tar xvzf CZ8H5ML.tgz -C IL-1
unzip C1HA2ML.zip    -d IL-2
unzip CZ8I8ML.zip    -d IL-3
unzip CZ8I9ML.zip    -d IL-4
unzip CZ8IAML.zip    -d IL-5

into my /tmp directory.

It's worth noting that WebSphere Portal Express ONLY comes in a 32-bit deployment on Intel, unlike WebSphere Portal Server ( see below ).

For WebSphere Portal Server, I searched for, and downloaded elements of the package known as: -

IBM Collaboration Accelerator and WebSphere Portal Server for Linux on x86, V6.1.5 Multilingual eAssembly (CR9QVML)

IL-Setup IBM WebSphere Portal Server V6.1.5 - IBM WebSphere Portal Server Install V6.1.5 (W-Setup, A-Setup, H-Setup, HI-Setup, I-Setup, IL-Setup, PL-Setup, ZL-Setup, SS-Setup, SO-Setup) Multiplatform Multilingual (CZ8G7ML)
IL-1 IBM WebSphere Portal V6.1.5, WebSphere Portal Express V6.1.5 and Lotus Web Content Management V6.1.5 - WebSphere Application Server Network Deployment for Linux on x86-32, V6.1.0.27 (IL-1) Multilingual (CZ8H5ML)
IL-2 IBM WebSphere Portal V6.1.5 and Lotus Web Content Management V6.1.5 - IBM WebSphere Application Server Network Deployment for Linux on Intel (64-bit), V6.1.0.27 (IL-2) Multilingual (CZ8HDML)
IL-3 IBM WebSphere Portal Server V6.1.5 - IBM WebSphere Portal Server Server component (Disk 1 of 4) V6.1.5 (W-3, A-3, H-3, HI-3, I-3, IL-3, PL-3, ZL-3, SS-3, SO-3) Multiplatform Multilingual (CZ8I4ML)
IL-4 IBM WebSphere Portal Server V6.1.5 - IBM WebSphere Portal Server Server component (Disk 2 of 4) V6.1.5 (W-4, A-4, H-4, HI-4, I-4, IL-4, PL-4, ZL-4, SS-4, SO-4) Multiplatform Multilingual (CZ8I5ML)
IL-5 IBM WebSphere Portal Server V6.1.5 - IBM WebSphere Portal Server Server component (Disk 3 of 4) V6.1.5 (W-5, A-5, H-5, HI-5, I-5, IL-5, PL-5, ZL-5, SS-5, SO-5) Multiplatform Multilingual (CZ8I6ML)
IL-5A IBM WebSphere Portal Server V6.1.5 - IBM WebSphere Portal Server Server component (Disk 4 of 4) V6.1.5 (W-5A, A-5A, H-5A, HI-5A, I-5A, IL-5A, PL-5A, ZL-5A, SS-5A, SO-5A) Multiplatform Multilingual (CZ8I7ML)

and unpacked them using the following shell script ( unpack.sh ): -

unzip CZ8G7ML.zip    -d IL-Setup
mkdir                   IL-1
tar xvzf CZ8H5ML.tgz -C IL-1
 
mkdir                   IL-2
tar xvzf CZ8HDML.tgz -C IL-2
unzip CZ8I4ML.zip    -d IL-3
unzip CZ8I5ML.zip    -d IL-4
unzip CZ8I6ML.zip    -d IL-5
unzip CZ8I7ML.zip    -d IL-5A

Right, time to start the first installation, and then make breakfast ...


Thursday 26 November 2009

Jon Mell - first it was the WebSphere Portal 4 deployment guide, now it's Lotus Connections 2.5 ...

As per Jon's blog here, he's looking for input into his upcoming Lotus Connections 2.5 installation guide. Rather than hearing it from me, here's Jon in his own words: -

...
Plan to (belatedly) update my Connections 2.5 install guide soon (before New Year). Was thinking that for single server install the 2.0 guide works pretty well for 2.5 so thinking of something different ... Linux? Clustering? Different LDAP?
...

Answers ( on a blog posting ) to Jon ....

Wednesday 25 November 2009

WebSphere Portal and Lotus Web Content Management 6.1.5 are released ...

Wow, a rash of new announcements from IBM today: -


IBM WebSphere Portal V6.1.5 provides new features that further empower portal users, delivers improved capabilities for better portal performance and optimization, and adds support for popular Web programming tools and techniques that make it easier to contribute to, and manage, the portal. Combined with the Web 2.0 advances previously introduced in WebSphere Portal, these primary new features help organizations better deliver and manage exceptional Web user experiences.


IBM Lotus Web Content Management 6.1.5:
  • Unleashes the power of social software capabilities such as blogs and wikis to convert Web site visitors to participants and customers.
  • Reduces integration costs with Enterprise Content Management (ECM) solutions by leveraging out-of-the-box Document Picker to access content from ECM repositories such as FileNet, IBM Content Manager, and Quickr.
  • Uses Web Content Integrator to provide incremental value by consuming and publishing of external content repositories.
  • Enhances ease-of-use by enabling authoring of content and template creation using tools such as Dreamweaver and WebDAV hooks.
  • Enhances rich text editor capabilities by embedding Ephox's EditLive Editor, thus, eliminating the need for separate installation.


Portal Pack for SOA Configurations V6.1.5 gives you the essential components needed to accelerate time-to-value for "people" interactions and collaboration, while also deriving additional value from existing systems and applications, taking advantage of service oriented architecture (SOA). It features the latest IBM WebSphere Portal Server V6.1.5 release, which provides capabilities that further empower portal users to contribute to, as well as manage, portal content and presentation. It also delivers improved portal performance and optimization capabilities, which can help contribute to a lower cost-of-ownership.

Guess what I will be downloading tomorrow ...

Tuesday 24 November 2009

Lotus Connections - Problems with person/people tagging in Profiles

Having spent much of the past week trying to resolve a problem with person tagging in the Profiles feature of Lotus Connections 2.5, I thought I'd share the solution.

To cut a long story short, the customer was seeing a problem whereby an authenticated user was unable to tag his/her own profile, using the Tags widget on the left-hand side of the My Profile page. There was no obvious error in the browser, and the tag cloud/list was never updated.

After much trial and error, we narrowed the problem domain down to it only occuring when we accessed LC via a pair of front-end HTTP server, via an HTTP load balancer - it's my understanding that the LB "merely" directs requests to one of the two IHS servers on a "round robin" basis, so has no real part to play in the story.

We were able to confirm that the problem WAS "caused" by the presence of the front-end IHS servers, by accessing Profiles directly on the WAS instance ( in the client's case, each Connections feature is clustered across two identical WAS ND nodes ). When we accessed Profiles in this way ( e.g. http://connections.uk.ibm.com:9088/profiles ), tagging worked as expected.

However, going via the HTTP servers ( both with the WAS plugin configured correctly to direct the requests to the cluster ), we saw the following string of messages ( some good, some bad ) in the IHS access.log file: -

192.168.1.3 - - [24/Nov/2009:13:07:02 +0000] "GET /profiles/html/myProfileView.do?lang=en HTTP/1.1" 200 41226
192.168.1.3 - - [24/Nov/2009:13:07:04 +0000] "GET /profiles/html/profileLocalTime.do?timezoneId=Europe%2FLondon&timeNow=1259067900000&lang=en HTTP/1.1" 200 17
192.168.1.3 - - [24/Nov/2009:13:07:04 +0000] "GET /profiles/ajax/getStatusMessage.do?key=39464090-6e3a-4543-9370-954f341c3096&lang=en HTTP/1.1" 200 1171
192.168.1.3 - - [24/Nov/2009:13:07:04 +0000] "GET /profiles/ajax/getWallContent.do?key=39464090-6e3a-4543-9370-954f341c3096&filter=PROFILE&type=ALL&lang=en HTTP/1.1" 200 12500
192.168.1.3 - - [24/Nov/2009:13:07:04 +0000] "GET /communities/service/atom/communities/all?userid=E7CEACE4-B7E8-BDD0-8025-76680020359C&ps=5 HTTP/1.1" 500 619
192.168.1.3 - - [24/Nov/2009:13:07:14 +0000] "POST /profiles/html/tagTypeahead.do?useJson=true HTTP/1.1" 200 8
192.168.1.3 - - [24/Nov/2009:13:07:15 +0000] "PUT /profiles/atom/forms/profileTags.do?targetKey=39464090-6e3a-4543-9370-954f341c3096&sourceKey=39464090-6e3a-454                                              3-9370-954f341c3096 HTTP/1.1" 403 319
192.168.1.3 - - [24/Nov/2009:13:07:15 +0000] "GET /profiles/auth/loginRedirect.do?loginReturnPage=%2Fprofiles%2Fhtml%2FmyProfileView.do%3Flang%3Den HTTP/1.1" 302 -
192.168.1.3 - - [24/Nov/2009:13:07:15 +0000] "GET /profiles/html/myProfileView.do?lang=en HTTP/1.1" 200 41226
192.168.1.3 - - [24/Nov/2009:13:07:16 +0000] "GET /profiles/html/profileLocalTime.do?timezoneId=Europe%2FLondon&timeNow=1259067960000&lang=en HTTP/1.1" 200 17
192.168.1.3 - - [24/Nov/2009:13:07:16 +0000] "GET /profiles/ajax/getStatusMessage.do?key=39464090-6e3a-4543-9370-954f341c3096&lang=en HTTP/1.1" 200 1171
192.168.1.3 - - [24/Nov/2009:13:07:16 +0000] "GET /profiles/ajax/getWallContent.do?key=39464090-6e3a-4543-9370-954f341c3096&filter=PROFILE&type=ALL&lang=en HTTP/1.1" 200 12500
192.168.1.3 - - [24/Nov/2009:13:07:16 +0000] "GET /communities/service/atom/communities/all?userid=E7CEACE4-B7E8-BDD0-8025-76680020359C&ps=5 HTTP/1.1" 500 619

Of these, we can ignore the HTTP 500 errors coming from Communities, as that feature is not running ( I've taken the logs from my own LC25 clustered environment, as I was able to recreate the customer's problem ).

The important error is the HTTP 403 coming from the PUT method.

The customer was also using the HTTP mod_write directive, which I've again reproduced on my own setup here: -

LoadModule rewrite_module modules/mod_rewrite.so
RewriteEngine on
RewriteCond %{REQUEST_METHOD} !^(GET|POST|HEAD)$
RewriteRule .* - [F]

Can you see the problem ? I bet you can - sadly, it took me a little longer ...

As mentioned, the person tagging feature uses the HTTP PUT method, rather than the more common HTTP POST method. The customer's configuration for mod_rewrite was explicitly blocking this, via the RewriteCond directive seen above.

Once we change the rule to read: -

RewriteCond %{REQUEST_METHOD} !^(GET|POST|HEAD|PUT)$

and restarted IHS, all was well.

The moral of the story ? Break a problem down into logical domains e.g. test the core of the environment ( in our case, accessing Profiles directly on WAS on port 9088 ) and, if that works, focus on the HTTP servers, in terms of (a) non-standard modules/directives and (b) the access and error logs.

With thanks to Erik Sorensen, the Lotus Connections support team in Mulhuddart, Dublin, and, of course, my customer.

Sorted :-)

Sunday 22 November 2009

I really hope my cat nevers get to see this ...

IBM HTTP Server installation wizard - not very wizardly

Whilst trying to install IBM HTTP Server 6.1 on Orac, I was getting very frustrated with my inability to get the installation running. Regardless of what I did, I wasn't able to get the normal installation wizard to run, either via a normal X11 GUI or via VNC. In all cases, the wizard "whinged" about the browser, even though I had the latest version of Firefox installed.

Realising that the installation wizard was actually trying to run a Java JAR file ( setup.jar ), I tried running it by hand using the command: -

java -jar setup.jar

from the IHS directory which is generated when one expands the installation package, supplied by: -

C87PSML.tar.gz  WebSphere Application Server V6.1 Supplements for Linux on x86Series, 32-bit Support

or

C87XSML .tar.gz WebSphere Application Server V6.1 Supplements for Linux on x86Series, 64-bit Support

but I then got the error: -

The wizard cannot continue because of the following error: could not load wizard specified in /wizard.inf (104)

which is particularly useful :-(

However, thinking laterally, I thought that the installer MIGHT be looking for the WAS JVM, so I ran: -

. /opt/IBM/WebSphere/AppServer/profiles/AppSrv01/bin/setupCmdLine.sh 
java -jar setup.jar

which did the trick :-)

Wednesday 18 November 2009

WSWS7007E and WSVR0501E Conflict between Lotus Connections 2.5 and Feature Pack for Web Services for WebSphere Application Server V6.1

This is the first of two posts documenting some fun n' games that I've recently seen with LC 2.5 on a WAS environment that also included this Feature Pack: -

Utility: Feature Pack for Web Services for WebSphere Application Server V6.1


I'll document the more pressing issue in the next day or so, but wanted to mention that, on my own environment ( aka Orac ), I hit the following exceptions when trying to start Connections: -

WSWS7007E: The peoplepages.war application module cannot be loaded correctly because of the following error: com.ibm.ws.metadata.annotations.AnnotationException: Annotation processing failed for class:  com/ibm/lconn/profiles/internal/service/AbstractCodesService.class

and: -

WSVR0501E: Error creating component null [class com.ibm.ws.runtime.component.ApplicationServerImpl]
com.ibm.ws.exception.RuntimeWarning: com.ibm.ws.exception.RuntimeWarning: com.ibm.ws.metadata.annotations.AnnotationException: Annotation processing failed for class:  com/ibm/lconn/profiles/internal/service/AbstractCodesService.class

In essence, I was installing the Feature Pack onto an existing node ( the first, and currently only, node within a WAS 6.1 cell/cluster ) that was running WebSphere Application Server Network Deployment 6.1.0.23.

The Feature Pack ( downloaded as 6.1.0-WS-WAS-WSFEP-LinuxX32.tar.gz ) went in without problems, but I was then unable to start Connections.

The Annotation Exception problem is/was well known in earlier versions of WAS, as a Google search will show.

In the end, I had to do the following: -

a) Remove the Feature Pack
b) Remove the 6.1.0.23 fixpack for WAS ND ( and its corresponding SDK fix pack 23 )
c) Install the Feature Pack ( which in turns upgrades WAS and the SDK to fix pack 9 )
d) Install 6.1.0.9-WS-WASWebSvc-IFPK53084.pak and 6.1.0-WS-WASWebSvc-LinuxX32-FP0000023.pak for the Feature Pack
e) Install 6.1.0-WS-WASSDK-LinuxX32-FP0000023.pak and 6.1.0-WS-WAS-LinuxX32-FP0000023.pak

Having done all of the above, versionInfo.sh now returns: -

WVER0010I: Copyright (c) IBM Corporation 2002, 2005; All rights reserved.
WVER0012I: VersionInfo reporter version 1.15.4.3, dated 11/12/08

--------------------------------------------------------------------------------
IBM WebSphere Application Server Product Installation Status Report
--------------------------------------------------------------------------------

Report at date and time November 17, 2009 9:35:40 PM GMT

Installation
--------------------------------------------------------------------------------
Product Directory        /opt/IBM/WebSphere/AppServer
Version Directory        /opt/IBM/WebSphere/AppServer/properties/version
DTD Directory            /opt/IBM/WebSphere/AppServer/properties/version/dtd
Log Directory            /opt/IBM/WebSphere/AppServer/logs
Backup Directory         /opt/IBM/WebSphere/AppServer/properties/version/nif/backup
TMP Directory            /tmp

Product List
--------------------------------------------------------------------------------
ND                       installed
WEBSERVICES              installed

Installed Product
--------------------------------------------------------------------------------
Name                     IBM WebSphere Application Server - ND
Version                  6.1.0.23
ID                       ND
Build Level              cf230910.10
Build Date               3/10/09

Installed Product
--------------------------------------------------------------------------------
Name                     WebServices Feature Pack
Version                  6.1.0.23
ID                       WEBSERVICES
Build Level              cf230907.03
Build Date               2/21/09

--------------------------------------------------------------------------------
End Installation Status Report
--------------------------------------------------------------------------------

and, perhaps MORE importantly, Connections 2.5 now starts, and then I hit the next problem ...

CLFRO0002E: Failed to post the bookmark to Bookmarks. java.lang.ClassCastException: org.apache.abdera.parser.stax.FOMText incompatible with org.apache.axiom.om.impl.OMContainerEx

This is definitely a conflict between the Web Services Feature Pack and Lotus Connections, but I'm not yet sure how to resolve it .....

WATCH THIS SPACE ->>>>        <<<<--

SECJ0375E: Mismatch of realms during token validation

More notes from the front-line. Whilst trying to get WebSphere Portal <-> Lotus Connections <-> Lotus Quickr to place nicely using the Lightweight Third Party Authentication (LTPA) mechanism to achieve Single Sign-On, we were hitting these two messages: -

SECJ0375E: Mismatch of realms during token validation
SECJ0373E: Cannot create credential for the user <null> due to failed validation of the LTPA token. The exception is com.ibm.websphere.security.CustomRegistryException: The realm in the token: domino.uk.ibm.com:389 does not match the current realm: defaultWIMFileBasedRealm

This was being displayed in SystemOut.log on the Connections server. The second message really says it all.

When we configured the underlying WebSphere Application Server 6.1.0.23 instance for security, using a Federated Repository, Domino LDAP etc., we failed to change the realm name, but left it at the default of defaultWIMFileBasedRealm.

Interestingly, the LC25 Information Centre does imply that it's OK to leave it as-is: -

  • On the Federated Repositories page, enter an administrative user ID (for example, wasadmin) in the Primary administrative user name field. You can leave the other default settings, such as Realm name, unchanged.
    Note: The administrative user ID must be unique, and must not exist in the LDAP repository to be federated.


  • However, the LTPA token that had been generated on the portal server ( WebSphere Portal Server 6.1.0.2 running on WebSphere Application Server 6.1.0.25 ), and contained the line: -

    com.ibm.websphere.ltpa.Realm=domino.uk.ibm.com\:389

    The solution ?

    We simply changed the Realm Name from defaultWIMFileBasedRealm to domino.uk.ibm.com:389 and then restarted Connections.

    Job done, next .....

    CLFRN1152E: Unable to contact the global search service. Please start the Search application if it is not started. If the service is started, please check the network connection.

    Working through my various notes relating to a recent Lotus Connections 2.5 clustered installation, we did see this error: -

    CLFRN1152E: Unable to contact the global search service. Please start the Search application if it is not started. If the service is started, please check the network connection

    This occurred despite the Search application ( actually installed onto the same WAS instance that hosts Home Page and News, as per the recommended practice ) being started.

    The problem was due to my having failed to completely update LotusConnections-config.xml after the cluster.

    This wiki article: -


    directs you to update the config. file ( using the wasadmin scripts to check it out and back in again ) to reflect the fact that all of the services are now accessed via an HTTP server ( actually a load balancer in front of TWO HTTP servers, in my case ).

    I'd missed this crucial line: -

     All entries in this file should be updated to the Web server URL with the exception of the three bootstrap entries – two of which should not be modified at all. The only bootstrap entry which must be modified is that for search. Leave the host and port blank as shown:

    In essence, I had to change: -

        <sloc:serviceReference bootstrapHost="dm.uk.ibm.com" bootstrapPort="2811" clusterName="Homepage" enabled="true" serviceName="search" ssl_enabled="false">

    to: -

        <sloc:serviceReference bootstrapHost="" bootstrapPort="" clusterName="Homepage" enabled="true" serviceName="search" ssl_enabled="false">

    In other words, I removed the host name and port number for the bootstrapHost and bootstrapPort parameters, but *ONLY* for the Search service.

    Prior to this error, we had been seeing: -

    [09/11/09 15:01:12:978 GMT] 00000037 WsnInitCtxFac W   NMSV0602E: Naming Service unavailable. A communications error occurred.
    [09/11/09 15:01:12:979 GMT] 00000037 TagCloudServi E com.ibm.lconn.comm.internal.service.TagCloudServiceImpl getEJBSearchHandlerFromSearchEjbDefault Caught naming exception!
                                     javax.naming.ServiceUnavailableException: A communication failure occurred while attempting to obtain an initial context with the provider URL: "corbaloc:iiop:dm.uk.ibm.com:2811".  Make sure that any bootstrap address information in the URL is correct and that the target name server is running.  A bootstrap address with no port specification defaults to port 2809.  Possible causes other than an incorrect bootstrap address or unavailable name server include the network environment and workstation network configuration. [Root exception is org.omg.CORBA.TRANSIENT: java.net.ConnectException: Connection refused:host=dm.demo.ibm,port=2811  vmcid: IBM  minor code: E02  completed: No]
            at com.ibm.ws.naming.util.WsnInitCtxFactory.mapInitialReferenceFailure(WsnInitCtxFactory.java:2226)
            at com.ibm.ws.naming.util.WsnInitCtxFactory.mergeWsnNSProperties(WsnInitCtxFactory.java:1386)

                                                      

    This particular problem was, in my simple world, was that the Deployment Manager node (DM) was being contacted by the WAS instance on which Connections was installed, but that the hostname / IP address was being incorrectly resolved; note that the FQ hostname differs within the error message.

    Once we fixed the DNS name resolution ( by hacking the /etc/hosts file ), that particular error message went away, and was replaced by the aforementioned CLFRN1152E.

    Wednesday 11 November 2009

    IBM WebSphere eXtreme Scale 6 - Review to come

    Although it has not yet come up on one of my Portal projects, it's been a fact for some time that WebSphere Portal can be clustered to extremes via the WebSphere Extended Deployment. Therefore, it's timely that I am awaiting a copy of Anthony Chaves' book IBM WebSphere eXtreme Scale 6 from Packt Publishing.

    From Packt's site, here's a brief synopsis: -

    Build scalable, high-performance software with IBM's data grid
    • Get hands-on experience with eXtreme Scale APIs, and understand the different approaches to using data grids
    • Introduction to new design patterns for both eXtreme Scale and data grids in general
    • Tutorial-style guide through the major data grid features and libraries
    • Start working with a data grid through code samples and clear walkthroughs
    Not sure that I'll completely understand all of the content (!) but it should prove to be a useful reference, and will help me grow my understanding, especially as to how eXtreme Scale infrastructure works.

    Watch this space ...

    Thursday 5 November 2009

    Lotus Connections 2.5 - All clustering together ...

    Will write this up more fully as time allows, but had a frightening moment yesterday - after 1+ hours, my Connections 2.5 installation ( the first node of a two-node cluster ) failed :-(

    The LC product had successfully installed onto the node, but failed to "ripple" across to the cell that was managed by a WebSphere Application Server 6.1 Network Deployment DM node. The error message being displayed was CLFRP1261E.

    The lcinstalllog.txt wasn't particularly useful, in terms of providing further details.

    As is always the way, I couldn't find owt about this message in the Information Centre or on't'internet etc. so had to rely upon native wit and intelligence ( OK, I guessed ).

    I took a look at /tmp using the df -km command and - c'est voila - it was showing at 100% used.

    I cleared /tmp down and re-ran the installation ( the second time around, one chooses to add a standalone installation to a cell/cluster ) and it just worked.

    Therefore, I'm assuming that CLFRP1261E actually means "Hey dude, you've like got no frikking disk space in /tmp, man" or something.

    Don't take my word for it, but it did work :-)

    Sunday 1 November 2009

    Fun and Games with Windows 7

    No, before anyone asks, I haven't gone over to the dark side and "upgraded" my Mac or Ubuntu boxen to Windows 7 ....

    However, whilst staying with friends, I volunteered to help resolve an issue whereby he was getting no audio from his Windows Media Centre PC. The PC ( a Sony VAIO VGX-TP1 ) connects via a HDMI cable to a monster LG 42" LCD HD telly.

    Having worked OK whilst running Vista, all appeared to be well following an upgrade to Windows 7; however, something seemed to change, potentially due to a pesky Windows update.

    The symptoms were quite simple - no sound, anywhere, from anything, zip, nada, nowt, nuffink.

    The plumbing is quite straight-forward; a nice chunky HDMI cable from the the back of the Sony, plugged directly into one of the two HDMI ports on the telly. We tried the normal problem determination techniques; swapping HD cables, powering on/off PC and TV etc. but nothing appeared to help.

    To cut a very long ( 3 hours last night, 3 hours this morning ) story short, having upgraded/downgraded/regraded the audio drivers ( provided by Realtek ), I'd completely failed to realise that, in this brave new world, HD audio comes from the video card as much as from the sound card; the sound card only drives a so-called optical output on the rear-side of the PC. Once I downloaded and installed the latest drivers (15.​12.​75.​4.​1930) for the graphics card, an Intel Graphics Media Accelerator 950 from: -


    and rebooted, all was well.

    For reference, we also used the most up-to-date Realtek driver (R2.35) from here: -


    but this made no difference; I switched to/from the stock Windows 7 drivers, but to no avail. The "killer blow" was the Intel drivers :-)

    Apart from trial and error ( and coffee ), credit must be given to this posting: -

    Good news!  I talked to a friend that worked in the Windows 7 development at Microsoft and he had the same prob with 2 of his computers and figured out the solution.  While it doesn't make a whole lot of sense, the HDMI Audio comes from the video card drivers.  I went to Intel's website and chose my video card, and they had Windows 7 RC drivers up, I downloaded those and installed, rebooted and my HDMI audio is now back in the soundcard list and I tested it, worked great! So to all of you above, go get the latest video card drivers and try again. Worked for me!


    which provided me with the clue to upgrade the frikkin' Intel drivers :-)

    Wednesday 28 October 2009

    More portal laziness

    Following on from my earlier post about improving portal startup performance, via lazy loading, one of our customers has located an almost identical mechanism to achieve a similar outcome, as documented here: -


    The original script: -

    ./ConfigEngine.bat/sh enable-portal-light-startup-performance

    affects 37 applications: -

      [wsadmin]   1 PA_Blurb                             OK    is set to    false
      [wsadmin]   2 PA_MPagesandFavorites                OK    is set to    false
      [wsadmin]   3 PA_Properties                        OK    is set to    false
      [wsadmin]   4 PA_Eecontentandlayout                OK    is set to    false
      [wsadmin]   5 PA_appearance                        OK    is set to    false
      [wsadmin]   6 PA_Set_Permissions                   OK    is set to    false
      [wsadmin]   7 PA_portletWiring                     OK    is set to    false
      [wsadmin]   8 PA_ThemesAndSkinsMgr                 OK    is set to    false
      [wsadmin]   9 PA_Resource_Manager                  OK    is set to    false
      [wsadmin]  10 PA_TCustomizerPortApp                OK    is set to    false
      [wsadmin]  11 PA_Portlet_Manager                   OK    is set to    false
      [wsadmin]  12 PA_Manage_Webservices                OK    is set to    false
      [wsadmin]  13 PA_Web                               OK    is set to    false
      [wsadmin]  14 PA_Principals_Manager                OK    is set to    false
      [wsadmin]  15 PA_ResourceView                      OK    is set to    false
      [wsadmin]  16 PA_Credential_Admin                  OK    is set to    false
      [wsadmin]  17 PA_PolicyExplorer                    OK    is set to    false
      [wsadmin]  18 PA_PolicyEditor                      OK    is set to    false
      [wsadmin]  19 PA_PolicyEditorCA                    OK    is set to    false
      [wsadmin]  20 PA_Settings                          OK    is set to    false
      [wsadmin]  21 PA_URL_mapping                       OK    is set to    false
      [wsadmin]  22 PA_UniqueNames                       OK    is set to    false
      [wsadmin]  23 PA_Markups_Manager                   OK    is set to    false
      [wsadmin]  24 PA_Clients_Manager                   OK    is set to    false
      [wsadmin]  25 PA_Import_XML                        OK    is set to    false
      [wsadmin]  26 PA_WCM_Admin                         OK    is set to    false
      [wsadmin]  27 PA_WebScanner                        OK    is set to    false
      [wsadmin]  28 PA_FrequentUsers                     OK    is set to    false
      [wsadmin]  29 PA_Tracing                           OK    is set to    false
      [wsadmin]  30 PA_WPS_Welcome                       OK    is set to    false
      [wsadmin]  31 PA_MageVirtualPortals                OK    is set to    false
      [wsadmin]  32 PA_TateCatalogPortApp                OK    is set to    false
      [wsadmin]  33 PA_PropertiesPortApp                 OK    is set to    false
      [wsadmin]  34 PA_ParamConfig                       OK    is set to    false
      [wsadmin]  35 PA_Roles                             OK    is set to    false
      [wsadmin]  36 PA_ApplicationCatalog                OK    is set to    false
      [wsadmin]  37 PA_Policy_Status                     OK    is set to    false


    whereas this new script: -

    ./ConfigEngine.bat/sh enable-develop-mode-startup-performance

    affects 96 applications: -

      [wsadmin] Check 107 application(s)
      [wsadmin] -------------------------------------------------------------------------
      [wsadmin]   1 AJAX Proxy Configuration             OK    is set to    false
      [wsadmin]   2 CatalogHandler                       OK    is set to    false
      [wsadmin]   3                  DefaultApplication  Not mapped to WebSphere_Portal
      [wsadmin]   4 Feed_Servlet                         OK    is set to    false
      [wsadmin]   5 IEHS_war                             OK    is set to    false
      [wsadmin]   6 LWP_Mail_Servlets                    OK    is set to    false
      [wsadmin]   7 LWP_People                           OK    is set to    false
      [wsadmin]   8 Live_Object_Framework                OK    is set to    false
      [wsadmin]   9 PA_ApplicationCatalog                OK    is set to    false
      [wsadmin]  10 PA_Banner_Ad                         OK    is set to    false
      [wsadmin]  11 PA_BksFinalJSRProject                OK    is set to    false
      [wsadmin]  12 PA_Blurb                             OK    is set to    false
      [wsadmin]  13 PA_Bookmarks                         OK    is set to    false
      [wsadmin]  14 PA_Clients_Manager                   OK    is set to    false
      [wsadmin]  15 PA_Community_Port_App                OK    is set to    false
      [wsadmin]  16 PA_Credential_Admin                  OK    is set to    false
      [wsadmin]  17 PA_DoWebAccessServlet                OK    is set to    false
      [wsadmin]  18 PA_Document_Viewer                   OK    is set to    false
      [wsadmin]  19 PA_DynamicUIApp                      OK    is set to    false
      [wsadmin]  20 PA_Eecontentandlayout                OK    is set to    false
      [wsadmin]  21 PA_FS_Disambiguation                 OK    is set to    false
      [wsadmin]  22 PA_FeedReader                        OK    is set to    false
      [wsadmin]  23 PA_FrequentUsers                     OK    is set to    false
      [wsadmin]  24 PA_IBMCommonPIMPort                  OK    is set to    false
      [wsadmin]  25 PA_Import_XML                        OK    is set to    false
      [wsadmin]  26                PA_Login_Portlet_App skip   is in exclude list
      [wsadmin]  27 PA_LotusNotes                        OK    is set to    false
      [wsadmin]  28 PA_LtusDocumentViewer                OK    is set to    false
      [wsadmin]  29 PA_LusWebConferencing                OK    is set to    false
      [wsadmin]  30 PA_MPagesandFavorites                OK    is set to    false
      [wsadmin]  31 PA_MageVirtualPortals                OK    is set to    false
      [wsadmin]  32 PA_Manage_Webservices                OK    is set to    false
      [wsadmin]  33 PA_Markups_Manager                   OK    is set to    false
      [wsadmin]  34 PA_MosoftExchange2003                OK    is set to    false
      [wsadmin]  35 PA_MyTeamspaces                      OK    is set to    false
      [wsadmin]  36 PA_PTransformationApp                OK    is set to    false
      [wsadmin]  37 PA_Palette_Port_App                  OK    is set to    false
      [wsadmin]  38 PA_ParamConfig                       OK    is set to    false
      [wsadmin]  39 PA_PolicyEditor                      OK    is set to    false
      [wsadmin]  40 PA_PolicyEditorCA                    OK    is set to    false
      [wsadmin]  41 PA_PolicyExplorer                    OK    is set to    false
      [wsadmin]  42 PA_Policy_Status                     OK    is set to    false
      [wsadmin]  43 PA_PortalWSRPProxy                   OK    is set to    false
      [wsadmin]  44 PA_Portlet_Manager                   OK    is set to    false
      [wsadmin]  45 PA_Principals_Manager                OK    is set to    false
      [wsadmin]  46 PA_Properties                        OK    is set to    false
      [wsadmin]  47 PA_PropertiesPortApp                 OK    is set to    false
      [wsadmin]  48 PA_RSS                               OK    is set to    false
      [wsadmin]  49 PA_Reminder                          OK    is set to    false
      [wsadmin]  50 PA_ResourceView                      OK    is set to    false
      [wsadmin]  51 PA_Resource_Manager                  OK    is set to    false
      [wsadmin]  52 PA_Roles                             OK    is set to    false
      [wsadmin]  53 PA_SIAPI                             OK    is set to    false
      [wsadmin]  54 PA_SQL_Query                         OK    is set to    false
      [wsadmin]  55 PA_SametimeWhoIsHere                 OK    is set to    false
      [wsadmin]  56 PA_SearchSitemapPort                 OK    is set to    false
      [wsadmin]  57 PA_Search_Center                     OK    is set to    false
      [wsadmin]  58 PA_Selfcare_Port_App                 OK    is set to    false
      [wsadmin]  59 PA_Set_Permissions                   OK    is set to    false
      [wsadmin]  60 PA_Settings                          OK    is set to    false
      [wsadmin]  61 PA_SmetimeContactList                OK    is set to    false
      [wsadmin]  62 PA_TCustomizerPortApp                OK    is set to    false
      [wsadmin]  63 PA_TateCatalogPortApp                OK    is set to    false
      [wsadmin]  64 PA_ThemesAndSkinsMgr                 OK    is set to    false
      [wsadmin]  65 PA_TplApp                            OK    is set to    false
      [wsadmin]  66 PA_Tracing                           OK    is set to    false
      [wsadmin]  67 PA_URL_mapping                       OK    is set to    false
      [wsadmin]  68 PA_UniqueNames                       OK    is set to    false
      [wsadmin]  69 PA_WCMLRingPortJSR286                OK    is set to    false
      [wsadmin]  70 PA_WCMLocalRendering                 OK    is set to    false
      [wsadmin]  71 PA_WCM_Admin                         OK    is set to    false
      [wsadmin]  72 PA_WCM_Authoring_UI                  OK    is set to    false
      [wsadmin]  73 PA_WPS_Welcome                       OK    is set to    false
      [wsadmin]  74 PA_Web                               OK    is set to    false
      [wsadmin]  75 PA_WebAppIntegrator                  OK    is set to    false
      [wsadmin]  76 PA_WebScanner                        OK    is set to    false
      [wsadmin]  77 PA_appearance                        OK    is set to    false
      [wsadmin]  78 PA_portletWiring                     OK    is set to    false
      [wsadmin]  79 PA_spa                               OK    is set to    false
      [wsadmin]  80 PA_wp.feedspace                      OK    is set to    false
      [wsadmin]  81 PSESearchAdapter                     OK    is set to    false
      [wsadmin]  82 PZN_Utilities                        OK    is set to    false
      [wsadmin]  83             Personalization_Lists_6 skip   is in exclude list
      [wsadmin]  84         Personalization_Workspace_6 skip   is in exclude list
      [wsadmin]  85 Seedlist_Servlet                     OK    is set to    false
      [wsadmin]  86 SpellCheckService                    OK    is set to    false
      [wsadmin]  87            TemplateLibrary_Servlets skip   is in exclude list
      [wsadmin]  88 UserProfileRESTServlet               OK    is set to    false
      [wsadmin]  89 WSPolicyManager                      OK    is set to    false
      [wsadmin]  90 WebResourceServlet.ear               OK    is set to    false
      [wsadmin]  91                        content_j2ee skip   is in exclude list
      [wsadmin]  92 ibm_personTagServlet_war             OK    is set to    false
      [wsadmin]  93 ilwwcm-wcmimport                     OK    is set to    false
      [wsadmin]  94 ilwwcm-wcmsearchseed                 OK    is set to    false
      [wsadmin]  95                              ivtApp  Not mapped to WebSphere_Portal
      [wsadmin]  96                              jcrear skip   is in exclude list
      [wsadmin]  97 lwp.addtosametimelist_war            OK    is set to    false
      [wsadmin]  98 lwp_dynamicPersontag_war             OK    is set to    false
      [wsadmin]  99 lwp_groupsViewer_war                 OK    is set to    false
      [wsadmin] 100 lwp_peoplePicker_war                 OK    is set to    false
      [wsadmin] 101 lwp_peoplefinder_war                 OK    is set to    false
      [wsadmin] 102 odc                                  OK    is set to    false
      [wsadmin] 103 pznpublish                           OK    is set to    false
      [wsadmin] 104 pznscheduler                         OK    is set to    false
      [wsadmin] 105                               query  Not mapped to WebSphere_Portal
      [wsadmin] 106                                 wcm skip   is in exclude list
      [wsadmin] 107                                 wps skip   is in exclude list
      [wsadmin] -------------------------------------------------------------------------
      [wsadmin] Done.
      [wsadmin] Worked on 107 Applications. Modified: 96. Warning(s): 0

    You pays your money, you takes your choice ...


    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...