|
Core Development Guide |
This chapter explains how to use the Novell exteNd Workbench to deploy Director applications. It contains the following sections:
A Director application is packaged in a single Director EAR file that contains several WAR files and JAR files. When you're ready to deploy the application, you can use the facilities provided with Workbench to upload the EAR to one or more servers.
Here are the general steps you need to follow to deploy a Director application:
Deploy the EAR to a supported J2EE server to get access to the Web tier development tools.
For instructions, see
Deploying a Director EAR project.
Make enhancements to the Director EAR for your application. For example, you may want to add your own application-specific J2EE modules to the EAR, or add or remove subsystems.
After you create your Director EAR using the Director EAR Wizard, you can deploy it immediately. Deploying gives you access to Director Web tier tools such as PAC and PMC. You don't need to have added your own application functionality to do a deployment.
For Novell and WebLogic, you can use the Workbench deployment tools. Setting up and deploying consists of these tasks:
For WebSphere Advanced Edition, you must use the WebSphere console (rather than Workbench deployment tools) to deploy.
The following sections provide server-specific instructions:
A final section Changing your deployment configuration describes how to change your target server.
A server profile in Workbench stores information about your application server, so you don't have to provide the same information over and over again. You can use the same server profile for all applications that use the same configuration information on that server.
Multiple profiles If you want to deploy to more than one server, you will need to create a profile for each one. For SilverStream and Novell application servers, you may also find it useful to define more than one profile for the same serverfor example, if you want to deploy to different databases.
In Workbench, select Edit>Profiles from the menu.
On the Servers tab of the Profiles dialog, click New.
Fill in the Create a New Server Profile dialog with values like these (not all fields are present for all server types):
|
Option |
Description |
|---|---|
|
Profile name |
Specify a name like Novell Director or WebLogic Director |
|
Server type |
Choose the type that describes your server and version. NOTE: For SilverStream eXtend Application Server, select SilverStream 3.7.4 or higher or SilverStream 4.0 or higher for the Server type. For Novell exteNd Application Server, select Novell 5.0 or higher for the Server type. |
|
Deployment tools directory |
Specify the directory that contains the server's deployment toolstypically, a path like c:\Program Files\SilverStream\eXtendAppServer\bin or C:\bea\wlserver6.1sp2\bin. If the server is located on another machine, you need either network access for running the tools or a copy of the tools in a local directory. For some servers, Workbench doesn't support remote deployment. |
|
Rapid deployment directory |
Enter the directory where you want Workbench to write the files for rapid deployment. Some servers require files to be written to a specific directory for rapid deploys. Make sure you specify the appropriate location for your server's configuration. Rapid deployment handles J2EE code, such as JSP pages and servlets. To quickly deploy resources such as components, images, and rules, use the Director Hot Deploy feature, described in Dynamic loading of resources and classes. |
Specify server-specific information. For most servers, you specify only the server name and port number.
|
Option |
Description |
|---|---|
|
Server name |
Specify the name of your server, which could be localhost (or the actual server name for your server). If your server is not using the default port 80, specify server-name:port-number. For example, your server might be localhost:8080. |
|
Database name |
(SilverStream and Novell only) Specify the name of the database on the server to which you want to deploy the archive. Typically you will deploy the archive to the SilverMaster database, so that the URL for the application won't need to include the database name. NOTE: You do not have to deploy the archive to the database you created for Director application data (described in About deploying a Director application). |
A filled-in dialog for a SilverStream server looks something like this:
Click OK to close both the Create a New Server Profile dialog and the Profiles dialog.
After you create a profile for your SilverStream or Novell server, you create a deployment plan for your project and make deployment settings. Then you deploy the archive.
NOTE: To enable contextual searching, you will also need to configure Autonomy, described the chapter on configuring your environment for conceptual searching in the Search Guide.
The deployment plan specifies actual values for names identified in the deployment descriptors of the various modules in the Director EAR. The Deployment Plan Editor surveys the built archives to gather the information that should be included in the plan.
To create a deployment plan for a SilverStream or Novell application server:
If you haven't added the database for your Director application to the server yet, add it now.
Select File>New from the menu.
The New File dialog opens with the J2EE tab selected.
In the Select Project text box of the Select Project For Deployment Plan dialog, select the name of the EAR (the default).
In the Select destination server type list box, select Novell 5.0 or higher or SilverStream 4.0. Then click OK.
If the Select Build Option dialog appears, you can choose to build or not build the project now as needed.
The deployment plan displays in the Edit Pane. It has a top-level element for the EAR. Below that there are several Web Module elements for the WARs. For the parameters and resource references in the WAR deployment descriptors, there are corresponding elements where you could change their values.
Choose File>Save to save the deployment plan. In the Save As dialog, give the plan a name like myprojectDeplPlan.xml, where myproject is a name related to your Director project. Save the file in the project's root directory.
In the Edit Pane, right-click the top-level EAR element and select Properties from the popup menu.
The Property Inspector displays deployment properties of the EAR.
In the Server Profile field, select the profile you defined in Defining a server profile.
Deployment settings are saved in Workbench and reused each time you deploy.
To specify deployment settings:
With your Director EAR project open in Workbench, select Project>Deployment Settings from the menu.
On the Server Profiles tab of the Deployment dialog, the profile you created in Defining a server profile should be selected. If it isn't, select it now.
Values from the profile are displayed below the profile name. You can click New, Edit, or Delete to change the profile information.
If you have a secure server, fill in the User name and Password text boxes with the user name and password for the server.
(Optional) Clear the Ignore compile errors check box.
Leave the other options as they are.
NOTE: After your first deployment, you can return to this dialog and select Enable Rapid Deployment.
Click OK to save the deployment settings.
TIP: You could also click Deploy at the bottom of the dialog, which does the same thing as the Deploy Archive menu item in the next procedure.
To deploy the Director EAR to a Novell or SilverStream server:
Select Project>Deploy Archive from the menu.
Workbench displays progress messages, errors, and warnings in the Output Pane.
TIP: The deployment will fail if your server is not running.
The Director deployment adds tables to the target database that manage content and user profiles. The schema changes make the server's snapshot of the database schema out-of-sync. To fix this, you need to synchronize the database schema.
To synchronize the database schema:
NOTE: If you shut down the server without synchronizing the schema, you will have to use the command-line switch -noexitondbcheck or -nodbcheck when you restart the server. Then you can use the SMC to synchronize.
To test the deployed application:
In your browser, try the URLs that match your deployment configuration.
If you deployed the archive to the SilverMaster database, try URLs like this:
http://server:port/namespace/PAC/main http://server:port/namespace/PMC/main
If you deployed to another database, try URLs like this:
http://server:port/database/namespace/PAC/main http://server:port/database/namespace/PMC/main
If you included Portal functionality in the custom Web application, test the default portal page. (If you deployed the archive to a database other than SilverMaster, include the database name in the URL.)
If you used the default name Portal for the custom Web application, try this URL:
http://server:port/namespace/Portal/main
If you named the custom Web application something else, substitute that name for Portal:
http://server:port/namespace/my-app-name/main
Variables in the URLs In this procedure, the variables have these meanings:
port is the port number for your application server; the default for SilverStream and Novell application servers is 80. If your server uses port 80, which is also the http default, you can omit the port number
database is the database to which you deployed the archive (SilverStream and Novell application servers only)
namespace is the namespace for the Director application, which you specified in the Director EAR Wizard
my-app-name is the context name for your custom Web application, which you specified in the Director EAR Wizard
Server setup To run your Director application on the WebLogic application server, you need to add the database to the WebLogic server.
Deployment To deploy, you need to do these tasks:
Creating a server profile (described in Defining a server profile)
Specifying deployment settings
NOTE: You don't need to define server-specific deployment information in a weblogic.xml file.
Procedures for all these tasks follow.
To enable contextual searching, you will also need to configure Autonomy, described in the chapter on configuring the Search subsystem in the Search Guide.
NOTE: Be sure to check the Release Notes for additional information about configuring WebLogic for Director.
Preparing a WebLogic server to use a database includes these tasks:
The rest of these database setup procedures describe how to use the WebLogic administration console to configure the connection pool and data source.
To configure a WebLogic connection pool:
Start the server by running your server's startup command file at a command prompt. On Windows NT the default command file is called startWebLogic.cmd. You may be prompted for your server's password.
Start the server administration console in a Web browser. The default URL on a local server is:
http://localhost:7001/console
In the left panel, the top node is the parent name for your server. Below that you'll see a node called Services.
Expand the Services>JDBC node and highlight Connection Pools.
In the right panel, click Create a new JDBC Connection Pool.
Fill in the form with data like this:
In the Available list, select myserver (or the name of your server) and click the right arrow so that it appears in the Chosen list. Then click Apply.
To configure a WebLogic data source:
With the administration console still running in the browser, highlight Data Sources in the left panel under the Services>JDBC node.
Fill in the form with data like this:
In the Available list, select myserver (or the name of your server) and click the right arrow so that it appears in the Chosen list. Then click Apply.
To configure the connections for the WebLogic pool:
With the administration console still running in the browser, highlight the connection pool name in the left panel under the Services>JDBC>Connection Pools node.
Select the Configuration tab in the top row, then select Connections tab in the second row.
Change Initial Capacity to 2 and Maximum Capacity to 10. Leave the other values as they are.
These are good starting values. You may want to fine-tune them later on.
The database is ready for use.
Deployment settings are saved in Workbench and reused each time you deploy.
To specify deployment settings:
With your Director EAR project open in Workbench, select Project>Deployment Settings from the menu.
On the Server Profiles tab of the Deployment dialog, the profile you created in Defining a server profile should be selected. If it isn't, select it now.
Values from the profile are displayed below the profile name. You can click New, Edit, or Delete to change the profile information.
If you have a secure server, fill in the User name and Password text boxes with the user name and password for the server.
In the WebLogic Application Name text box, type the name your users will use in the URL for the application.
NOTE: After your first deployment, you can return to this dialog and select Enable Rapid Deployment.
In the Deployment Options list box, select deploy if you're deploying the application for the first time. If you are redeploying the application, select update.
Click OK to save the deployment settings.
TIP: You could also click Deploy at the bottom of the dialog, which does the same thing as the Deploy Archive menu item in the next procedure.
After you deploy, check the tips that follow for troubleshooting information.
To deploy the Director EAR to the WebLogic server:
Select Project>Deploy Archive from the menu.
Workbench displays progress messages, errors, and warnings in the Output Pane.
TIP: The deployment will fail if your server is not running.
If redeploying the EAR fails If you've deployed before and the update deployment option fails to replace the existing EAR, you can use the WebLogic Console to remove the EAR. Then open the Deployment Settings, change the Deployment Options value back to deploy, and try deploying again.
If you did not generate targets After deploying, you may receive an error stating that no target was set. If so, you can use the WebLogic Console to specify the target server for each of the Web modules in the EAR.
If out of memory errors occur When deploying multiple times to WebLogic, you may see Out of Memory errors occur. This can occur when deploying two separate EARs. By default, WebLogic.cmd sets memory to 64, as shown below:
-ms64m -mx64m
To increase the amount of memory available, increase the value, as shown below:
-ms64m -mx256m
If Portal URLs are not relative After deploying, you may notice that the some of the URLs associated with the Portal (or another Web application) are not relative, but instead reference localhost. To fix this problem, you may need to modify the configuration for the machine you set up for deployment. Select the machine and click on the Server tab. Then, if necessary, add the server (for example, myserver) to the Chosen list and click Apply. Once you've made these changes, restart your server.
If you're unable to upload large files When you try to upload large files to WebLogic, you may find that the operation times out. This can happen if the JTA timeout setting in WebLogic is not too small. The default timeout setting is 30 seconds. To increase the timeout setting, select JTA under mydomain. Then increase the value in the Timeout Seconds field and click Apply.
NOTE: Be sure to check the Release Notes for additional information about configuring WebLogic for Director.
If you set your application locksmith user to one of the Director default users (such as admin), you must create the default set of users in the Weblogic realm prior to logging into the PAC, Portal, or PMC. Immediately after deploying the application the first time:
Start up a new browser session. This is necessary because deployment on WebLogic requires that you log in as the "system" user.
Invoke the DirectoryInitServlet by entering the following URL:
http://host/namespace/Boot/DirectoryInitServlet
namespace is the namespace (if any) that is set for the Director EAR
You only need to invoke the DirectoryInitServlet once. The Director users persist in the application server user repository across redeployments.
To test the deployed application:
In your browser, try these URLs:
http://server:port/namespace/PAC/main http://server:port/namespace/PMC/main
If you included Portal functionality in the custom Web application, test the default portal page.
If you used the default name Portal for the custom Web application, try this URL:
http://server:port/namespace/Portal/main
If you named the custom Web application something else, substitute that name for Portal:
http://server:port/namespace/my-app-name/main
Variables in the URLs In this procedure, the variables have these meanings:
port is the port number for your application server; the default for WebLogic is 7001
namespace is the namespace for the Director application, which you specified in the Director EAR Wizard
my-app-name is the context name for your custom Web application, which you specified in the Director EAR Wizard
To run your Director application on the WebSphere Advanced Edition server, you need to do several tasks:
Procedures for all these tasks follow.
About the WebSphere server There are two versions of the WebSphere server: WebSphere Advanced Edition and WebSphere Advanced Single Server. Director only supports WebSphere Advanced Edition. WebSphere Advanced Single Server does not support WebSphere custom registries; therefore, Director does not support the Single Server version. Make sure your server is WebSphere Advanced Edition.
NOTE: Be sure to check the Release Notes for additional information about configuring WebSphere for Director.
To set up your server, you will need to do these tasks, described in other documentation:
For WebDAV support, you must install a WebSphere server patch. For instructions, see the Release Notes.
To configure Autonomy to enable contextual searching, see the chapter on using the Search subsystem in the Search Guide.
One Director EAR per server Because security realm code and JNDI settings are in JARs that must be on the server's classpath, you can deploy only one Director application to a WebSphere server.
About your DBMS Director uses a database to store system information and managed content. You can use any DBMS that can be configured as a data source for WebSphere. The table below shows requirements for the major DBMSs.
In this procedure you make some global settings to configure your server.
Using the WebSphere Advanced Administrative Console, select your server (Default Server, if you have used the defaults). Machine names and their associated servers are in the Nodes folder.
On the JVM Settings tab, modify the classloader hierarchy for EJB JAR modules by adding an entry to System Properties with these values:
Using the WebSphere Advanced Administrative Console, you will define a JDBC Provider for your DBMS and create a data source and connection pool.
Using your DBMS tools, create a data source to be used for your Director application.
In the WebSphere Advanced Administrative Console, create a new JDBC Provider. JDBC Providers are in the Resources folder.
On the General tab of the JDBC Provider Properties dialog, specify these values:
On the Nodes tab of the Properties dialog, click Install New.
In the Install Driver dialog, select the machine name of your server and select the JAR or ZIP file that contains the driver class.
For example, the DB2 file might be C:\SQLLIB\java\db2java.zip and the Oracle file might be C:\oracle\ora81\jdbc\lib\classes12.zip.
Then click Install.
Under the JDBC Provider you just created, create a new Data Source and fill in these values in the Properties dialog:
Enter values for all other required fields. When you're finished, test your connection.
On the Connection Pooling tab of the dialog, configure the connection pool characteristics for the new data source. For example, you might specify two initial connections and ten maximum connections.
After the console displays the success message, the data source is available on the server for your Director application.
Deployment to WebSphere Advanced Edition requires you to use the WebSphere Advanced Administrative Console. Therefore, you will not be using the Workbench deployment tools.
After you build the EAR, you copy several of its JARs to the server classpath.
If your Director application includes custom WARs, EJB bindings, and resource references you've defined, you can use the IBM Application Assembly Tool first to define bindings for EJBs and resource references. The Application Assembly Tool modifies the Director EAR and saves a second ready-to-deploy version of the EAR. Then you use the Administrative Console to do the deployment.
After building the EAR in Workbench, find the following JARs in the library directory of your project and copy them to the \WebSphere\AppServer\lib directory.
Each time you redeploy an EAR in which you change configuration settings in these JARs, you need to repeat this step.
NOTE: The xerces.jar file is included in your project and is required.
About application assembly The application assembly procedure is optional. You need to use it only if your application includes EJBs or custom WARs with resource references that need bindings to data sources. Otherwise, you can deploy the EAR you built in Workbench in the subsequent procedure To deploy your application:.
To finish application assembly:
Using the IBM Application Assembly Tool, open the EAR that contains your Director application.
Right-click the EAR and select Generate Code for Deployment from the popup menu.
The tool saves the modified EAR with the prefix Deployed_. For example, if you named your EAR MyApp in the Director EAR Wizard, the deployable EAR is called Deployed_MyApp.ear.
Using the WebSphere Advanced Administrative Console, right-click the Enterprise Applications folder and select Install Enterprise Application from the menu.
Use the Browse button to find the EAR for your Director application. If you used the Application Assembly Tool, make sure you choose the EAR with the Deployed_ prefix.
Enter the name you want to use for the application. The deployment gives the deployed EAR this name.
Navigate through the rest of the wizard, accepting defaults, then click Finish.
In the console, find your server in the Nodes folder and make sure it is started.
In the console, find your application in the Enterprise Applications folder and use the popup menu to start it.
Starting the application causes Director to generate the database schema for system data.
Use your DBMS tools to verify that Director tables are in the database.
The WebSphere security realm provided in the Director Directory subsystem is a WebSphere custom realm. The following procedures show you how to configure the WebSphere server for this custom realm.
First you need to create a second JDBC Provider and specify the implementation class for the JDBC Provider to use a two-phase commit driver. This driver is only necessary while you are configuring the custom realm. Director does not support two-phase commit drivers at runtime.
To temporarily use a two-phase commit driver:
In the WebSphere Advanced Administrative Console, verify that the Default Server and Application have been stopped.
Select the JDBC Provider you created earlier, in the procedure To set up a data source:. JDBC Providers are in the Nodes folder.
Delete the JDBC data source created under this JDBC Provider.
Create a temporary JDBC Provider for use with a two-phase commit driver.
On the General tab, specify a two-phase commit driver for Implementation Class. Two-phase commit drivers have the letters XA in the driver name. For example:
The two-phase driver for DB2 is COM.ibm.db2.jdbc.DB2XADataSource
The two-phase driver for Oracle is oracle.jdbc.xa.client.OracleXADataSource
Then click Apply.
Under the new JDBC Provider, create a data source that has the same JNDI name used with the first JDBC Provider you created.
To configure the custom realm:
In the console, open the Security Center. It's on the Console menu.
On the Authentication tab, specify these values:
In the LTPA Password dialog, enter and confirm your password.
A dialog tells you that you need to restart the server before the changes take effect. Do the next procedure to change the driver again before restarting the server.
NOTE: You'll be prompted for the security server ID and password whenever you launch the console.
To switch back to the one-phase commit driver and start the application:
In the WebSphere Advanced Administrative Console, select the second (two-phase commit) JDBC Provider you created.
Delete the JDBC data source created under this JDBC Provider.
Select the first (one-phase commit) JDBC Provider created previously under the Resources folder.
On the General tab, specify for the Implementation Class the one-phase commit driver you originally set up in the procedure To set up a data source:. Then click Apply.
Under the original (one-phase commit) JDBC Provider, recreate the data source.
Delete the log files in the WebSphere tranlog directory (typically in \WebSphere\AppServer\tranlog). The logs keep information about the XA driver, which can cause problems when restarting the server.
In the console, find your server in the Nodes folder and use the popup menu to start it if it isn't already.
In the console, find your application in the Enterprise Applications folder and use the popup menu to start it.
When WebSphere initializes the realm, Director creates the schema for the user/group registry in the Director application database. An administrative user is created with the ID and password you specified on the Authentication tab. When you launch the WebSphere console, you will be prompted for this ID and password.
To test the deployed application:
In your browser, try these URLs:
http://server:port/namespace/PAC/main http://server:port/namespace/PMC/main
If you included Portal functionality in the custom Web application, test the default portal page.
If you used the default name Portal for the custom Web application, try this URL:
http://server:port/namespace/Portal/main
If you named the custom Web application something else, substitute that name for Portal:
http://server:port/namespace/my-app-name/main
Variables in the URLs In this procedure, the variables have these meanings:
port is the port number for your application server; the standard port for WebSphere is 9080
namespace is the namespace for the Director application, which you specified in the Director EAR Wizard
my-app-name is the context name for your custom Web application, which you specified in the Director EAR Wizard
When you run the Director EAR Wizard, you make choices based on the application server you plan to use. If you want to deploy to a different server later, there are several things to change. Some can be changed with the Director EAR Configuration Wizard. Others you can edit in the configuration files.
For details on making changes with the Director EAR Configuration Wizard, see the procedures in
Reconfiguring your Director project.
The items you need to change are listed in the table below. See SilverStream and Novell notes and WebLogic and WebSphere notes that follow for information about specific values for these items.
|
What to change |
How to change it (paths shown for Archive layout in Workbench) |
|---|---|
|
Server setup |
On SilverStream and Novell, create a deployment plan, described in Deploying to the SilverStream and Novell application servers. On WebLogic, perform server setup steps described in Deploying to BEA WebLogic. On WebSphere, perform server and database setup steps described in Deploying to IBM WebSphere. |
|
Realm for user authentication |
Change it in Director EAR Setup Wizard, Advanced option. OR Edit library/DirectoryService-conf/config.xml. |
|
Locksmith ID |
Change the ID in library/FrameworkService-conf/config.xml. OR Add to your server's list of users an ID that matches the current Locksmith value. |
|
JNDI name for the application database |
Edit library/FrameworkService-conf/config.xml. |
|
URIs that proxy resource sets use to redirect resource requests to remote resource sets |
Change the URI property in ResourceSet.war/WEB-INF/web.xml. If you are also changing the server where the remote resource set is deployed, you will need to edit the proxy resource set's URI to point to the new location. |
NOTE: The xerces.jar file is included in your project and is required for deployment to WebSphere.
Realm When you use the EAR Setup Wizard, it adds this XML to config.xml for the DirectoryService for the SilverStream security realm:
<property> <key>DirectoryService/realms/readable</key> <value>com.sssw.fw.directory.api.EbiSilverServerRealm</value> </property> <property> <key>DirectoryService/realms/writeable</key> <value>com.sssw.fw.directory.api.EbiSilverServerRealm</value> </property>
If you want to use a user list from a previously installed version of ePortal, the wizard adds this XML for the SilverStream-compatible security realm:
<property> <key>DirectoryService/realms/readable</key> <value>com.sssw.fw.server.silverserver.realm.EboUserManagerRealm</value> </property> <property> <key>DirectoryService/realms/writeable</key> <value>com.sssw.fw.server.silverserver.realm.EboUserManagerRealm</value> </property>
Locksmith In config.xml for the FrameworkService, specify a user ID to serve as the security administrator. The ID must exist in your server's list of users.
<property> <key>com.sssw.fw.security.Locksmith</key> <value>SecurityUser</value> </property>
JNDI name for database In config.xml for the FrameworkService, specify the JNDI name for your application database as set up on your server. For Novell, the JNDI name has the format Databases/your-database-name/DataSource.
<property> <key>com.sssw.fw.datasource.jndi-name</key> <value>Databases/dbname/DataSource</value> </property>
Realm For the WebLogic security realm, the EAR Setup Wizard adds this XML to config.xml for the DirectoryService:
<property> <key>DirectoryService/realms/readable</key> <value>com.sssw.fw.server.weblogic.realm.EboWeblogicRealm</value> </property> <property> <key>DirectoryService/realms/writeable</key> <value>com.sssw.fw.server.weblogic.realm.EboWeblogicRealm</value> </property> <property> <key>DirectoryService/realms/weblogic/name</key> <value>weblogic</value> </property> <property> <key>DirectoryService/realms/weblogic/anonymous</key> <value>guest</value> </property>
For the WebSphere security realm, the EAR Setup Wizard adds this XML to config.xml for the DirectoryService:
<property> <key>DirectoryService/realms/readable</key> value>com.sssw.fw.server.websphere.realm.EboWebSphereRealm</value> </property> <property> <key>DirectoryService/realms/writeable</key> <value>com.sssw.fw.server.websphere.realm.EboWebSphereRealm</value> </property> <property> <key>DirectoryService/realms/websphere/anonymous</key> <value>anonymous</value> </property>
For information about configuring other custom realms, see the Authentication chapter in the User Management Guide.
Locksmith In config.xml for the FrameworkService, specify a user ID to serve as the security administrator. The ID must exist in your server's list of users.
<property> <key>com.sssw.fw.security.Locksmith</key> <value>SecurityUser</value> </property>
JNDI name for database In config.xml for the FrameworkService, specify the JNDI name for your application database as set up on your server. You don't need the additional modifiers (Databases and DataSource) expected by Novell.
<property> <key>com.sssw.fw.datasource.jndi-name</key> <value>dbname</value> </property>
|
Core Development Guide |
Copyright © 2000, 2001, 2002, 2003 SilverStream Software, LLC, a wholly owned subsidiary of Novell, Inc. All rights reserved.