} }

 Files   Prepare   Run   Troubleshooting   Related Topics 

 

About the Example

This example is a package that demonstrates an Enterprise Java Bean written to the EJB 2.0 specification. The example is an entity EJB called AccountBean.

The example demonstrates:

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.

 

Files Used in the Example

Directory Location:

MW_HOME/wlserver_10.3/samples/server/examples/src/examples/ejb/ejb20/basic/containerManaged/

(where MW_HOME is the directory containing your Oracle WebLogic Server installation)

File

Click source files to view code.

Description

AccountBean.java AccountBean is an Entity Bean. This EJB illustrates:
  • Container-managed JDBC persistence and transactions; the code in this file never directly accesses the data storage.
  • Application-defined exceptions.
application.xml Java EE standard enterprise application deployment descriptor.
build.xml Ant build file that contains targets for building and running the example.
Client.java Class that demonstrates calling an entity EJB, followed by two exercises:
  • Part A: Create an Account and Deposit some money into it. Next, attempt to withdraw more than the current account balance. An application-specific exception should be thrown. Finally, remove the account.
  • Part B: Create some new accounts, with different initial balances. Find all the accounts with a balance greater than a specific value. Find the account with a balance of zero. Attempt to find accounts with a null account type. Finally, remove all newly created accounts.
This class also illustrates how to lookup an EJB home in the JNDI tree.
ProcessingErrorException.java Class that is thrown if the caller attempts to withdraw more than a certain preset limit from the account.
table.ddl File that sets up tables and constraints in database.
weblogic-application.xml Oracle WebLogic Server-specific enterprise application deployment descriptor.

 

Prepare the Example

 

Prerequisites

Before working with this example:

  1. Install Oracle WebLogic Server, including the examples.
  2. Start the Examples server.
  3. Set up your environment.

This example is preconfigured to work with the PointBase database, included with the Oracle WebLogic Server distribution. As you'll use a database for the persistent storage of the entity EJB, you'll need to set it up. The PointBase database is started automatically in the background when you start the Examples server, but you should confirm that it is running and configure it to your specifications using the PointBase console; see Opening the PointBase Console for instructions. The persistent storage is completely invisible to the client; the actual storage is handled by the EJB directly and not the container.

With database persistence, each instance of an EJB is written to a row in a table. If you want or need to run this example with Oracle, see Oracle WebLogic Server Examples Database Guide for instructions.

 

Configure Oracle WebLogic Server

No special configuration is required for this example because the examples-dataSource-demoXAPool
datasource is preconfigured. To verify that this datasource is configured and deployed, you may follow the steps below:

  1. Invoke the Administration Console.
  2. In the Domain Structure view in the left pane, select Services—>JDBC—>Data Sources.
  3. Observe that the examples-dataSource-demoXAPool (JNDI Name) entry has the value of "examplesServer" in the Targets column.
  4. Click on its name to view the configuration.

 

Build and Deploy the Example

  1. Change to the SAMPLES_HOME\server\examples\src\examples\ejb\ejb20\basic\containerManaged directory, where SAMPLES_HOME refers to the main Oracle WebLogic Server examples directory, such as d:\Oracle\Middleware\wlserver_10.3\samples.
  2. Execute the following command from the shell where you set your environment:

    ant build

    This command compiles and stages the example.
  3. Execute the following command from the shell where you set your environment:

    ant deploy

    This command deploys the example on the wl_server domain of your Oracle WebLogic Server installation.

The commands above build the example and place the files in the following locations in your Oracle WebLogic Server distribution:

Additional information on using the build scripts is found in More About Building Examples.


 

Run the Example

  1. Complete the steps in the "Prepare the Example" section.
  2. Execute the following command from the shell where you set your environment:

    ant run

    This command runs the example.

The following output is displayed:

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.ejb11.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...

This does not allow you to see the ACCOUNTS database table filled with values because it executes quickly and removes entries when it is finished. If it did not, a simple SQL query, such as SELECT * FROM ACCOUNTS, could display the contents of the table.


 

Troubleshooting


 

Related Topics

(Internet connection required.)