Monday, 17 August 2009

Lotus Forms and WebSphere Portal Together - Separated Deployment

Having built the Forms/Portal environment several times before, including this most recent post: -


I wanted to setup a slight variation whereby WebSphere Portal runs on one server and Lotus Forms Server runs on another, which is more appropriate to a product, rather than demo, environment.

In my revised environment, I'm running two VMware images on my Mac, each running Red Hat Enterprise Linux. One image, running RHEL 4, is used to run the Webform Server ( Translator and Logger ). The other image, running RHEL 5, is used to run WebSphere Portal Server.

Again, I'm using WebSphere Portal 6.1.0.2 and Lotus Forms 3.5.

The Forms server has the TranslatorServer WAS instance running on port 8085, and I can test it using the URL: -


The Log4J server is also running on the same VM, under port 4560, started using the command: -

/opt/IBM/LotusForms/Server/3.5/WebformServer/LogServer/startLogServer.sh

On the Portal VM, I'd previously installed the standard sample portlets, packaged in WebformPortletSample.war, as per the previous document.

I also installed the Lotus Forms Server API, again as previously, ensuring that the WAS configuration was correct, in terms of WebSphere Variables, Environment Entries, Classpath etc.

Once I'd deployed the portlets, I had to modify the portlet.xml and web.xml files that are supplied with these portlets, to configure them to connect to the external Webform Server, rather than to the default localhost.

This involved my editing the portlet.xml and web.xml files packaged within the portlet's WAR file as follows: -

a) Change to: -

/opt/IBM/WebSphere/wp_profile/installedApps/voyag/PA_WebformSample.ear/WebformPortSample.war/WEB-INF

b) Backup portlet.xml to portlet.xml.original

c) Edit portlet.xml and change: -

<init-param>
                        <name>translatorLocation</name>
                        <value>http://localhost:8085/translator</value>
 </init-param>
<init-param>
                        <name>logServerName</name>
                        <value>localhost</value>
</init-param>

to: -

<init-param>
                        <name>translatorLocation</name>
                        <value>http://stargate.uk.ibm.com:8085/translator</value>
</init-param>
<init-param>
                        <name>logServerName</name>
                        <value>stargate.uk.ibm.com</value>
</init-param>

e) Backup web.xml to web.xml.original

f) Edit web.xml and change: -

<init-param>
                        <param-name>translatorLocation</param-name>
                        <param-value>http://localhost:8085/translator</param-value>
</init-param>
<init-param>
                        <param-name>logServerName</param-name>
                        <param-value>localhost</param-value>
 </init-param>

to: -

<init-param>
                        <param-name>translatorLocation</param-name>
                        <param-value>http://stargate.uk.ibm.com:8085/translator</param-value>
</init-param>
<init-param>
                        <param-name>logServerName</param-name>
                        <param-value>stargate.uk.ibm.com</param-value>
 </init-param>

g) Having made these changes to the web and portlet deployment descriptors, it is then necessary to repackage and redeploy the WAR file; I chose to use the Java JAR command to expand and then recompress the WAR file, but other tools are available. Having generated a new WAR file, it's then necessary to update the existing portlet, via the Update Web Module control under Portlet Management -> Web Modules.

h) Restart the portal server - not sure why it's necessary to do this, and it may be as easier/quicker to use the WAS Admin. console to restart merely the WAR file rather than the entire WebSphere Portal infrastructure.

i) Log back into Portal and give it a try ....

PS I also found this article: -

Integrating IBM Lotus Forms with WebSphere Portal to create a form-centric application


and the Lotus Forms Information Centre: -

Deploying the Portlet Sample on a Separate Portal Server


to be of help.

No comments:

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

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