One of two enterprise bean development scenarios is typically used with the product. The first is command-line using Ant, Make, Maven or similar tools. The second is an IDE-based development and build environment. The steps in this article focus on development without an IDE.
Add <WAS_HOME>/lib/j2ee.jar to the IDE project build path to resolve compilation dependencies on the new EJB 3.0 API classes. Code assist works when this JAR file is added to the project build path. If you define a server (see J2EE Perspective), point the server to the product install directory. Before you create the project, the project automatically refers to <WAS_HOME>/lib/j2ee.jar. Be sure to create the server with the setting Run server with resources on Server.
Like the assembly tool, a standard Java EE command-line build environment requires some change to use the EJB 3.0 modules. As with previous Java EE application development patterns, you must include the j2ee.jar file located in the <WAS_HOME>/lib/ directory on the compiler classpath. An example of a command-line build environment using Ant is located in the <WAS_HOME>/samples/src/TechSamp directory.
The following steps primarily support the second approach, development without an IDE.
Using a read-only entity bean. The following is a usage scenario and example for writing an Enterprise JavaBeans (EJB) application that uses a read-only entity bean.
Usage scenarioA customer has a database of catalog pricing and shipping rate information that is updated daily no later than 10:00 PM local time (22:00 in 24-hour format). They want to write an EJB application that has read-only access to this data. That is, this application never updates the pricing database. Updating is done through some other application.
ExampleThe customer's entity bean local interface might be:
public interface ItemCatalogData extends EJBLocalObject { public int getItemPrice(); public int getShippingCost(int destinationCode); }
The code in the stateless SessionBean method (assume it is a TxRequired) that invokes this EntityBean to figure out the total cost including shipping, would look like:
..... // Some transactional steps occur prior to this point, such as removing the item from // inventory, etc. // Now obtain the price of this item and start to calculate the total cost to the purchaser ItemCatalogData theItemData = (ItemCatalogData) ItemCatalogDataHome.findByPrimaryKey(theCatalogNumber); int totalcost = theItemData.getItemPrice(); // ... some other processing, etc. in the interim // ... // ... // Add the shipping costs totalcost = totalcost + theItemData.getShippingCost(theDestinationPostalCode);
On the first call to the getItemPrice() method after 22:00 each night, the EJB container reloads the pricing information from the database. If the clock strikes 22:00 between the call to getItemPrice() and getShippingCost(), the getShippingCost() method still returns the value it had prior to any changes to the database that might have occurred at 22:00, since the first method invocation in this transaction occurred prior to 22:00. Thus, the item price and shipping cost used remain in sync with each other.
Assemble the beans in one or more EJB modules. See the topic Assembling EJB modules, or Assembling EJB 3.0 modules if you are using EJB 3.0 beans.
In this information ...Subtopics
Related tasks
Related reference
Related information
| IBM Redbooks, demos, education, and more(Index) |