Installing and setting up the MQSeries Workflow Web Client

The following sections provide installation hints for unsupported environments. They can help you getting started, but they are not guaranteed to work. Note that most of these setups have only been tested on Windows NT. Additional or different settings may be necessary for other platforms.

Setup for BEA WebLogic V5.1

  1. In <WLDir>\startWebLogic.cmd add
     <MQWFDir>\bin\java<VRMS>\fmcojagt.jar;<MQWFDir>\WebClient\fmcohcli.jar
    to the PRE_CLASSPATH setting.
  2. In <WLDir>\weblogic.properties add the following line:
     weblogic.httpd.webApp.MQWFClient=<MQWFDir>/WebClient/webpages
    Make sure to use forward slashes ('/') as directory separators.
  3. Edit the <MQWFDir>/WebClient/webpages/WEB-INF/web.xml file and enable the following lines if you want to use the <MQWFDir>/WebClient/WebClient.properties configuration file:
     <init-param>
      <param-name>ConfigurationFile</param-name>
      <param-value><MQWFDir>/WebClient/WebClient.properties</param-value>
     </init-param>
  4. To run the Web Client:
    1. Start <WLDir>\startWebLogic.cmd
    2. Start your Web browser and point it to http://localhost:7001/MQWFClient/RTC.html

Setup for Allaire JRun V3.0

  1. Make a backup copy of the <MQWFDir>/WebClient/webpages/WEB-INF/web.xml file. There have been instances where this file was overwritten during configuration of the Web application.
  2. Create a new Server for MQSeries Workflow:
    1. Copy the directory <JRDir>/servers/default to <JRDir>/servers/fmc.
    2. Edit the <JRDir>/lib/jvms.properties file and add the following line:
       fmc=<JRDir>/servers/fmc
    3. Edit the <JRDir>/servers/fmc/local.properties file and change the following property to read:
       jrun.server.displayname=JRun MQWF Server
    Read the chapter 'Server Creation' in the JRun online documentation for more details.
  3. Make sure the JRun Admin Server is running.
  4. Start the JRun Management Console (JMC).
  5. Expand the 'JRun MQWF Server' node in the tree on the left.
  6. In the 'Java Settings' branch, edit the 'JRun Control Port' setting and assign to it an unused port number (it still has the same port as the default server it was copied from).
  7. On the same panel, add <MQWFDir>/bin/java<VRMS>/fmcojagt.jar and <MQWFDir>/WebClient/fmcohcli.jar to the 'Classpath' setting.
  8. If you are using the built-in JRun Web server instead of an external Web server, open the 'JRun Web Server' branch and assign an unused port number to the 'Web Server Port' setting, for example, 8080.
  9. Select the 'Web Applications' branch and delete the two Web applications from the default server, 'Default User Application' and 'JRun Demo'.
  10. Click on 'Create an Application'.
  11. Select 'JRun MQWF Server' in the 'JRun Server Name' list box.
  12. Enter 'MQSeries Workflow' in the 'Application Name' field.
  13. Enter '/MQWFClient' in the 'Application URL' field.
  14. Enter '<MQWFDir>/WebClient/webpages' in the 'Application Root Dir' field.
  15. Click on 'create'.
  16. Edit the <MQWFDir>/WebClient/webpages/WEB-INF/web.xml file and enable the following lines if you want to use the <MQWFDir>/WebClient/WebClient.properties configuration file:
     <init-param>
      <param-name>ConfigurationFile</param-name>
      <param-value><MQWFDir>/WebClient/WebClient.properties</param-value>
     </init-param>
  17. To run the Web Client:
    1. Select 'JRun Web Server' in the tree on left.
    2. Click the 'start server' button.
    3. Start your Web browser and point it to http://localhost:8080/MQWFClient/RTC.html
    4. If you see the logon page, but get an error when trying to log on, check if the <MQWFDir>/WebClient/webpages/WEB-INF/web.xml file has been overwritten and restore it from your backup, if necessary.

Setup for Apache Tomcat V3.1/V3.2

Apache Tomcat is an open source project that can be found at http://jakarta.apache.org. It is recommended you use Tomcat Version 3.2.1 which supports the Servlet V2.2 and JSP V1.1 specifications.

  1. In <TCDir>\bin\tomcat.bat:
  2. In <TCDir>\conf\server.xml:
  3. Edit the <MQWFDir>/WebClient/webpages/WEB-INF/web.xml file and enable the following lines if you want to use the <MQWFDir>/WebClient/WebClient.properties configuration file:
     <init-param>
      <param-name>ConfigurationFile</param-name>
      <param-value><MQWFDir>/WebClient/WebClient.properties</param-value>
     </init-param>
  4. To run the Web Client:
    1. Start <TCDir>\bin\startup.bat
    2. Start your Web browser and point it to http://localhost:8080/MQWFClient/RTC.html
  5. If the com.ibm.workflow.api package cannot be found when compiling the JSPs and you are using directories with blanks in their names on the CLASSPATH, try using the short names instead. For example, use
     set CP=%CP%;c:\Progra~1\MQSeri~1\bin\java3300\fmcojagt.jar;c:\Progra~1\MQSeri~1\bin\fmcohcli.jar
    instead of
     set CP="%CP%;c:\Program Files\MQSeries Workflow\bin\java3300\fmcojagt.jar;c:\Program Files\MQSeries Workflow\bin\fmcohcli.jar"

Setup for Inprise Application Server V4.1

  1. In <MQWFDir>/WebClient/WebClient.properties, set the following:
     DocumentRoot=<MQWFDir>/WebClient/webpages
  2. Edit the file <IASDir>/properties/server/<ServerName>/java.options and add the following line:
     -classpath <MQWFDir>\WebClient\fmcohcli.jar;<MQWFDir>\bin\JAVA<VRMS>\fmcojagt.jar
  3. Start the Inprise Application Server and go to http://localhost:9090. If the Inprise AS is running, you should be connected to the Administration Console.
  4. Log on, select the HTTP Web Engine, and press "Manage".
  5. Under "Setup", select "File Aliases".
  6. Add a new entry with Alias Pathname "/MQWFClient" and Full Pathname "<MQWFDir>/WebClient/webpages".
  7. Under "Servlet Aliases", add the alias "/MQWFClient/servlet" and under Servlet Invoked, specify "invoker".
  8. Select the "Servlets" button and select "Add" to add the servlet: Specify "Main" for the servlet name and "com.ibm.workflow.servlet.client.Main" as the Servlet.
  9. Under "Properties", specify "ConfigurationFile" as Name, and <MQWFDir>\WebClient\WebClient.properties for the servlet's properties file.
  10. To run the Web Client:
    1. Shutdown and restart the Inprise Application server.
    2. Start your Web browser and point it to http://localhost:8080/MQWFClient/RTC.html

Setup for Netscape/Sun/AOL iPlanet Web Server V4.1

  1. Go to the <iPDir>/<server>/config directory where <iPDir> denotes the iPlanet installation directory and <server> denotes the ID of the server where you want to configure the Web Client.
  2. Edit the jvm12.conf file and add the following to the jvm.classpath setting:
     jvm.classpath=...<MQWFDir>/WebClient/fmcohcli.jar;<MQWFDir>/bin/JAVA<VRMS>/fmcojagt.jar
    Be sure to use the correct path separator character for your platform. Note that it is not sufficient to add these .jar files to the servlet's classpath, this will result in java.lang.MissingResourceExceptions.
  3. Edit the obj.conf file and add the following line to the <Object name="default"> section:
     NameTrans fn="pfx2dir" from="/MQWFClient" dir="<MQWFDir>/WebClient/webpages"
  4. Edit the rules.properties file and add the following line:
     /servlet/Main=MQWFClient
  5. Edit the servlets.properties file and add the following lines:
     servlet.MQWFClient.code=com.ibm.workflow.servlet.client.Main
     servlet.MQWFClient.initArgs=ConfigurationFile=<MQWFDir>/WebClient/WebClient.properties
     servlet.MQWFClient.context=MQWFClient
  6. Edit the contexts.properties file and add the following lines:
     context.MQWFClient.uri=/MQWFClient
     context.MQWFClient.docRoot=<MQWFDir>/WebClient/webpages
  7. To run the Web Client:
    1. Run the iPlanet Administration server and make sure the manual changes are picked up (you can click the 'Apply' button in the upper left corner to do so).
    2. Start the server for which you configured the Web Client.
    3. Start your Web browser and point it to http://localhost/MQWFClient/RTC.html

Setup for Sun's JavaServer Web Development Kit

JSWDK is no longer supported, please upgrade to Apache Tomcat which is as easy to install and use.

Setup for HTTPS with Apache Tomcat V3.2

Starting with version 3.2, Tomcat has been enabled to support SSL. Setup is pretty simple:

  1. Make sure Apache Tomcat V3.2 is configured and working.
  2. Download and install JSSE (Java secure sockets extension)
  3. Then open the <TCDir>/doc/tomcat-ssl-howto.html file and follow the instructions in the section titled SSL direct
  4. If using the JDK's keytool, note that the default location for the keystore file is the System.getProperty("user.home") directory (for example, c:\winnnt\profiles\<userID> on Windows NT). Use the -keystore parameter of keytool if you want to specify an alternate location.
  5. Start your Web browser and point it to https://localhost:8443/MQWFClient/RTC.html. If you copied the Connector parameters from the Tomcat instructions and have troubles accessing the Web Client over this connection, try to set
     <Parameter name="clientAuth" value="false"/>
    in Tomcat's server.xml configuration file.

Setup for HTTP/1.1 Basic Authentication with Apache Tomcat V3.2

  1. Make sure Apache Tomcat V3.2 is configured and working.
  2. Edit the <TCDir>/conf/tomcat-users.xml file and add the Workflow user IDs you want to authorize to your Workflow role, for example, mqwf:
     <tomcat-users>
      <user name="admin" password="password" roles="mqwf"/>
      <user name="user1" password="changeit" roles="mqwf"/>
     </tomcat-users>
    Note that this .xml-file based authentication requires the org.apache.tomcat.request.SimpleRealm request interceptor to be enabled in <TCDir>/conf/server.xml (this is the default, there is another interceptor available which is JDBC-based). See also the BasicAuthenticationHandler sample.
  3. Enable authentication for the Web Client's Web application by adding the following lines before the closing </web-app> tag in <MQWFDir>/WebClient/webpages/WEB-INF/web.xml:
     <security-constraint>
      <web-resource-collection>
       <web-resource-name>Web Client</web-resource-name>
       <url-pattern>/*</url-pattern>
      </web-resource-collection>
      <auth-constraint>
       <role-name>mqwf</role-name>
      </auth-constraint>
     </security-constraint>
     <login-config>
      <auth-method>BASIC</auth-method>
      <realm-name>MQSeries Workflow Web Client</realm-name>
     </login-config>
    Note that the role-name entered here must match the entry in the roles attribute above.

Setup for HTTP/1.1 Basic Authentication with WebSphere V3.5

The following may or may not work for you. We have not always succeeded setting up basic authentication with these instructions, so maybe there still is something missing.

  1. Make sure the WebSphere server is running and start the WebSphere Adminstrative Console.
  2. Open the 'Configure Global Security Settings' wizard and check the 'Enable Security' checkbox on the 'General' page. On the 'User Registry' page, check what Server ID you are using.
  3. Click 'Finish'. You now must restart the WebSphere server and enter the Server user ID and password when re-opening the Administrative Console.
  4. Open the 'Create Enterprise Application' wizard and enter 'MQSeries Workflow' as application name, then click 'Next'.
  5. Open the 'Web Applications' node, select 'MQWFClient', click 'Add', click 'Next', then click 'Finish' (there is nothing to enter on the last page).
  6. Open the 'Configure Application Security' wizard to select the authentication mechanism to be used and select the 'MQSeries Workflow' leaf of the 'Enterprise Applications' node. Then click 'Next'.
  7. Enter 'MQSeries Workflow Web Client' as the Realm name. This is the text the user will see on the browser's password prompt.
  8. Select the 'Basic' challenge type and optionally check the 'Use SSL' box if you configured HTTPS.
  9. Click 'Finish' (again, there is nothing to enter on the last page).
  10. Open the 'Configure Security Permissions' wizard to configure authorizations and select the 'MQSeries Workflow' leaf of the 'Enterprise Applications' node. Then click 'Next'.
  11. On the 'Permissions' page, select all permissions by pressing Ctrl-A, then click 'Next'.
  12. On the 'Grant Permissions' page select the 'Selection' radio button. In the 'Search For' box select 'User' and in the 'Search Filter' box enter '*' (asterisk). Then click 'Search'. (EF: What is 'All authenticated'? Never got a password prompt with this one...)
  13. In the 'Search Results' list select the user ID you want to authorize. Note that this user ID must be a Workflow user ID and its password must match the Workflow password if you want to use the BasicAuthenticationHandler sample.
  14. Click 'Next'. On this page, you can check that the permissions have been granted by opening the trees. Click 'Finish'.
  15. Open the 'Configure Resource Security' wizard to configure access restrictions and expand the 'Virtual Hosts' node. Open the 'default_host' node, select the '/MQWFClient' leaf and click 'Finish' (there is nothing to enter on the last page).
  16. To test Basic Authentication start the 'MQSeries Workflow' Enterprise Application instead of the 'MQWF Web Client' Application Server. Then point your browser to http://localhost/MQWFClient/servlet/Main?command=logon. You must have an authentication handler like the BasicAuthenticationHandler sample installed for this to work.

Setup for HTTPS with IBM HTTP Server and Apache Tomcat V3.1

This setup uses IBM HTTP Server as Web server and Apache Tomcat as Servlet container. This is different from the Tomcat standalone configuration where Apache Tomcat is used as both Web server and Servlet container.

  1. Shutdown the IBM HTTP server if it is running.
  2. Create a self-signed certificate (sufficient for demonstration purposes):
    1. Start the Key Management utility that comes with IBM HTTP Server.
    2. Select the 'Key Database File' - 'New...' menu option.
    3. Select 'CMS key database file' from the list of key database types and type in the name and location for the file: <MQWFDir>/WebClient/ihs.kdb. Then click OK.
    4. In the password dialog box, enter a password for this database. Leave the expiration time for the key database unspecified. Click the 'Stash the password to a file?' checkbox. If the password is not stashed into a file, the Web server will not be able to start automatically. Then click OK.
    5. Select the 'Create' - 'New Self-Signed Certificate...' menu option.
    6. Enter 'WebClient' as the 'Key Label' and fill in all information about your organization. Then click OK to create and save the certificate.
    7. Close the Key Management utility.
  3. Make sure Apache Tomcat is configured and start it at least once.
  4. EF tbd: What about ApacheModuleJServ.dll?
  5. Edit the <IHSDir>/conf/httpd.conf file and add the following line at the end:
     Include "<TCDir>/conf/tomcat-apache.conf"
    Note that Tomcat V3.1 has a bug which causes the wrong document root directory to be generated in tomcat-apache.conf. Edit this file and change the lines reading
     Alias /MQWFClient <TCDir>\webapps\MQWFClient
     <Directory "<TCDir>\webapps\MQWFClient">
    to
     Alias /MQWFClient <MQWFDir>\WebClient\webpages
     <Directory "<MQWFDir>\WebClient\webpages">
    Copy the changed file to the <IHSDir>/conf directory so that it is not overwritten the next time you start tomcat. Change the Include directive in <IHSDir>/conf/httpd.conf accordingly and do not forget to re-apply these changes every time you update <TCDir>/conf/server.xml. This bug is fixed in Tomcat V3.2.
  6. To run the Web Client using HTTPS:
    1. Start Apache Tomcat (this must be done before starting IBM HTTP Server so that the tomcat-apache.conf file is up to date).
    2. Start IBM HTTP Server.
    3. Start your Web browser and point it to https://localhost/MQWFClient/RTC.html

Setup for HTTPS with IBM HTTP Server and WebSphere V3.5

These instructions describe how to enable SSL in WebSphere Application Server. In the following, <IHSDir> denotes the IBM HTTP Server installation directory and <WASDir> denotes the WebSphere Application Server installation directory.

  1. Open the WebSphere Administrative console and locate the virtual host, that you want to enable SSL support, for example, default_host. Go to the 'Advanced' page of the virtual host and add <virtual_host>:443 and its variations to the alias list.
  2. You must restart all application servers using the virtual host for the changes to become effective.
  3. Create a self-signed certificate as described above.
  4. Go to the <IHSDir>/conf directory and make a backup copy of httpd.conf.
  5. Edit the httpd.conf file and make sure the ServerAdmin directive points to a valid e-mail address and the ServerName directive is enabled and matches the fully qualified hostname. SSL configuration requires that the ServerName directive matches the fully qualified host name of your server, such as www.acme.com.
  6. Locate the line where the WebSphere server module is loaded and add the IBM HTTP Server SSL module you have installed, for example:
     LoadModule ibm_ssl_module modules/IBMModuleSSL128.dll
     LoadModule ibm_app_server_module <WASDir>/bin/mod_ibm_app_server.dll
  7. Add the port number for the virtual server just below the Listen 80 statement. The default port number for SSL is 443. If you don't have the Listen 80 item, just add the following line after the sample #Listen lines:
     Listen 443
  8. Add following lines at the end of the httpd.conf:
     <VirtualHost :443>
     SSLEnable
     SSLClientAuth none
     DocumentRoot "<IHSDir>/htdocs"
     ErrorLog logs/error.log
     TransferLog logs/access.log
     </VirtualHost>
     SSLDisable
     Keyfile "<MQWFDir>/WebClient/ihs.kdb"
     SSLV2Timeout 100
     SSLV3Timeout 1000
    Be sure to use replace <IHSDir> and <MQWFDir> with the values appropriate for your environment.
  9. To run the Web Client using HTTPS:
    1. Start IBM HTTP Server.
    2. In the WebSphere Administrative Console, select the 'MQSeries Workflow WebClient' server from the Topology Tree and click the start button.
    3. Start your Web browser and point it to https://localhost/MQWFClient/RTC.html

Setup for Apache mail server and Microsoft Outlook Express

This setup can be used to demonstrate the EmailHandler sample without being connected to a network. It assumes that you have Microsoft Outlook Express installed (usually comes with Microsoft Internet Explorer). Then download and install the Apache mail server, JAMES, which is an open source project that can be found at http://java.apache.org.

  1. Go to the <JamesDir>/bin directory and start the run.bat script.
  2. Open a new console window and edit the newly created <JamesDir>/conf/JAMES.conf.xml file. Search for the line reading
     <account login="root" password=""/>
    (it is marked with a 'FILL ME' tag; do not confuse it with the comment line near the top of the file) and fill in the adminstrator's password. You don't need to fill in the other fields marked with the 'FILL ME' tag.
  3. Save your changes and go back to the console where you started the run.bat script. Press the enter key to start the mail server.
  4. Open a telnet session on 'localhost', port '4555'. Select the 'Connect' - 'Remote system...' menu option of the Windows NT telnet program to do so. You might want to turn on 'local echo' for the telnet session (on Windows 2000, enter set LOCAL_ECHO on the telnet command line). Log on to JAMES with user ID 'root' and the password you specified above.
  5. Create mail accounts for the Workflow users you want to send mail to, for example, type adduser admin password to create a mail account for the Workflow administrator. Type quit when done.
  6. The mail server is now running and operable. In the future, just invoke the <JamesDir>/bin/run.bat script to start the mail server. This concludes the server-side configuration.
  7. Start Outlook Express and select the 'Tools' - 'Accounts...' menu option.
  8. Click the 'Add' button and select the 'Mail...' option.
  9. Enter the descriptive name of the mail user, for example, 'Workflow Admin'. Then click 'Next'.
  10. Select the 'I already have an e-mail address ...' option and enter 'admin@localhost' in the 'E-mail address' field. The user ID specified here must match the one used with the adduser command above. The click 'Next'.
  11. Select 'POP3' as incoming mail server type. Enter 'localhost' in both the 'Incoming mail server' and 'Outgoing mail server' fields, then click 'Next'.
  12. Enter the account name and password as specified with the adduser command above. Select the 'Remember password' option so that you do not have to enter the password every time you receive your mail (this should be OK for demonstration purposes). Click 'Next'.
  13. Click 'Finish' to create the new account.
  14. Select the newly created account (named 'localhost') on the 'Mail' page of the dialog box and click the 'Properties' button.
  15. Enter a more meaningfull name for this account, for example, 'Workflow Admin'. Deselect the 'Include this account' box so this account is not automatically synchronized and does not interfere with your other uses of the mail client. Then press the 'OK' button.
  16. Close the 'Internet Accounts' dialog box. This concludes the client-side configuration.
  17. When e-mail has been sent to this account, simply select the 'Workflow Admin' option of the 'Send/Recv' button on the toolbar.

Setup for IBM VisualAge for Java V3.5 WebSphere Test Environment

  1. Make sure you have VisualAge for Java installed and you have added the 'WebSphere Test Environment' Feature. If the 'WebSphere Test Environment' is not installed
    1. Open the VA for Java Workbench
    2. Press 'F2' or select 'File' - 'Quick Start'
    3. Select 'Features' and 'Add Feature' and press 'Ok'.
    4. Select 'IBM WebSphere Test Environment' and press 'OK'.
    In the following, <WTEDir denotes the WebSphere Test Environment directory, <VAJDir>/ide/project_resources/IBM WebSphere Test Environment.
  2. Edit the <WTEDir>/properties/default.servlet_engine file and add the following lines to the <websphere-servlet-host name="default_host"> section:
     <websphere-webgroup name="MQWFClient">
      <description>MQSeries Workflow Web Client</description>
      <document-root><MQWFDir>/WebClient/webpages</document-root>
      <classpath><MQWFDir>/WebClient/webpages/WEB-INF</classpath>
      <root-uri>/MQWFClient</root-uri>
      <auto-reload enabled="true" polling-interval="3000"/>
      <shared-context>false</shared-context>
     </websphere-webgroup>
    (note the leading forward slash for the document-root element).
  3. Copy the <WTEDir>/hosts/default_host/default_app/servlets/default_app.webapp file to <MQWFDir>/WebClient/webpages/WEB-INF/MQWFClient.webapp. Note that this file must be in the Web application's classpath (see above) and that its basename must match the websphere-webgroup's name.
  4. Edit the <MQWFDir>/WebClient/webpages/WEB-INF/MQWFClient.webapp file and add the following lines:
     <servlet>
      <name>Main</name>
      <code>com.ibm.workflow.servlet.client.Main</code>
      <servlet-path>/servlet/Main</servlet-path>
      <init-parameter>
       <name>ConfigurationFile</name>
       <value><MQWFDir>/WebClient/WebClient.properties</value>
      </init-parameter>
     </servlet>
  5. Import the MQSeries Workflow Java API into VA for Java:
    1. Open the VA for Java Workbench
    2. Select 'File' - 'Import'
    3. Enter <MQWFDir>/bin/JAVA<VRMS>/fmcojagt.jar as the Filename
    4. Enter 'IBM MQSeries Workflow Java APIs' as the project name
    5. Check 'Create new/scratch editions of versioned projects/packages'
    6. Check 'Version imported classes and new editions of packages/projects'
    7. Select 'Version name' and enter your version number, for example '3.3.0.0'. Then click 'Finish'
    All Problems in the packages com.ibm.workflow.corba and com.ibm.workflow.corba.jni can be safely ignored.
  6. Import the MQSeries Workflow Web Client into VA for Java:
    1. Open the VA for Java Workbench
    2. Select 'File' - 'Import'
    3. Enter <MQWFDir>/WebClient/fmcohcli.jar as the Filename
    4. Enter 'IBM MQSeries Workflow Web Client' as the project name
    5. Check 'Create new/scratch editions of versioned projects/packages'
    6. Check 'Version imported classes and new editions of packages/projects'
    7. Select 'Version name' and enter your version number, for example '2.3'. Then click 'Finish'
    All problems in the packages com.ibm.workflow.servlet.client, com.ibm.workflow.servlet.sample, and com.ibm.workflow.util.cfg can be safely ignored.
  7. Configure the WebSphere Test Environment:
    1. Open the VA for Java Workbench and start the WTE using 'Workspace' - 'Tools' - 'WebSphere Test Environment...'
    2. Select 'Servlet Engine' in the tree on the left
    3. Click 'Edit Class Path...' and make sure that 'IBM MQSeries Workflow Java APIs' and 'IBM MQSeries Workflow WebClient' are checked.
    4. To debug JSPs, make sure all 3 checkboxes in the 'JSP Settings' area are checked ('Load servlets externally', 'Halt at the beginning of the service method' and 'Enable JSP Source debugging').
    5. Select 'JSP Execution Monitor Options' in the tree on the left make sure that both checkboxes are checked ('Enable monitoring JSP execution' and 'Retrieve syntax error information').
  8. The default port used by the WTE is 8080, so start your Web browser and point it to http://localhost:8080/MQWFClient/RTC.html to run the Web Client within the WebSphere Test Environment.

© Copyright IBM Corporation 1999, 2001. All Rights Reserved.