All Examples  All EJB Examples

Package Index

Enterprise JavaBean container-managed JDBC persistence
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 AccountBean.

The example demonstrates:

Client application

The Client application performs these steps:
  1. Contacts the Account home ("AccountHome") through JNDI to find the EJBean
  2. Searches for a specific Account ('10020'), and creates it if it can't be found
  3. Part A
    1. Deposits an amount
    2. Attempts to withdraw more than the current balance from the account
    3. Triggers an exception
    4. Automatically rolls back a transaction
  4. Part B
    1. Creates a group of new accounts with different initial balances, and an account with a 'null' type
    2. Finds all the accounts with a balance greater than a specific value using a finder method in the home interface findOrderedBigAccounts(double) that returns an Enumeration of accounts in ascending order
    3. Finds all the accounts with a balance greater than a specific value using a finder method in the home interface findDescOrderedBigAccounts(double) that returns an Enumeration of accounts in descending order
    4. Finds an account with a 'null' type using a finder method in the home interface findNullAccounts() that returns an Enumeration of accounts
    5. Finds an account with a balance equal to a specific value using a finder method in the home interface findAccount(double) that returns a single account
    6. When finished, removes the new accounts

Servlet

The Servlet runs in a similar fashion to the Client example. It looks up and calls an EJB and executes similar code to the Client example but as a servlet.

Call this servlet using an appropriate URL as described in the servlet directions. View the changes taking place in the bean by reloading the servlet (use the Reload button).

MultiClient application

The MultiClient application demonstrates multiple clients in separate threads calling the EJBean.

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.

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 completly invisible to the client; the actual storage is handled automatically by the container and not by the EJBean.

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:

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

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

Using the WebLogic EJB Deployment Wizard

For this example, you'll use the WebLogic EJB Deployment Wizard to edit the deployment descriptor, generate new EJB classes and update the .jar file for the EJBean. The Wizard allows you to easily review and edit properties of the deployment.

  1. Open the EJB Deployment Wizard, either using the Windows Start Menu or from the command line.

  2. Check that the Wizard's options are set correctly by selecting the "Edit ¬ Options..." menu item to open the Options dialog. Set both the Java compiler and the location of the temporary directory used by the Wizard. You can either give an existing directory for the temporary directory or a new one that you'd like the Wizard to create for its use.

  3. Add to the main window's list (using either the "File ¬ Add to list..." menu item or the button Add to list...) the /myserver/ejb_basic_containerManaged.jar file created in the previous section.

  4. Select the source file in the list, and then open the descriptor for configuring (either by double-clicking the selection, using the "File ¬ Configure descriptor..." menu item or clicking the button Configure descriptor...).

  5. You can see all the deployment descriptor properties using the tabbed panes. For instance, you can access control entries for any of the methods using the "Methods" pane.

  6. Press the Next > button to take you to the Review page.

  7. Press the Next > button again to take you to the Job page. Here you'll specify the tasks to complete. Make sure that you:

  8. Press the Done button to take you to the Completion page. Messages and progress bars will show you how the various phases are doing.

  9. If there are no errors, press the Done button to close the configuration window.

  10. If there are errors, the tabbed panel will provide information. You may be able to use the < Back button to return to the other pages and correct or supply any missing information.

  11. Once you have successfully completed the tasks, set your environment as described in the next section to complete the deployment.

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. If you're running the Client example, you should get output similar to this from the client application:
      Beginning containerManaged.Client...
      
      Looking up account 10020...
      
      Account 10020 found; balance is $3100.0; type: Checking
      
      Part A: Depositing $100.0
      Current balance is $3200.0
      
      Withdrawing amount greater than current balance. Expecting an exception...
      
      Received expected Processing Error:
      examples.ejb.basic.containerManaged.ProcessingErrorException: Request to wit
      hdraw $3210.0; is more than balance $3200.0 in account 10020
      
      Part B: Creating 5 new accounts...
      
      Created account: 9168557035480; balance is $0.0; type: Checking
      Created account: 9168557035481; balance is $100.0; type: Checking
      Created account: 9168557035482; balance is $200.0; type: Checking
      Created account: 9168557035483; balance is $300.0; type: Checking
      Created account: 9168557035484; balance is $400.0; type: Checking
      
      5 accounts successfully created
      
      Creating an account with a null balance...
      
      Querying for accounts with a balance greater than 50.0...ordered by Account ID
      
      Account 10020; balance is $3200.0; type: Checking
      Account 9168557035481; balance is $100.0; type: Checking
      Account 9168557035482; balance is $200.0; type: Checking
      Account 9168557035483; balance is $300.0; type: Checking
      Account 9168557035484; balance is $400.0; type: Checking
      
      Querying for accounts with a balance greater than 50.0...in descending order
      
      Account 9168557035484; balance is $400.0; type: Checking
      Account 9168557035483; balance is $300.0; type: Checking
      Account 9168557035482; balance is $200.0; type: Checking
      Account 9168557035481; balance is $100.0; type: Checking
      Account 10020; balance is $3200.0; type: Checking
      
      Querying for an account with a balance of $200.0...
      Account 9168557035482; balance is $200.0; type: Checking
      
      Querying for an account with a type 'null'
      
      Account 9168557035485; balance is $0.0; type: null
      
      Removing all accounts just created...
      Removed account: 9168557035480
      Removed account: 9168557035481
      Removed account: 9168557035482
      Removed account: 9168557035483
      Removed account: 9168557035484
      Removed account: 9168557035485
      
      End containerManaged.Client...
    4. You can also run the MultiClient (multiple client application):
       $ java examples.ejb.basic.containerManaged.MultiClient
      and the Servlet examples.

      Note: you can only run one instance of the MultiClient at a time; it creates the multiple clients as separate threads, and is dependent on there being only one instance of the MultiClient to monitor the outcome of the example.

    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 Administrators Guide, Using the WebLogic EJB Deployment Wizard.

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

    Last updated 09/24/1999