    All Examples  All EJB Examples

#

## Enterprise JavaBean container-managed JDBC persistence
example packages and classes

- Client applications
    Client (client application documentation and source)

- Deployment
    ejb-jar.xml
    weblogic-ejb-jar.xml
    weblogic-cmp-rdbms-jar.xml

- Interfaces
    Account (remote interface documentation and source)
    AccountHome (home interface documentation and source)
    ProcessingErrorException (application-specific exception documentation and source)

- Server (EJBean)
    AccountBean (EJBean documentation and source)

# 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 AccountBean.

The example demonstrates:

- Use of an entity EJBean
- Container-managed JDBC persistence; the code in the EJBean never directly accesses the data storage
- Using WebLogic's EJB finders to find both single and Enumerations of accounts
- Using application-defined exceptions
- Using is-modified-method-name to reduce database access
- Client application

## Client application

The Client application performs these steps:

1. Finds or creates 20 separate accounts
2. Displays the balance for each account
3. Finds all accounts with balances over $5000
4. Finds the first account with a balance of zero
5. Finds any accounts with a null type
6. Removes all accounts

# how to use this example

To get the most out of this example, first read through the source code files. Start with the XML deployment files 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.

In general, you'll need to 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 completely invisible to the client; the actual storage is handled automatically by the container and not by the EJBean. All database properties, such as the login name and password, are defined in the connection pool within the weblogic.properties file. Build the example shows how to set up a connection pool for RDBMS persistence.

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

### Using the build scripts

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

We provide separate build scripts for Windows NT and UNIX:

- build.cmd for Windows NT

- build.sh for UNIX

These scripts will build the example and place the files in the correct locations:

- Client files: in /myserver/clientclasses
- EJBean: in /myserver/ejb_basic_containerManaged.jar

### 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 table (ejbAccounts) 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, this table has already been created in the "demo" database.

   You'll need to:

   1. If you're using a database other than Cloudscape, you'll need to create the table in your database using an appropriate SQL statement such as

          "create table ejbAccounts (id varchar(15), bal float, type varchar(15))"

   2. For all databases, setup 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, you'll need to set an appropriate url and driver, such as

          	  url=jdbc:weblogic:oracle,\
          	  driver=weblogic.jdbc.oci.Driver,\

   3. You'll need to 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

      If you use a connection pool or table other than "demoPool" and "ejbAccounts", you'll need to use the Deployment Wizard to set the appropriate values in the "Persistence" pane and regenerate the EJBean.

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

2. Deploy the EJBean by adding the path to the .jar file to the "weblogic.ejb.deploy" property.

   We provide a commented-out version in the property that begins with "weblogic.ejb.deploy" that you can use. You'll need to adjust the property depending on which EJBeans you're building and are deploying, or if the location of the files differs 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 containerManaged.AccountHome 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.basic.containerManaged.Client

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

       $ java examples.ejb.basic.containerManaged.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
       accountID - String Account ID to test, default "10020"

3. You should receive output similar to this:

       Beginning containerManaged.Client...

       Starting Part A of the example...

       Creating account 10020 with a balance of 3000.0 account type Savings...
       Account 10020 successfully created

       Part A: Depositing $2000
       Current balance is $5000.0
       Attempting to withdraw an amount greater than current balance. Expecting an exception...

       Received expected Processing Error:
       examples.ejb.basic.containerManaged.ProcessingErrorException: Request to withdraw $5001.0; is more than balance $5000.0 in account 10020
       Removing account...

       End Part A of the example...

       Starting Part B of the example...

       Creating account ID: 0 with a balance of 0.0 account type null...
       Account ID: 0 successfully created
       Creating account ID: 1 with a balance of 1000.0 account type Savings...
       Account ID: 1 successfully created
       Creating account ID: 2 with a balance of 2000.0 account type Savings...
       Account ID: 2 successfully created
       Creating account ID: 3 with a balance of 3000.0 account type Savings...
       Account ID: 3 successfully created
       Creating account ID: 4 with a balance of 4000.0 account type Savings...
       Account ID: 4 successfully created
       Creating account ID: 5 with a balance of 5000.0 account type null...
       Account ID: 5 successfully created
       Creating account ID: 6 with a balance of 6000.0 account type Savings...
       Account ID: 6 successfully created
       Creating account ID: 7 with a balance of 7000.0 account type Savings...
       Account ID: 7 successfully created
       Creating account ID: 8 with a balance of 8000.0 account type Savings...
       Account ID: 8 successfully created
       Creating account ID: 9 with a balance of 9000.0 account type Savings...
       Account ID: 9 successfully created
       Creating account ID: 10 with a balance of 10000.0 account type null...
       Account ID: 10 successfully created
       Creating account ID: 11 with a balance of 11000.0 account type Savings...
       Account ID: 11 successfully created
       Creating account ID: 12 with a balance of 12000.0 account type Savings...
       Account ID: 12 successfully created
       Creating account ID: 13 with a balance of 13000.0 account type Savings...
       Account ID: 13 successfully created
       Creating account ID: 14 with a balance of 14000.0 account type Savings...
       Account ID: 14 successfully created
       Creating account ID: 15 with a balance of 15000.0 account type null...
       Account ID: 15 successfully created
       Creating account ID: 16 with a balance of 16000.0 account type Savings...
       Account ID: 16 successfully created
       Creating account ID: 17 with a balance of 17000.0 account type Savings...
       Account ID: 17 successfully created
       Creating account ID: 18 with a balance of 18000.0 account type Savings...
       Account ID: 18 successfully created
       Creating account ID: 19 with a balance of 19000.0 account type Savings...
       Account ID: 19 successfully created
       Account: :ID: 0 has a balance of 0.0
       Account: :ID: 1 has a balance of 1000.0
       Account: :ID: 2 has a balance of 2000.0
       Account: :ID: 3 has a balance of 3000.0
       Account: :ID: 4 has a balance of 4000.0
       Account: :ID: 5 has a balance of 5000.0
       Account: :ID: 6 has a balance of 6000.0
       Account: :ID: 7 has a balance of 7000.0
       Account: :ID: 8 has a balance of 8000.0
       Account: :ID: 9 has a balance of 9000.0
       Account: :ID: 10 has a balance of 10000.0
       Account: :ID: 11 has a balance of 11000.0
       Account: :ID: 12 has a balance of 12000.0
       Account: :ID: 13 has a balance of 13000.0
       Account: :ID: 14 has a balance of 14000.0
       Account: :ID: 15 has a balance of 15000.0
       Account: :ID: 16 has a balance of 16000.0
       Account: :ID: 17 has a balance of 17000.0
       Account: :ID: 18 has a balance of 18000.0
       Account: :ID: 19 has a balance of 19000.0

       Querying for accounts with a balance greater than 5000.0...
       Account ID: 6; balance is $6000.0
       Account ID: 7; balance is $7000.0
       Account ID: 8; balance is $8000.0
       Account ID: 9; balance is $9000.0
       Account ID: 10; balance is $10000.0
       Account ID: 11; balance is $11000.0
       Account ID: 12; balance is $12000.0
       Account ID: 13; balance is $13000.0
       Account ID: 14; balance is $14000.0
       Account ID: 15; balance is $15000.0
       Account ID: 16; balance is $16000.0
       Account ID: 17; balance is $17000.0
       Account ID: 18; balance is $18000.0
       Account ID: 19; balance is $19000.0

       Querying for an account with zero balance...
       Account ID: 0; balance is zero

       Querying for accounts with a null account type
       Account ID: 0; account type is null
       Account ID: 5; account type is null
       Account ID: 10; account type is null
       Account ID: 15; account type is null
       Removing beans...
       End Part B of the example...

       End containerManaged.Client...

# there's more

Read more about EJB in the BEA WebLogic Server Enterprise Java Beans.

Read more about using the EJB deployer tool in the Deploying EJBs with DeployerTool.

Copyright © 1997-2000 BEA Systems, Inc. All rights reserved.

Last updated 03/28/2000