All Examples  All EJB Examples  This Group

Package examples.ejb.sequence.jdbc

Enterprise JavaBean container-managed JDBC persistence
with automatic primary key generation
example packages and classes

about this example

This example is a package that demonstrates an Enterprise JavaBean. Please run this example before attempting to create your own Enterprise JavaBeans, as it will show you the different steps involved. The example is an entity EJBean called AutoAccountBean. It is a modified version of the example EJBean of container-managed persistence, AccountBean.

The example demonstrates:

To improve its scalability, this application caches a range of unique IDs as class attributes of the bean. The bean only goes to the database for an ID when the cached IDs are exhausted.

You could improve performance further by creating a stored procedure in the database instead of sending the text of the procedure each time the bean goes to the database.

A similar example is the Oracle sequence example, which uses an Oracle sequence instead of a database table.

Client application

The Client application performs these steps:
  1. Contacts the AutoAccount home ("AutoAccountHome") through JNDI to find the EJBean
  2. Creates two new accounts, showing their account IDs
  3. Removes the new accounts before finishing

how to use this example

To get the most out of this example, first read through the source code files. Start with DeploymentDescriptor.txt to find the general structure of the EJBean, which classes are used for the different objects and interfaces, then look at Client.java to see how the application works.

You must adjust certain WebLogic Server properties to match your setup. You'll need to set up the persistent storage of the EJBean.

You'll use a database for the persistent storage of the entity EJBean. Note that the persistent storage is completly invisible to the client; the actual storage of the EJBean is handled automatically by the container and not by the EJBean. However, the EJBean directly handles the generation of the primary key using an auxiliary table.

This example is shipped "pre-built"; you can either run it as shipped, or build the example and run it to test that you are able to successfully build and run EJBeans.

These three sections cover what to do:

  1. Build the example
  2. Set your environment
  3. Run the example

Build the example

Set up your development environment as described in Setting your development environment.

We provide separate build scripts for Windows NT and UNIX in the examples/ejb directory of your distribution:

The scripts build individual examples, such as this example for Windows:

$ build sequence jdbc
To build under Microsoft's JDK for Java, use
$ build sequence jdbc -ms
These scripts will build the example and place the files in the correct locations:

Set your environment

  1. Set the JDBC persistence. The Persistence in the deployment descriptor is already set to "jdbc" for database persistence.

    With database persistence, each instance of an EJBean is written to a row in a table. The two tables used (ejbAccounts and idGenerator) must be created and exist in the database before the example is run. If you are using the evaluation copy of Cloudscape that is included with WebLogic, these tables have already been created in the "demo" database.

    You'll need to:

    1. If you're using a database other than Cloudscape, create the table in your database using SQL statements such as
      "create table ejbAccounts (id varchar(15), bal float, type varchar(15))"
      "create table idGenerator (tablename varchar(32), maxKey int)"

    2. For all databases, set up a connection pool in the weblogic.properties file. For your convenience, a template is included in the file; search for "weblogic.jdbc.connectionPool.demoPool", and uncomment and edit the appropriate lines:
        # You can use this connection pool with any of the EJBean examples.
        # Uncomment to use:
        weblogic.jdbc.connectionPool.demoPool=\
               url=jdbc:cloudscape:demo,\
               driver=COM.cloudscape.core.JDBCDriver,\
               initialCapacity=1,\
               maxCapacity=2,\
               capacityIncrement=1,\
               props=user=none;password=none;server=none
      You can use this pool for Cloudscape. For other databases, set an appropriate url and driver, such as
      	  url=jdbc:weblogic:oracle,\
      	  driver=weblogic.jdbc.oci.Driver,\

      If you need more information about how to use connection pools, read Using WebLogic JDBC: Using connection pools.

    3. Add an access control list (ACL) for users of the pool:
        # Add an ACL for the connection pool:
        weblogic.allow.reserve.weblogic.jdbc.connectionPool.demoPool=everyone

  2. Deploy the EJBean by adding its .jar file to the "weblogic.ejb.deploy" property in the weblogic.properties file. We provide a commented-out version that begins with "weblogic.ejb.deploy" that you can use. Adjust the property depending on which EJBeans you're building and are deploying, or if the location of the files differ from the installed location.

    Note: If you're running under the Microsoft SDK for Java, you'll also need to add the path to the .jar to the CLASSPATH for your WebLogic Server.

    Run the example

    1. Start the WebLogic Server.

      If you're starting the Server from the command line, you'll need to add an entry such as c:/weblogic/eval/cloudscape/lib/cloudscape.jar to the Java system classpath before starting the server, as described in the Administrators Guide Setting up and starting the WebLogic Server.

      You can check that the EJBean has been deployed correctly either by checking the server command line window, or by opening the Console and examining "EJB" under the "Distributed objects"; you should see jdbc.AutoAccountHome deployed, and can monitor its activity.

    2. Run the client in a separate command line window. Set up your client as described in Setting your development environment, and then run the client by entering:
      $ java examples.ejb.sequence.jdbc.Client

      If you're not running the WebLogic Server with its default settings, you will have to run the client using:

      $ java examples.ejb.sequence.jdbc.Client "t3://WebLogicURL:Port"

      where:

      WebLogicURL
      Domain address of the WebLogic Server
      Port
      Port that is listening for connections (weblogic.system.ListenPort)

      Parameters are optional, but if any are supplied, they are interpreted in this order:

      Parameters:
      url - URL such as "t3://localhost:7001" of Server
      user - User name, default null
      password - User password, default null

    3. If you're running the Client example, you should get output similar to this from the client application:
      Beginning sequence.jdbc.Client...
      
      AutoAccount 1 created with an opening balance of $3000.0
      AutoAccount 2 created with an opening balance of $6000.0
      
      Removing AutoAccounts created...
      
      End sequence.jdbc.Client...
    4. If you run this again, you'll see the next set of AutoAccounts are properly numbered:
      Beginning sequence.jdbc.Client...
      
      AutoAccount 3 created with an opening balance of $3000.0
      AutoAccount 4 created with an opening balance of $6000.0
      
      Removing AutoAccounts created...
      
      End sequence.jdbc.Client...
    5. You can also try shutting down the server and restarting; the numbering will start at the beginning of the next range of IDs.

    there's more

    Read more about EJB in the Developers Guide, Using WebLogic Enterprise JavaBeans.

    Read more about using the EJB Deployment Wizard in the Deployment Guide, Using the WebLogic EJB Deployment Wizard.

    Copyright © 1998-1999 BEA Systems, Inc. All rights reserved.

    Last updated 07/23/1999