|
The Developer's Resource & Community Site
|
Developing Entity Beans
Author: Gopalan Suresh Raj
Date Submitted: January 6th 2000
Level of Difficulty: Advanced
Subjects Covered: Entity Beans
Pre-required Reading: Entity Java beans, Idevresource.com.
To work with any of these samples, you will need the following:
To work with the EJB Servlet client, you will need:
The Steps involved in developing and deploying an Entity Bean are:
- Set up your Data Source to the Database
- Define your Home Interface.
- Define your Remote Interface.
- Develop your EntityBean
- Define a Primary Key class
*** Note : From this point onwards, whatever we do becomes vendor (HomeBase) specific ***
- Define your Deployment Descriptor
- Compile your classes and generate the Container code using the tools provided by the vendor
- Startup your Server
A four-tier Architecture for a Typical Bank
Figure shows what we are trying to ultimately accomplish in these pages here.
1. Set up your Data Source to the Database The example program requires a database table named CHECKINGS --the DML of which is shown below-- with the following fields:
CREATE TABLE CHECKINGS |
|
|
|
|
ACCOUNT_NUMBER |
Number |
|
|
CUSTOMER_NAME |
Text |
|
|
BALANCE |
Currency |
|
|
|
|
*primary key
(ACCOUNT_NUMBER) |
2. Define your Home Interface:
Bank\CheckingsHome.java |
package Bank; import
javax.ejb.*;
import java.rmi.*;
public
interface CheckingsHome extends EJBHome
{
Checkings create (int
accountNo, String customer) throws
CreateException,RemoteException;
Checkings create (int
accountNo, String customer, double startingBalance)
throws CreateException,RemoteException;
Checkings findByPrimaryKey (CheckingsPK
accountNo) throws FinderException,
RemoteException;
}
|
3. Define your Remote Interface:
Bank\Checkings.java |
package Bank; import
javax.ejb.*;
import java.rmi.*;
public
interface Checkings extends EJBObject
{
void credit (double amount)
throws RemoteException;
void debit (double amount) throws
RemoteException;
double getBalance () throws
RemoteException;
public int getAccountNumber ()
throws RemoteException;
public String getCustomerName ()
throws RemoteException;
}
|
4. Develop your EntityBean
Bank\CheckingsBean.java |
package Bank; import
java.rmi.*;
import javax.ejb.*;
import java.util.*;
public
class CheckingsBean implements EntityBean
{
protected EntityContext _entityContext;
public int
account_number; //ACCOUNT_NUMBER
public String
customer_name; //CUSTOMER_NAME
public double
balance;
//BALANCE
public int getAccountNumber () {
return this.account_number;
}
public String getCustomerName ()
{
return this.customer_name;
}
public void credit ( double amount ) {
System.out.println
("==============Invoking
CheckingsBean::credit");
System.out.println
("==============changing CheckingsBean::balance from
" + balance);
if ( amount > 0 ) {
balance += amount;
}
System.out.println(" to " +
balance);
}
public void debit ( double amount ) {
System.out.println
("==============Invoking
CheckingsBean::debit");
System.out.println
("==============changing CheckingsBean::balance from
" + balance);
if ( (amount > 0) &&
(balance >= amount) ) {
balance -= amount;
}
System.out.println (" to " +
balance);
}
public double getBalance () {
System.out.println
("==============Invoking
CheckingsBean::getBalance");
System.out.println
("==============CheckingsBean::balance is " +
balance);
return this.balance;
}
public CheckingsBean () {
System.out.println
("==============Invoking
CheckingsBean::CheckingsBean");
try {
jbInit ();
}
catch (Exception e) {
e.printStackTrace ();
System.out.println
("==============CheckingsBean::CheckingsBean -
jbInit failed");
}
}
//
Container managed beans return void
public void ejbCreate ( int accountNo,
String customer)
throws RemoteException,
CreateException {
System.out.println
("==============Invoking 2 parameter
CheckingsBean::ejbCreate");
this.account_number = accountNo;
this.customer_name = customer;
this.balance = 0d;
System.out.println
("======================================================");
System.out.println
("CheckingsBean::account_number =" +
this.account_number);
System.out.println
("CheckingsBean::customer_name =" +
this.customer_name);
System.out.println
("CheckingsBean::balance =" + this.balance);
System.out.println
("======================================================");
}
public void ejbPostCreate ( int accountNo, String
customer)
throws RemoteException,
CreateException {
System.out.println
("======================================================");
System.out.println ("Invoking 2
parameter CheckingsBean::ejbPostCreate");
System.out.println
("CheckingsBean::account_number =" +
this.account_number);
System.out.println
("CheckingsBean::customer_name =" +
this.customer_name);
System.out.println
("CheckingsBean::balance =" + this.balance);
System.out.println
("======================================================");
}
public void ejbCreate( int accountNo, String
customer, double balance)
throws RemoteException,
CreateException {
System.out.println ("Invoking 3
parameter CheckingsBean::ejbCreate");
this.account_number = accountNo;
this.customer_name = customer;
this.balance = balance;
System.out.println
("======================================================");
System.out.println
("CheckingsBean::account_number =" +
this.account_number);
System.out.println
("CheckingsBean::customer_name =" +
this.customer_name);
System.out.println
("CheckingsBean::balance =" + this.balance);
System.out.println
("======================================================");
}
public void ejbPostCreate ( int accountNo, String
customer, double balance)
throws RemoteException,
CreateException {
System.out.println
("======================================================");
System.out.println ("Invoking 3
parameter CheckingsBean::ejbPostCreate");
System.out.println
("CheckingsBean::account_number =" +
this.account_number);
System.out.println
("CheckingsBean::customer_name =" +
this.customer_name);
System.out.println
("CheckingsBean::balance =" + this.balance);
System.out.println
("======================================================");
}
public void ejbActivate () throws RemoteException
{
System.out.println
("==============Invoking
CheckingsBean::ejbActivate======");
}
public void ejbLoad () throws RemoteException
{
System.out.println
("==============Invoking
CheckingsBean::ejbLoad==========");
}
public void ejbPassivate () throws
RemoteException {
System.out.println
("==============Invoking
CheckingsBean::ejbPassivate=====");
}
public void ejbRemove () throws RemoteException,
RemoveException {
System.out.println
("==============Invoking
CheckingsBean::ejbRemove========");
}
public void ejbStore () throws RemoteException
{
System.out.println
("==============Invoking
CheckingsBean::ejbStore=========");
}
public void setEntityContext (EntityContext
context) throws RemoteException {
System.out.println
("==============Invoking
CheckingsBean::setEntityContext=");
this._entityContext = context;
}
public void unsetEntityContext () throws
RemoteException {
System.out.println
("==============Invoking
CheckingsBean::unsetEntityContext");
this._entityContext = null;
}
private void jbInit () throws Exception
{
System.out.println
("==============Invoking
CheckingsBean::jbInit============");
}
}
|
5. Define a Primary Key class
Bank\CheckingsPK.java |
package Bank; import
java.util.*;
public class CheckingsPK implements
java.io.Serializable {
public int account_number;
public CheckingsPK() {
System.out.println("Invoking
CheckingsPK::CheckingsPK");
}
public CheckingsPK(int accountNo) {
System.out.println("Invoking
CheckingsPK::CheckingsPK");
account_number = accountNo;
}
}
|
6. Write the Deployment Descriptor for your Server
Note that the deployment descriptor
also specifies the properties of a certain Savings Entity
Bean and a Teller Session Bean. Don't be surprised. The code
for the Savings Entity Bean is included in the zip file and
can be downloaded and is very similar to the Checkings Entity
Bean. The steps to develop the Teller Session Bean can be
seen at the Developing a Session Bean link. I am using two
entity beans (Checkings and Savings) to show how workflow
between two entity beans can be co-ordinated and managed by a
single session bean (Teller) that creates and manages the
entity beans.
conf\Bank.ejbml |
<ejbml> <!---------------------------------------------------------->
<!------- Checkings Entity
Bean
---------------->
<!---------------------------------------------------------->
<entity-bean
name="Checkings"
descriptor="Bank/CheckingsDeployment"
package="Bank"
home="Bank.CheckingsHome"
remote="Bank.Checkings"
bean="Bank.CheckingsBean"
primary-key="Bank.CheckingsPK"
tx-attribute="TX_SUPPORTS"
>
<property
name="databasePassword"
value="mouse"
/>
<property
name="dataSourceName"
value="Checkings"
/>
<property
name="databaseUser"
value="user"
/>
<property
name="databaseTable"
value="checkings"
/>
<container-managed
storage-helper="com.ejbhome.generator.helpers.RelationalPersistenceCodeHelper"
table="checkings"
data-source="Checkings"
user="user"
password="mouse"
>
<field
name="balance"
/>
<field
name="customer_name"
/>
<field
name="account_number"
/>
</container-managed>
</entity-bean>
<!---------------------------------------------------------->
<!------- Savings Entity
Bean
---------------->
<!---------------------------------------------------------->
<entity-bean
name="Savings"
descriptor="Bank/SavingsDeployment"
package="Bank"
home="Bank.SavingsHome"
remote="Bank.Savings"
bean="Bank.SavingsBean"
primary-key="Bank.SavingsPK"
tx-attribute="TX_SUPPORTS"
>
<property
name="databasePassword"
value="mouse"
/>
<property
name="dataSourceName"
value="Checkings"
/>
<property
name="databaseUser"
value="user"
/>
<property
name="databaseTable"
value="savings"
/>
<container-managed
storage-helper="com.ejbhome.generator.helpers.RelationalPersistenceCodeHelper"
table="savings"
data-source="Checkings"
user="user"
password="mouse"
>
<field
name="balance"
/>
<field
name="customer_name"
/>
<field
name="account_number"
/>
</container-managed>
</entity-bean>
<!---------------------------------------------------------->
<!------- Teller Session
Bean
---------------->
<!---------------------------------------------------------->
<session-bean
name="Teller"
descriptor="Bank/TellerDeployment"
package="Bank"
home="Bank.TellerHome"
remote="Bank.Teller"
bean="Bank.TellerBean"
type="stateful"
timeout="3484"
tx-attribute="TX_SUPPORTS"
>
</session-bean>
</ejbml>
|
7. Compile your classes and
generate the Container code using the tools provided by the
vendor
MS-DOS Command Prompt |
E:\MyProjects\AccountEJB>cd Bank
E:\MyProjects\AccountEJB\Bank>javac *.java
E:\MyProjects\AccountEJB\Bank>cd ..
E:\MyProjects\AccountEJB>java com.ejbhome.Deployer
.\conf\Bank.ejbml
EJBHome EJB Deployer version 0.5.1 (Scunthorpe)
(c) Copyright IONA Technologies PLC 1999. All Rights
Reserved.
Windows NT x86 4.0
A nonfatal internal JIT (3.00.072b(x)) error 'regvarHI'
has occurred in :
'com/ejbhome/Deployer.<init>
(Ljava/util/Properties;Ljava/util/Vector;)V':
Please report this error in detail to
https://java.sun.com/cgi-bin/bugreport
Deploying: Checkings...
Generating: IonaCheckingsHome...done.
Generating: IonaRemoteCheckings...done.
Generating: IonaCheckingsBean...done.
Generating: IonaCheckingsContext...done.
Implementing Communications: Home Stubs &
Skels...done.
Implementing Communications: Remote Stubs &
Skels...done.
Compiling: IonaCheckingsHome.java...done.
Compiling: IonaRemoteCheckings.java...done.
Compiling: IonaCheckingsBean.java...done.
Compiling: IonaCheckingsContext.java...done.
Compiling: IonaCheckingsHome_Stub.java...done.
Compiling: IonaCheckingsHome_Skel.java...done.
Compiling: IonaRemoteCheckings_Stub.java...done.
Compiling: IonaRemoteCheckings_Skel.java...done.
Deploying: Savings...
Generating: IonaSavingsHome...done.
Generating: IonaRemoteSavings...done.
Generating: IonaSavingsBean...done.
Generating: IonaSavingsContext...done.
Implementing Communications: Home Stubs &
Skels...done.
Implementing Communications: Remote Stubs &
Skels...done.
Compiling: IonaSavingsHome.java...done.
Compiling: IonaRemoteSavings.java...done.
Compiling: IonaSavingsBean.java...done.
Compiling: IonaSavingsContext.java...done.
Compiling: IonaSavingsHome_Stub.java...done.
Compiling: IonaSavingsHome_Skel.java...done.
Compiling: IonaRemoteSavings_Stub.java...done.
Compiling: IonaRemoteSavings_Skel.java...done.
Deploying: Teller...
Generating: IonaTellerHome...done.
Generating: IonaRemoteTeller...done.
Generating: IonaTellerBean...done.
Generating: IonaTellerContext...done.
Implementing Communications: Home Stubs &
Skels...done.
Implementing Communications: Remote Stubs &
Skels...done.
Compiling: IonaTellerHome.java...done.
Compiling: IonaRemoteTeller.java...done.
Compiling: IonaTellerBean.java...done.
Compiling: IonaTellerContext.java...done.
Compiling: IonaTellerHome_Stub.java...done.
Compiling: IonaTellerHome_Skel.java...done.
Compiling: IonaRemoteTeller_Stub.java...done.
Compiling: IonaRemoteTeller_Skel.java...done.
E:\MyProjects\AccountEJB>
|
8. Startup your Server
MS-DOS Command Prompt |
E:\MyProjects\AccountEJB>
E:\MyProjects\AccountEJB>java com.ejbhome.Server
com.ejbhome.server.EnterpriseServer, initializing.
com.ejbhome.server.EnterpriseServer.fireContainerAdded()
at (Compiled Code)
com.ejbhome.VendorConfiguration.<init>() at
(VendorConfiguration.java:57)
com.ejbhome.VendorConfiguration.getSystemCodeHelper() at
(VendorConfiguration.java:174)
com.ejbhome.VendorConfiguration.getTransactionCodeHelper()
at (VendorConfiguration.java:138)
com.ejbhome.VendorConfiguration.getCommsCodeHelper() at
(VendorConfiguration.java:163)
com.ejbhome.VendorConfiguration.getTracingCodeHelper() at
(VendorConfiguration.java:152)
com.ejbhome.VendorConfiguration.getPersistenceCodeHelper()
at (VendorConfiguration.java:125)
com.ejbhome.VendorConfiguration.getSessionPassivationCodeHelper()
at (VendorConfiguration.java:185)
com.ejbhome.VendorConfiguration.getVendorPrefix() at
(VendorConfiguration.java:100)
starting RMI registry on port 1099...
RMI registry on port 1099, has started.
com.ejbhome.server.EnterpriseServer.bindDataSources() at
(Compiled Code)
com.ejbhome.naming.spi.rmi.RMICtx.<init>() at
(RMICtx.java:20)
registering XA data sources
com.ejbhome.sql.XADataSourceImpl.<init>(jdbc:odbc:Checkings,{password=mouse,
user=user}) at (XADataSourceImpl.java:75)
com.ejbhome.naming.spi.rmi.RMICtx.bind() at
(RMICtx.java:168)
com.ejbhome.server.EnterpriseServer.fireDataSourceAdded()
at (Compiled Code)
registered: Checkings -> jdbc:odbc:Checkings, as an XA
pooled data source [main]
com.ejbhome.sql.XADataSourceImpl.<init>(jdbc:odbc:Savings,{password=mouse,
user=user}) at (XADataSourceImpl.java:75)
com.ejbhome.naming.spi.rmi.RMICtx.bind() at
(RMICtx.java:168)
com.ejbhome.server.EnterpriseServer.fireDataSourceAdded()
at (Compiled Code)
registered: Savings -> jdbc:odbc:Savings, as an XA
pooled data source [main]
com.ejbhome.naming.spi.rmi.RMICtx.<init>() at
(RMICtx.java:20)
loading beans from: Bank.ejbml
com.ejbhome.server.EnterpriseServer$2.startElement(ejbml)
at (EnterpriseServer.java:228)
com.ejbhome.server.EnterpriseServer$2.startElement(entity-bean)
at (EnterpriseServer.java:228)
com.ejbhome.VendorConfiguration.getHomeContainerClassName()
at (VendorConfiguration.java:226)
com.ejbhome.VendorConfiguration.getVendorPrefix() at
(VendorConfiguration.java:100)
com.ejbhome.container.AbstractEJBHome.<init>() at
(AbstractEJBHome.java:136)
com.ejbhome.naming.spi.rmi.RMICtx.<init>() at
(RMICtx.java:20)
com.ejbhome.naming.spi.rmi.RMICtx.lookup("Checkings")
at (RMICtx.java:35)
com.ejbhome.naming.spi.rmi.RMICtx.bind() at
(RMICtx.java:168)
registered Bank.IonaCheckingsHome, as: Checkings.
com.ejbhome.server.EnterpriseServer$2.startElement(property)
at (EnterpriseServer.java:228)
com.ejbhome.server.EnterpriseServer$2.startElement(property)
at (EnterpriseServer.java:228)
com.ejbhome.server.EnterpriseServer$2.startElement(property)
at (EnterpriseServer.java:228)
com.ejbhome.server.EnterpriseServer$2.startElement(property)
at (EnterpriseServer.java:228)
com.ejbhome.server.EnterpriseServer$2.startElement(container-managed)
at (EnterpriseServer.java:228)
com.ejbhome.server.EnterpriseServer$2.startElement(field)
at (EnterpriseServer.java:228)
com.ejbhome.server.EnterpriseServer$2.startElement(field)
at (EnterpriseServer.java:228)
com.ejbhome.server.EnterpriseServer$2.startElement(field)
at (EnterpriseServer.java:228)
com.ejbhome.server.EnterpriseServer$2.startElement(entity-bean)
at (EnterpriseServer.java:228)
com.ejbhome.VendorConfiguration.getHomeContainerClassName()
at (VendorConfiguration.java:226)
com.ejbhome.VendorConfiguration.getVendorPrefix() at
(VendorConfiguration.java:100)
com.ejbhome.container.AbstractEJBHome.<init>() at
(AbstractEJBHome.java:136)
com.ejbhome.naming.spi.rmi.RMICtx.<init>() at
(RMICtx.java:20)
com.ejbhome.naming.spi.rmi.RMICtx.lookup("Checkings")
at (RMICtx.java:35)
com.ejbhome.naming.spi.rmi.RMICtx.bind() at
(RMICtx.java:168)
registered Bank.IonaSavingsHome, as: Savings.
com.ejbhome.server.EnterpriseServer$2.startElement(property)
at (EnterpriseServer.java:228)
com.ejbhome.server.EnterpriseServer$2.startElement(property)
at (EnterpriseServer.java:228)
com.ejbhome.server.EnterpriseServer$2.startElement(property)
at (EnterpriseServer.java:228)
com.ejbhome.server.EnterpriseServer$2.startElement(property)
at (EnterpriseServer.java:228)
com.ejbhome.server.EnterpriseServer$2.startElement(container-managed)
at (EnterpriseServer.java:228)
com.ejbhome.server.EnterpriseServer$2.startElement(field)
at (EnterpriseServer.java:228)
com.ejbhome.server.EnterpriseServer$2.startElement(field)
at (EnterpriseServer.java:228)
com.ejbhome.server.EnterpriseServer$2.startElement(field)
at (EnterpriseServer.java:228)
com.ejbhome.server.EnterpriseServer$2.startElement(session-bean)
at (EnterpriseServer.java:228)
com.ejbhome.VendorConfiguration.getHomeContainerClassName()
at (VendorConfiguration.java:226)
com.ejbhome.VendorConfiguration.getVendorPrefix() at
(VendorConfiguration.java:100)
com.ejbhome.container.AbstractEJBHome.<init>() at
(AbstractEJBHome.java:136)
com.ejbhome.naming.spi.rmi.RMICtx.bind() at
(RMICtx.java:168)
registered Bank.IonaTellerHome, as: Teller.
finished loading beans from: Bank.ejbml
loading beans from: Checkings.ejbml
com.ejbhome.server.EnterpriseServer$2.startElement(ejbml)
at (EnterpriseServer.java:228)
com.ejbhome.server.EnterpriseServer$2.startElement(entity-bean)
at (EnterpriseServer.java:228)
com.ejbhome.VendorConfiguration.getHomeContainerClassName()
at (VendorConfiguration.java:226)
com.ejbhome.VendorConfiguration.getVendorPrefix() at
(VendorConfiguration.java:100)
com.ejbhome.container.AbstractEJBHome.<init>() at
(AbstractEJBHome.java:136)
com.ejbhome.naming.spi.rmi.RMICtx.bind() at
(RMICtx.java:168)
registered Bank.IonaCheckingsHome, as: checkings.
com.ejbhome.server.EnterpriseServer$2.startElement(property)
at (EnterpriseServer.java:228)
com.ejbhome.server.EnterpriseServer$2.startElement(property)
at (EnterpriseServer.java:228)
com.ejbhome.server.EnterpriseServer$2.startElement(property)
at (EnterpriseServer.java:228)
com.ejbhome.server.EnterpriseServer$2.startElement(property)
at (EnterpriseServer.java:228)
com.ejbhome.server.EnterpriseServer$2.startElement(container-managed)
at (EnterpriseServer.java:228)
com.ejbhome.server.EnterpriseServer$2.startElement(field)
at (EnterpriseServer.java:228)
com.ejbhome.server.EnterpriseServer$2.startElement(field)
at (EnterpriseServer.java:228)
com.ejbhome.server.EnterpriseServer$2.startElement(field)
at (EnterpriseServer.java:228)
finished loading beans from: Checkings.ejbml
loading beans from: Savings.ejbml
com.ejbhome.server.EnterpriseServer$2.startElement(ejbml)
at (EnterpriseServer.java:228)
com.ejbhome.server.EnterpriseServer$2.startElement(entity-bean)
at (EnterpriseServer.java:228)
com.ejbhome.VendorConfiguration.getHomeContainerClassName()
at (VendorConfiguration.java:226)
com.ejbhome.VendorConfiguration.getVendorPrefix() at
(VendorConfiguration.java:100)
com.ejbhome.container.AbstractEJBHome.<init>() at
(AbstractEJBHome.java:136)
com.ejbhome.naming.spi.rmi.RMICtx.bind() at
(RMICtx.java:168)
registered Bank.IonaSavingsHome, as: savings.
com.ejbhome.server.EnterpriseServer$2.startElement(property)
at (Compiled Code)
com.ejbhome.server.EnterpriseServer$2.startElement(property)
at (Compiled Code)
com.ejbhome.server.EnterpriseServer$2.startElement(property)
at (Compiled Code)
com.ejbhome.server.EnterpriseServer$2.startElement(property)
at (Compiled Code)
com.ejbhome.server.EnterpriseServer$2.startElement(container-managed)
at (Compiled Code)
com.ejbhome.server.EnterpriseServer$2.startElement(field)
at (Compiled Code)
com.ejbhome.server.EnterpriseServer$2.startElement(field)
at (Compiled Code)
com.ejbhome.server.EnterpriseServer$2.startElement(field)
at (Compiled Code)
finished loading beans from: Savings.ejbml
loading beans from: Teller.ejbml
com.ejbhome.server.EnterpriseServer$2.startElement(ejbml)
at (Compiled Code)
com.ejbhome.server.EnterpriseServer$2.startElement(session-bean)
at (Compiled Code)
com.ejbhome.VendorConfiguration.getHomeContainerClassName()
at (VendorConfiguration.java:226)
com.ejbhome.VendorConfiguration.getVendorPrefix() at
(VendorConfiguration.java:100)
com.ejbhome.container.AbstractEJBHome.<init>() at
(AbstractEJBHome.java:136)
com.ejbhome.naming.spi.rmi.RMICtx.bind() at
(RMICtx.java:168)
registered Bank.IonaTellerHome, as: teller.
finished loading beans from: Teller.ejbml
|
The Server is now up and ready and is waiting for connections from the client.
Next part....Developing Session Beans
What do you think of this article?
Have your say about the article. You can make your point about the article by mailing [email protected] (If you haven't allready joined, you can join by going to https://www.onelist.com/community/dev-java).
You can also write a review. We will publish the best ones here on this article. Send your review to [email protected]. Please include the title of the article you are reviewing.
Further Reading
The Enterprise JavaBeans Series:
Enterprise Java Beans By Gopalan Suresh Raj.
In this introduction to Enterprise Java Beans, Gopalan covers the bases then goes on to demonstrate how to build server side business object components. This article is the introduction to Gopalans series of Enterprise JavaBeans articles. (This series of articles is courtesy of Gopalan Suresh Raj)
Author: Gopalan Suresh Raj
Date Submitted: January 6th 2000
Level of Difficulty: Advanced
Subjects Covered: Enterprise JavaBeans, EJB Server, EJB Architecture, Java Naming and Directory Interface, Java Transaction Service.
Pre-required Reading: None
Enterprise Java Beans Series - Components at the Server By Gopalan Suresh Raj.
Author: Gopalan Suresh Raj
Date Submitted: January 11th 2000
Level of Difficulty: Advanced
Subjects Covered: Server side components, CORBA
Pre-required Reading: Enterprise JavaBeans
Enterprise Java Beans Series - EJB Model By Gopalan Suresh Raj.
Author: Gopalan Suresh Raj
Date Submitted: January 11th 2000
Level of Difficulty: Advanced
Subjects Covered: Enterprise JavaBeans, EJB Server, EJB Containers, EJB Clients.
Pre-required Reading: Enterprise JavaBeans
Enterprise Java Beans Series - EJB Naming Services and JNDI By Gopalan Suresh Raj.
Author: Gopalan Suresh Raj
Date Submitted: January 11th 2000
Level of Difficulty: Advanced
Subjects Covered: Naming Services, Java Naming Directory Interface
Pre-required Reading: Enterprise JavaBeans
Enterprise Java Beans Series - EJB Transactions and JTS By Gopalan Suresh Raj.
Author: Gopalan Suresh Raj
Date Submitted: January 11th 2000
Level of Difficulty: Advanced
Subjects Covered: Java Transaction Service, Two-phase commits
Pre-required Reading: Enterprise JavaBeans
Enterprise Java Beans Series - EJB Lifecycle By Gopalan Suresh Raj.
Author: Gopalan Suresh Raj
Date Submitted: January 11th 2000
Level of Difficulty: Advanced
Subjects Covered: EJB server provider, EJB container provider, EJB developer, EJB deployer, Application developer.
Pre-required Reading: Enterprise JavaBeans
Enterprise Java Beans Series - EJB Servers By Gopalan Suresh Raj.
Author: Gopalan Suresh Raj
Date Submitted: January 11th 2000
Level of Difficulty: Advanced
Subjects Covered: Server Infrastructure
Pre-required Reading: Enterprise JavaBeans
Enterprise Java Beans Series - EJB Containers By Gopalan Suresh Raj.
Author: Gopalan Suresh Raj
Date Submitted: January 11th 2000
Level of Difficulty: Advanced
Subjects Covered: EJB Containers, EJB Servers
Pre-required Reading: Enterprise JavaBeans
Enterprise Java Beans Series - EJB Components By Gopalan Suresh Raj.
Author: Gopalan Suresh Raj
Date Submitted: January 11th 2000
Level of Difficulty: Advanced
Subjects Covered: EJB Object, Home Object, Remote Object
Pre-required Reading: Enterprise JavaBeans
Enterprise Java Beans Series - EJB Session Beans By Gopalan Suresh Raj.
Author: Gopalan Suresh Raj
Date Submitted: January 11th 2000
Level of Difficulty: Advanced
Subjects Covered: Stateful Session Beans, Stateless Session Beans
Pre-required Reading: Enterprise JavaBeans
Enterprise Java Beans Series - EJB Entity Beans By Gopalan Suresh Raj.
Author: Gopalan Suresh Raj
Date Submitted: January 11th 2000
Level of Difficulty: Advanced
Subjects Covered: Container-Managed Persistence, Bean-Managed Persistence
Pre-required Reading: Enterprise JavaBeans
Enterprise Java Beans Series - Writing a Session Bean By Gopalan Suresh Raj.
Part 2 of a four part series: A four tier bank account example
Author: Gopalan Suresh Raj
Date Submitted: January 11th 2000
Level of Difficulty: Advanced
Subjects Covered: Developing Session Beans, Home & Remote Interfaces, Deployment Descriptors.
Pre-required Reading: Enterprise JavaBeans
Enterprise Java Beans Series - Writing an EJB Client By Gopalan Suresh Raj.
Part 3 of a four part series: A four tier bank account example
Author: Gopalan Suresh Raj
Date Submitted: January 11th 2000
Level of Difficulty: Advanced
Subjects Covered: EJB Clients.
Pre-required Reading: Enterprise JavaBeans
Enterprise Java Beans Series - Writing an EJB Servlet Client By Gopalan Suresh Raj.
Part 4 of a four part series: A four tier bank account example
Author: Gopalan Suresh Raj
Date Submitted: January 11th 2000
Level of Difficulty: Advanced
Subjects Covered: Servlet Clients.
Pre-required Reading: Enterprise JavaBeans
Author: Gopalan Suresh Raj
Gopalan has his own site at Author Central (visit him. He also maintains his own site at https://www.execpc.com/~gopalan/) - Contribute to iDevResource.com and you can have one too!
© Copyright 1997-2000 Gopalan Suresh Raj. Reproduced with Permission
|