I know that that expression is supposedly a curse dating back to ancient China, but it normally reflects my status quo for which I'm extremely grateful.
I am very fortunate in that I have a great job, working for a fantastic company, with an extremely talented bunch of people, right around the world.
In the past week, I've been involved in a number of projects and activities, most of which fall into the category of my day job, as an infrastructure architect, working for IBM Lotus. I guess you could say that my/our role is to help our customers deliver exceptional web experiences ...
Looking at the next few days, there's a rather fascinating announcement coming down the line, about which I can't yet say too much, but it has the potential to change the way that IBM's customers can interact with their customers across the web, reflecting the sea change in the way that we all do business online today ( remembering that terms such as e-commerce and e-business may seem quite quaint now, but this evolution/revolution is only 10 or so years old ).
All I can say for now is, check out this teaser page -> www.ibm.com/software/info/northstar - and follow these hashtags on Twitter - http://twitter.com/#search?q=%23ibmexperience and http://twitter.com/#search?q=%23lotusknows
Remember you don't actually need to sign up to use Twitter as a consumer - you only need an account if you wish to contribute, so you can "safely" follow those of us who spend our ( perhaps too much ) time on the tricksy little social site.
So, have a browse, and ( in less than two days time on September 16 ), I hope you'll be pleased with the results ...
Geeking in technology since 1985, with IBM Development, focused upon Docker and Kubernetes on the IBM Z LinuxONE platform In the words of Dr Cathy Ryan, "If you don't write it down, it never happened". To paraphrase one of my clients, "Every day is a school day". I do, I learn, I share. The postings on this site are my own and don’t necessarily represent IBM’s positions, strategies or opinions. Remember, YMMV https://infosec.exchange/@davehay
Tuesday, 14 September 2010
Help Wanted - Why do my Lotus Connections Business Cards intermittently not get returned to WebSphere Portal ?
As part of my ongoing mission to seek out new life, and explore the wonders of inter-product communication, I'm intermittently finding that my LC Business Card ( aka Person Card ) does NOT appear in my Portal page, either via the Profiles portlet or via People Finder.
This follows my earlier reports, perhaps mistimed, of success here.
Digging around,using Firefox's Error Console, I did see this exception at some point yesterday: -
Error: BusinessCard.getProfileInfo is not a function
Source File: http://wps615.uk.ibm.com:10040/wps_semanticTag/javascript/semanticTagPerson.js?language=en
Line: 430
where semanticTagPerson.js is here: -
/opt/IBM/WebSphere/PortalServer/ui/wp.tagging.liveobject/semTagEar/Live_Object_Framework.ear/liveobjects.war/javascript/semanticTagPerson.js
It's my assumption that, at some point, we must import the BusinessCard "object" which has a number of methods, one of which should be getProfileInfo and, at some point, this import/include fails, which means that the calling JS ( semanticTagPerson.js ) no longer has access to the "right" version of the object.
If I open a browser to the URL that I have set under Resources -> URLs within the Integrated Solutions Console in WebSphere Portal : -
http://lc25.uk.ibm.com:9083/profiles/html/businessCard
I do see a BusinessCard object defined: -
var BusinessCard = {
profileServiceUrl : "http://lc25.uk.ibm.com:9083/profiles",
semanticTagServiceUrl : "http://lc25.uk.ibm.com:9083/profiles/ibm_semanticTagServlet",
request : null,
and an associated getProfileInfo function: -
getProfileInfo : function(crossDomainRequest, callback, keyValue, searchKey) {
var searchKeySpecified = !(searchKey == null);
if (!searchKeySpecified) searchKey = "email"; // default search is by email
// logic to detect whether key is email or not. if not email and no search key was specified, then assume key to be userid
if (keyValue.indexOf("@") == -1 && !searchKeySpecified) searchKey = "userid";
if (!crossDomainRequest) {
if (window.ActiveXObject) {
request = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest) {
request = new XMLHttpRequest();
}
if (request) {
// synchronous request
request.open("GET", BusinessCard.profileServiceUrl + '/json/profile.do?' + searchKey + '=' + keyValue + '&variable=person', false);
request.send(null);
if (request.status == 200) {
eval(request.responseText);
return person;
}
}
}
else {
var script = document.createElement("script");
script.src = BusinessCard.profileServiceUrl + '/json/profile.do?' + searchKey + '=' + keyValue + '&callback=' + callback;
document.getElementsByTagName('head')[0].appendChild(script);
}
}
Therefore, it's my view that there's some kind of network inconsistency between Portal and Connections that intermittently fails to connect to the URL, and therefore returns the WRONG BusinessCard object, meaning that things don't work.
What I did find that, to move from this not working to working, I merely needed to suspend and resume my Ubuntu laptop on which I'm running LDAP, Portal and Connections in separate VMware images. My current view is that there's some kind of network inconsistency between Portal and Connections, that gets "cleared" by the suspend/resume operation of the host OS, even though all of the guests are using NAT rather than bridged networking.
So, over to the community - what AM i missing ?
For the record, I've got WebSphere Portal 6.1.5.1 ( upgraded from 6.1.5.0 ) and Lotus Connections 2.5.0.2 ( LC2502_Fixpack.jar, LO51606.jar, LO51608.jar, LO51610.jar, LO53141.jar, LO51605.jar, LO51607.jar, LO51609.jar, LO51615.jar ).
This follows my earlier reports, perhaps mistimed, of success here.
Digging around,using Firefox's Error Console, I did see this exception at some point yesterday: -
Error: BusinessCard.getProfileInfo is not a function
Source File: http://wps615.uk.ibm.com:10040/wps_semanticTag/javascript/semanticTagPerson.js?language=en
Line: 430
where semanticTagPerson.js is here: -
/opt/IBM/WebSphere/PortalServer/ui/wp.tagging.liveobject/semTagEar/Live_Object_Framework.ear/liveobjects.war/javascript/semanticTagPerson.js
It's my assumption that, at some point, we must import the BusinessCard "object" which has a number of methods, one of which should be getProfileInfo and, at some point, this import/include fails, which means that the calling JS ( semanticTagPerson.js ) no longer has access to the "right" version of the object.
If I open a browser to the URL that I have set under Resources -> URLs within the Integrated Solutions Console in WebSphere Portal : -
http://lc25.uk.ibm.com:9083/profiles/html/businessCard
I do see a BusinessCard object defined: -
var BusinessCard = {
profileServiceUrl : "http://lc25.uk.ibm.com:9083/profiles",
semanticTagServiceUrl : "http://lc25.uk.ibm.com:9083/profiles/ibm_semanticTagServlet",
request : null,
and an associated getProfileInfo function: -
getProfileInfo : function(crossDomainRequest, callback, keyValue, searchKey) {
var searchKeySpecified = !(searchKey == null);
if (!searchKeySpecified) searchKey = "email"; // default search is by email
// logic to detect whether key is email or not. if not email and no search key was specified, then assume key to be userid
if (keyValue.indexOf("@") == -1 && !searchKeySpecified) searchKey = "userid";
if (!crossDomainRequest) {
if (window.ActiveXObject) {
request = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest) {
request = new XMLHttpRequest();
}
if (request) {
// synchronous request
request.open("GET", BusinessCard.profileServiceUrl + '/json/profile.do?' + searchKey + '=' + keyValue + '&variable=person', false);
request.send(null);
if (request.status == 200) {
eval(request.responseText);
return person;
}
}
}
else {
var script = document.createElement("script");
script.src = BusinessCard.profileServiceUrl + '/json/profile.do?' + searchKey + '=' + keyValue + '&callback=' + callback;
document.getElementsByTagName('head')[0].appendChild(script);
}
}
Therefore, it's my view that there's some kind of network inconsistency between Portal and Connections that intermittently fails to connect to the URL, and therefore returns the WRONG BusinessCard object, meaning that things don't work.
What I did find that, to move from this not working to working, I merely needed to suspend and resume my Ubuntu laptop on which I'm running LDAP, Portal and Connections in separate VMware images. My current view is that there's some kind of network inconsistency between Portal and Connections, that gets "cleared" by the suspend/resume operation of the host OS, even though all of the guests are using NAT rather than bridged networking.
So, over to the community - what AM i missing ?
For the record, I've got WebSphere Portal 6.1.5.1 ( upgraded from 6.1.5.0 ) and Lotus Connections 2.5.0.2 ( LC2502_Fixpack.jar, LO51606.jar, LO51608.jar, LO51610.jar, LO53141.jar, LO51605.jar, LO51607.jar, LO51609.jar, LO51615.jar ).
Wednesday, 8 September 2010
VMware Tools - Forcing the Issue
I managed to get into a state with VMware Tools on a Red Hat VM ( RHEL 5.5 if it helps ), where I couldn't start or use the tools, and yet couldn't install them either :-)
Having extracted the contents of the tools archive: -
VMwareTools-8.4.3-282343.tar.gz
to /tmp, I tried to run the installation: -
/tmp/vmware-tools-distrib/vmware-install.pl
and immediately got: -
A previous installation of VMware Tools has been detected.
The previous installation was made by the tar installer (version 4).
Keeping the tar4 installer database format.
You have a version of VMware Tools installed. Continuing this install will
first uninstall the currently installed version. Do you wish to continue?
(yes/no) [yes]
Error: Unable to execute "/usr/bin/vmware-uninstall-tools.pl.
Uninstall failed. Please correct the failure and re run the install.
Execution aborted.
which was less than helpful.
So I can't install the tools because I can't uninstall the tools - which I can't use in the first place :-)
A quickr Google of the exception ( Error: Unable to execute "/usr/bin/vmware-uninstall-tools.pl. ) led me to the VMware forums: -
http://communities.vmware.com/thread/221719
which, although it didn't appear to help the original poster, helped me in that the responder said: -
"...Also since "vmware-install.pl" is a link to "/vmware-tools-distrib/bin/vmware-uninstall-tools.pl"..."
Lo and behold, he's right - I ran the following command: -
/tmp/vmware-tools-distrib/bin/vmware-uninstall-tools.pl
and saw: -
Uninstalling the tar installation of VMware Tools.
Restoring the kernel initrd image.:
The removal of VMware Tools 8.4.3 build-282343 for Linux completed
successfully. Thank you for having tried this software.
I was then able to install the tools again using /tmp/vmware-tools-distrib/vmware-install.pl and all is good.
Having extracted the contents of the tools archive: -
VMwareTools-8.4.3-282343.tar.gz
to /tmp, I tried to run the installation: -
/tmp/vmware-tools-distrib/vmware-install.pl
and immediately got: -
A previous installation of VMware Tools has been detected.
The previous installation was made by the tar installer (version 4).
Keeping the tar4 installer database format.
You have a version of VMware Tools installed. Continuing this install will
first uninstall the currently installed version. Do you wish to continue?
(yes/no) [yes]
Error: Unable to execute "/usr/bin/vmware-uninstall-tools.pl.
Uninstall failed. Please correct the failure and re run the install.
Execution aborted.
which was less than helpful.
So I can't install the tools because I can't uninstall the tools - which I can't use in the first place :-)
A quickr Google of the exception ( Error: Unable to execute "/usr/bin/vmware-uninstall-tools.pl. ) led me to the VMware forums: -
http://communities.vmware.com/thread/221719
which, although it didn't appear to help the original poster, helped me in that the responder said: -
"...Also since "vmware-install.pl" is a link to "/vmware-tools-distrib/bin/vmware-uninstall-tools.pl"..."
Lo and behold, he's right - I ran the following command: -
/tmp/vmware-tools-distrib/bin/vmware-uninstall-tools.pl
and saw: -
Uninstalling the tar installation of VMware Tools.
Restoring the kernel initrd image.:
The removal of VMware Tools 8.4.3 build-282343 for Linux completed
successfully. Thank you for having tried this software.
I was then able to install the tools again using /tmp/vmware-tools-distrib/vmware-install.pl and all is good.
/etc/hosts or DNS - sorting it out on Red Hat Enterprise Linux
During my recent battle with Domino and hostnames ( more to come soon ), I stumbled upon this rather useful little configuration file: -
/etc/nsswitch.conf
in Red Hat Enterprise Linux 5.4.
Amongst other gems, it contains the magic line: -
hosts: files dns
which means that hosts are looked up via /etc/hosts before heading off to the wacky world of DNS.
For the record, AIX uses an environment variable called NSORDER
export NSORDER=bind,local,nis
as per this wiki article: -
Installing and configuring IBM Lotus Domino 8.5 on AIX
Now is that useful, or what ?
/etc/nsswitch.conf
in Red Hat Enterprise Linux 5.4.
Amongst other gems, it contains the magic line: -
hosts: files dns
which means that hosts are looked up via /etc/hosts before heading off to the wacky world of DNS.
For the record, AIX uses an environment variable called NSORDER
export NSORDER=bind,local,nis
as per this wiki article: -
Installing and configuring IBM Lotus Domino 8.5 on AIX
Now is that useful, or what ?
Starting Lotus Domino on Linux
This is one of those facts that I knew, and yet had forgotten - the primary reason that I blog is to write down what happened, so I don't forget it or, if I do forget it, to find it again :-)
Working with Lotus Domino 8.5.1 FP3 on Red Hat Enterprise Linux 5.4, I was wondering why I was unable to start the server, or its constituent tasks: -
a) Log in as the Notes user ( idcuser in my case )
b) Change to the Notes data directory
cd /local/notesdata
c) Execute the Domino task e.g. server, http etc.: -
/opt/ibm/lotus/notes/latest/linux/http
d) Get the message: -
/opt/ibm/lotus/notes/latest/linux/http: error while loading shared libraries: libhttpstack.so: cannot open shared object file: No such file or directory
I was then directed to an existing startup script: -
/local/notesdata/DomShrct.sh
which contains precisely one line: -
su idcuser -c "cd /local/notesdata; /opt/ibm/lotus/bin/server; "
Note that it executes the Domino binary from /opt/ibm/lotus/bin - exploring this further with: -
ls -al /opt/ibm/lotus/bin/server
shows me that it's "merely" a symbolic link to another place: -
lrwxrwxrwx 1 root root 32 Sep 2 20:37 /opt/ibm/lotus/bin/server -> /opt/ibm/lotus/bin/tools/startup
However, it works a treat, and I can use a similar syntax for other tasks: -
su idcuser -c "cd /local/notesdata; /opt/ibm/lotus/bin/http;"
su idcuser -c "cd /local/notesdata; /opt/ibm/lotus/bin/ldapsearch;"
etc.
Is that sweet, or what ?
Working with Lotus Domino 8.5.1 FP3 on Red Hat Enterprise Linux 5.4, I was wondering why I was unable to start the server, or its constituent tasks: -
a) Log in as the Notes user ( idcuser in my case )
b) Change to the Notes data directory
cd /local/notesdata
c) Execute the Domino task e.g. server, http etc.: -
/opt/ibm/lotus/notes/latest/linux/http
d) Get the message: -
/opt/ibm/lotus/notes/latest/linux/http: error while loading shared libraries: libhttpstack.so: cannot open shared object file: No such file or directory
I was then directed to an existing startup script: -
/local/notesdata/DomShrct.sh
which contains precisely one line: -
su idcuser -c "cd /local/notesdata; /opt/ibm/lotus/bin/server; "
Note that it executes the Domino binary from /opt/ibm/lotus/bin - exploring this further with: -
ls -al /opt/ibm/lotus/bin/server
shows me that it's "merely" a symbolic link to another place: -
lrwxrwxrwx 1 root root 32 Sep 2 20:37 /opt/ibm/lotus/bin/server -> /opt/ibm/lotus/bin/tools/startup
However, it works a treat, and I can use a similar syntax for other tasks: -
su idcuser -c "cd /local/notesdata; /opt/ibm/lotus/bin/http;"
su idcuser -c "cd /local/notesdata; /opt/ibm/lotus/bin/ldapsearch;"
etc.
Is that sweet, or what ?
Monday, 6 September 2010
Lotus Connections 2.5 - Linking from the Person Card - Don't use JavaScript in your URLs
Following on from my earlier post, I've hit a roadblock in my plan to create a link from the Lotus Connections Person Card which opens in a new, rather than in the same, window.
As I'd mentioned, I was using the sloc:serviceReference stanza in LotusConnections-config.xml to create the link, using the code: -
<sloc:serviceReference serviceName="googleService"
href="http://www.google.com" enabled="true"
ssl_href="http://www.google.com" ssl_enabled="false"
person_card_service_url_pattern="/search?hl=en&q={email}&btnG=Google+Search"
person_card_service_name_js_eval="'Google Me'"/>
which works OK, but causes the Google page to open in the same window as Connections.
Therefore, I thought I'd be a smartypants, and replace the href= tag with something that I know works in "pure" HTML: -
<a href="javascript:void(window.open('http://www.google.com','width=300','height=300'))">Google Me</a>
giving me: -
<sloc:serviceReference serviceName="googleService"
href="http://www.google.com" enabled="true"
ssl_href="http://www.google.com" ssl_enabled="false"
person_card_service_url_pattern="/search?hl=en&q={email}&btnG=Google+Search"
person_card_service_name_js_eval="'Google Me'"/
Well, that was a great idea .... until I started Profiles, at which point I saw: -
9/6/10 15:55:11:687 BST] 00000051 VenturaConfig E com.ibm.ventura.internal.config.VenturaConfigurationProviderImpl getServiceURL CLFRO2006E: com.ibm.ventura.internal.config.VenturaConfigurationProviderImpl href attribute in googleService service element cannot be used to construct a proper URL
java.net.MalformedURLException: unknown protocol: javascript
at java.net.URL.<init>(URL.java:609)
at java.net.URL.<init>(URL.java:499)
at java.net.URL.<init>(URL.java:448)
in the SystemOut.log file.
Looking at the exception: -
java.net.MalformedURLException: unknown protocol: javascript
this actually makes sense, as Connections is taking the contents of the href= tag, and using it to create a Java object of type java.net.URL which, as per the Javadoc
<snip>
Parameters:
doesn't expect to see stuff other than a "real" URL encoded within it.
So, I'll have to search elsewhere - not sure where but .... watch this space ....
As I'd mentioned, I was using the sloc:serviceReference stanza in LotusConnections-config.xml to create the link, using the code: -
<sloc:serviceReference serviceName="googleService"
href="http://www.google.com" enabled="true"
ssl_href="http://www.google.com" ssl_enabled="false"
person_card_service_url_pattern="/search?hl=en&q={email}&btnG=Google+Search"
person_card_service_name_js_eval="'Google Me'"/>
which works OK, but causes the Google page to open in the same window as Connections.
Therefore, I thought I'd be a smartypants, and replace the href= tag with something that I know works in "pure" HTML: -
<a href="javascript:void(window.open('http://www.google.com','width=300','height=300'))">Google Me</a>
giving me: -
<sloc:serviceReference serviceName="googleService"
href="http://www.google.com" enabled="true"
ssl_href="http://www.google.com" ssl_enabled="false"
person_card_service_url_pattern="/search?hl=en&q={email}&btnG=Google+Search"
person_card_service_name_js_eval="'Google Me'"/
Well, that was a great idea .... until I started Profiles, at which point I saw: -
9/6/10 15:55:11:687 BST] 00000051 VenturaConfig E com.ibm.ventura.internal.config.VenturaConfigurationProviderImpl getServiceURL CLFRO2006E: com.ibm.ventura.internal.config.VenturaConfigurationProviderImpl href attribute in googleService service element cannot be used to construct a proper URL
java.net.MalformedURLException: unknown protocol: javascript
at java.net.URL.<init>(URL.java:609)
at java.net.URL.<init>(URL.java:499)
at java.net.URL.<init>(URL.java:448)
in the SystemOut.log file.
Looking at the exception: -
java.net.MalformedURLException: unknown protocol: javascript
this actually makes sense, as Connections is taking the contents of the href= tag, and using it to create a Java object of type java.net.URL which, as per the Javadoc
<snip>
Parameters:
- protocol - the name of the protocol to use.
host - the name of the host.
port - the port number on the host.
file - the file on the host
- MalformedURLException - if an unknown protocol is specified.
doesn't expect to see stuff other than a "real" URL encoded within it.
So, I'll have to search elsewhere - not sure where but .... watch this space ....
Lotus Connections 2.5 - Checking Out Configurations Don't Work For Me
I'm currently working on a requirement to add a link to the top-half of the Lotus Connections 2.5 Business Card, linking off to a separate application. Part of the requirement is to open this separate application in a new window, rather than over-writing the window in which the user is currently accessing Connections or, at least, the Business Card.
Following the Information Centre here: -
Adding third-party links via the XML configuration file
I'm directed to modify LotusConnections-config.xml *AND* service-location.xsd
Now I'm quite happy to check out the configuration files: -
/opt/IBM/WebSphere/AppServer/profiles/Dmgr01/bin/wsadmin.sh -lang jython
execfile("/opt/IBM/WebSphere/AppServer/profiles/Dmgr01/config/bin_lc_admin/connectionsConfig.py")
LCConfigService.checkOutConfig("/root","lc25Cell01")
and then hand edit LotusConnections-config.xml and service-location.xsd before checking them back in again: -
LCConfigService.checkInConfig()
and synchronise the nodes: -
synchAllNodes()
*BUT* I didn't expect the check in process to (a) not update the copy of service-location.xsd held within the cell configuration and (b) even worse, revert it back to it's pre-exported state.
The symptoms that I saw, when starting Profiles, were: -
9/6/10 15:04:11:420 BST] 0000002e VenturaConfig E com.ibm.ventura.internal.config.VenturaConfigFileValidator$DefaultContentHandler error CLFRO2024I: Error Line 142: cvc-enumeration-valid: Value 'googleService' is not facet-valid with respect to enumeration '[activities, blogs, communities, directory, dogear, personTag, presenceAwareness, profiles, sametimeLinks, homepage, quickr, search, wikis, files, global, news, mobile]'. It must be a value from the enumeration.
org.xml.sax.SAXParseException: cvc-enumeration-valid: Value 'googleService' is not facet-valid with respect to enumeration '[activities, blogs, communities, directory, dogear, personTag, presenceAwareness, profiles, sametimeLinks, homepage, quickr, search, wikis, files, global, news, mobile]'. It must be a value from the enumeration.
at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
...
[9/6/10 15:04:11:432 BST] 0000002e VenturaConfig E com.ibm.ventura.internal.config.VenturaConfigurationProviderImpl getConfiguration CLFRO2001E: com.ibm.ventura.internal.config.VenturaConfigurationProviderImpl Error processing config file: path /opt/IBM/WebSphere/AppServer/profiles/AppSrv01//config//cells//lc25Cell01//LotusConnections-config, filename LotusConnections-config.xml
com.ibm.ventura.internal.config.exception.ValidationException: cvc-enumeration-valid: Value 'googleService' is not facet-valid with respect to enumeration '[activities, blogs, communities, directory, dogear, personTag, presenceAwareness, profiles, sametimeLinks, homepage, quickr, search, wikis, files, global, news, mobile]'. It must be a value from the enumeration.
at com.ibm.ventura.internal.config.VenturaConfigFileValidator.validateDoc(VenturaConfigFileValidator.java:118)
at com.ibm.ventura.internal.config.VenturaConfigFileValidator.validateConfigurationFile(VenturaConfigFileValidator.java:79)
at com.ibm.ventura.internal.config.VenturaConfigurationProviderImpl.getConfiguration(VenturaConfigurationProviderImpl.java:370)
...
Now the exception makes it quite clear - I've referenced a service called googleService which doesn't exist in service-location.xsd *because* the check-in process didn't upload the changes.
This is the "vanilla" copy of the file: -
<xsd:simpleType name="serviceNames">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="activities" />
<xsd:enumeration value="blogs" />
<xsd:enumeration value="communities" />
<xsd:enumeration value="directory" />
<xsd:enumeration value="dogear" />
<xsd:enumeration value="personTag" />
<xsd:enumeration value="presenceAwareness" />
<xsd:enumeration value="profiles" />
<xsd:enumeration value="sametimeLinks" />
<xsd:enumeration value="homepage" />
<xsd:enumeration value="quickr" />
<xsd:enumeration value="search" />
<xsd:enumeration value="wikis" />
<xsd:enumeration value="files" />
<xsd:enumeration value="global" />
<xsd:enumeration value="news" />
<xsd:enumeration value="mobile" />
</xsd:restriction>
</xsd:simpleType>
and this is my edited version: -
<xsd:simpleType name="serviceNames">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="activities" />
<xsd:enumeration value="blogs" />
<xsd:enumeration value="communities" />
<xsd:enumeration value="directory" />
<xsd:enumeration value="dogear" />
<xsd:enumeration value="personTag" />
<xsd:enumeration value="presenceAwareness" />
<xsd:enumeration value="profiles" />
<xsd:enumeration value="sametimeLinks" />
<xsd:enumeration value="homepage" />
<xsd:enumeration value="quickr" />
<xsd:enumeration value="search" />
<xsd:enumeration value="wikis" />
<xsd:enumeration value="files" />
<xsd:enumeration value="global" />
<xsd:enumeration value="news" />
<xsd:enumeration value="mobile" />
<xsd:enumeration value="googleService" />
</xsd:restriction>
</xsd:simpleType>
Once I realised, all was well.
For the record, here's the entry that I added into LotusConnections-config.xml as per the Information Centre: -
<sloc:serviceReference serviceName="googleService"
href="http://www.google.com" enabled="true"
ssl_href="http://www.google.com" ssl_enabled="false"
person_card_service_url_pattern="/search?hl=en&q={email}&btnG=Google+Search"
person_card_service_name_js_eval="'Google Me'"/>
I'll keep hacking away to achieve my objective of opening the Google service in a new window, and report back.
Following the Information Centre here: -
Adding third-party links via the XML configuration file
I'm directed to modify LotusConnections-config.xml *AND* service-location.xsd
Now I'm quite happy to check out the configuration files: -
/opt/IBM/WebSphere/AppServer/profiles/Dmgr01/bin/wsadmin.sh -lang jython
execfile("/opt/IBM/WebSphere/AppServer/profiles/Dmgr01/config/bin_lc_admin/connectionsConfig.py")
LCConfigService.checkOutConfig("/root","lc25Cell01")
and then hand edit LotusConnections-config.xml and service-location.xsd before checking them back in again: -
LCConfigService.checkInConfig()
and synchronise the nodes: -
synchAllNodes()
*BUT* I didn't expect the check in process to (a) not update the copy of service-location.xsd held within the cell configuration and (b) even worse, revert it back to it's pre-exported state.
The symptoms that I saw, when starting Profiles, were: -
9/6/10 15:04:11:420 BST] 0000002e VenturaConfig E com.ibm.ventura.internal.config.VenturaConfigFileValidator$DefaultContentHandler error CLFRO2024I: Error Line 142: cvc-enumeration-valid: Value 'googleService' is not facet-valid with respect to enumeration '[activities, blogs, communities, directory, dogear, personTag, presenceAwareness, profiles, sametimeLinks, homepage, quickr, search, wikis, files, global, news, mobile]'. It must be a value from the enumeration.
org.xml.sax.SAXParseException: cvc-enumeration-valid: Value 'googleService' is not facet-valid with respect to enumeration '[activities, blogs, communities, directory, dogear, personTag, presenceAwareness, profiles, sametimeLinks, homepage, quickr, search, wikis, files, global, news, mobile]'. It must be a value from the enumeration.
at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
...
[9/6/10 15:04:11:432 BST] 0000002e VenturaConfig E com.ibm.ventura.internal.config.VenturaConfigurationProviderImpl getConfiguration CLFRO2001E: com.ibm.ventura.internal.config.VenturaConfigurationProviderImpl Error processing config file: path /opt/IBM/WebSphere/AppServer/profiles/AppSrv01//config//cells//lc25Cell01//LotusConnections-config, filename LotusConnections-config.xml
com.ibm.ventura.internal.config.exception.ValidationException: cvc-enumeration-valid: Value 'googleService' is not facet-valid with respect to enumeration '[activities, blogs, communities, directory, dogear, personTag, presenceAwareness, profiles, sametimeLinks, homepage, quickr, search, wikis, files, global, news, mobile]'. It must be a value from the enumeration.
at com.ibm.ventura.internal.config.VenturaConfigFileValidator.validateDoc(VenturaConfigFileValidator.java:118)
at com.ibm.ventura.internal.config.VenturaConfigFileValidator.validateConfigurationFile(VenturaConfigFileValidator.java:79)
at com.ibm.ventura.internal.config.VenturaConfigurationProviderImpl.getConfiguration(VenturaConfigurationProviderImpl.java:370)
...
Now the exception makes it quite clear - I've referenced a service called googleService which doesn't exist in service-location.xsd *because* the check-in process didn't upload the changes.
This is the "vanilla" copy of the file: -
<xsd:simpleType name="serviceNames">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="activities" />
<xsd:enumeration value="blogs" />
<xsd:enumeration value="communities" />
<xsd:enumeration value="directory" />
<xsd:enumeration value="dogear" />
<xsd:enumeration value="personTag" />
<xsd:enumeration value="presenceAwareness" />
<xsd:enumeration value="profiles" />
<xsd:enumeration value="sametimeLinks" />
<xsd:enumeration value="homepage" />
<xsd:enumeration value="quickr" />
<xsd:enumeration value="search" />
<xsd:enumeration value="wikis" />
<xsd:enumeration value="files" />
<xsd:enumeration value="global" />
<xsd:enumeration value="news" />
<xsd:enumeration value="mobile" />
</xsd:restriction>
</xsd:simpleType>
and this is my edited version: -
<xsd:simpleType name="serviceNames">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="activities" />
<xsd:enumeration value="blogs" />
<xsd:enumeration value="communities" />
<xsd:enumeration value="directory" />
<xsd:enumeration value="dogear" />
<xsd:enumeration value="personTag" />
<xsd:enumeration value="presenceAwareness" />
<xsd:enumeration value="profiles" />
<xsd:enumeration value="sametimeLinks" />
<xsd:enumeration value="homepage" />
<xsd:enumeration value="quickr" />
<xsd:enumeration value="search" />
<xsd:enumeration value="wikis" />
<xsd:enumeration value="files" />
<xsd:enumeration value="global" />
<xsd:enumeration value="news" />
<xsd:enumeration value="mobile" />
<xsd:enumeration value="googleService" />
</xsd:restriction>
</xsd:simpleType>
Once I realised, all was well.
For the record, here's the entry that I added into LotusConnections-config.xml as per the Information Centre: -
<sloc:serviceReference serviceName="googleService"
href="http://www.google.com" enabled="true"
ssl_href="http://www.google.com" ssl_enabled="false"
person_card_service_url_pattern="/search?hl=en&q={email}&btnG=Google+Search"
person_card_service_name_js_eval="'Google Me'"/>
I'll keep hacking away to achieve my objective of opening the Google service in a new window, and report back.
Subscribe to:
Posts (Atom)
Note to self - Firefox and local connections
Whilst trying to hit my NAS from Firefox on my Mac, I kept seeing errors such as:- Unable to connect Firefox can’t establish a connection t...

-
Error "ldap_sasl_interactive_bind_s: Unknown authentication method (-6)" on a LDAPSearch command ...Whilst building my mega Connections / Domino / Portal / Quickr / Sametime / WCM environment recently, I was using the LDAPSearch command tha...
-
Another long story cut short, but I saw this: - curl: (58) unable to set private key file: 'dave.pem' type PEM from my Ansible...
-
Why oh why do I forget this ? Running this command : - ldapsearch -h ad2012.uk.ibm.com -p 389 -D CN=bpmbind,CN=Users,DC=uk,DC=ibm,DC=com -w...