Developing library operation using EJB

Download Report

Transcript Developing library operation using EJB

MRK
Think BIG
Developing an EJB for Library operations
By
M.Rajendra Kumar
www.mrajendrakumar.info
MRK
Think BIG
Developing an EJB for Library operations
Content of the Power Point Presentation
1.
2.
3.
Create the database with MS-Access
Create the user DSN Name to the database
How to develop an EJB for Library operation?
A. EJB architecture
B. Simple EJB program
C. Requirement of Library operation
D. Implementation Library operation with EJB
E. How to run EJB
MRK
Think BIG
Developing an EJB for Library operations
Required database for Library
1.
Create a database in access or oracle
start-->All programs-->Microsoft Access-->File-->New(Black db)
-->give a db name-->Create table in Design view-->create the req
field name with data type --> save it as giving a name to your
table(and then if you want give some data to it) --> close the
access
2.
Create a DNS for the database which you created
Start-->settings-->Control Panel-->Administrtor Tool-->Data
Sources(ODBC)-->Add(under user DSN)-->
Microsoft Access-Driver(*.mdb)-->give DSN name & select the
access DB(and if you want username & password) -->Ok-->Ok
MRK
Think BIG
Developing an EJB for Library operations
3A. EJB architecture
Require files
 Remote Interface
 Home Interface
 Bean Class
 Client Class
MRK
Think BIG
Developing an EJB for Library operations
3B. Simple EJB program
Remote Interface coding
import java.rmi.*;
import javax.ejb.*;
public interface HelloRemote extends EJBObject {
// Required methods declaration which are communication between client and server
public String sayHello(String str) throws RemoteException;
}
Indicating that this is a Remote interface
MRK
Think BIG
Developing an EJB for Library operations
3B. Simple EJB program
Home Interface coding
import java.rmi.*;
import javax.ejb.*;
public interface HelloHome extends EJBHome {
// ONLY create() method
public HelloRemote create() throws RemoteException, CreateException;
}
Indicating that this is a Home interface
MRK
Think BIG
Developing an EJB for Library operations
3B. Simple EJB program
Bean Class coding
import java.rmi.*;
import javax.ejb.*;
SessionBean is an interface which has
following methods
1.ejbCreate()
2.ejbRemove()
3.ejbActivate()
4.ejbPassivate()
public class HelloBean implements SessionBean {
5.setSessionContext (SessionContext
SessionContext ctx;
ctx)
public void ejbCreate() {
You will face “abstract” error while
}
compiling if any of method is missed.
public String sayHello(String str) throws RemoteException{
System.out.println("\nMsg from Client : "+str);
return "\nMsg from Bean : Hello EJB Client!";
}
//Continue…
Indicating that this is a Bean Class
MRK
Think BIG
Developing an EJB for Library operations
3B. Simple EJB program
Bean Class coding
public void ejbPassivate(){
}
public void ejbActivate(){
}
public void setSessionContext(SessionContext ctx) {
this.ctx = ctx;
}
public void ejbRemove() {
}
}
MRK
Think BIG
Developing an EJB for Library operations
3B. Simple EJB program
Client Class coding
import java.rmi.*;
import javax.naming.*; //For Context and InitialContext class
import java.util.*; // For Properties class
public class HelloClient {
public static void main(String arg[]) {
try{
Properties p = new Properties();
p.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextF
actory");
p.put(Context.PROVIDER_URL,"t3://localhost:7001");
Context ctx = new InitialContext(p);
//Continue…
MRK
Think BIG
Developing an EJB for Library operations
3B. Simple EJB program
Client Class coding
Object objRef = ctx.lookup("HelloBean");
HelloHome homeObj =
(HelloHome)javax.rmi.PortableRemoteObject.narrow(objRef,HelloHome.class);
HelloRemote remoteObj = homeObj.create();
System.out.println(remoteObj.sayHello("Hello EJB server!"));
remoteObj.remove();
}catch(java.rmi.RemoteException e) {System.out.println("RemoteException :"+e);
}catch(javax.ejb.CreateException e) { System.out.println("CreateException :"+e);
}catch(javax.naming.NamingException e){ System.out.println("NamingException :"+e);
}catch(Exception e) { System.out.println("javaX RemoteException : "+e);
}
}
}
MRK
Think BIG
Developing an EJB for Library operations
3C. Requirement of Library operation
Required methods for Library
Req operation
 Sort (Display)
No.s args with data type
One - string
Req () for client & server comm.,
 Search
One - string
String queryOp(String item)
 Insert
Multiple – Book struc.,
 Delete
One - int
 Issue
One - int
 Return
One - int
String updateOp(int accno, String
name, String author, int price, int
isAvailable)
String updateOp(int accno, char ird)
MRK
Think BIG
Developing an EJB for Library operations
3D. Implementation Library operation with EJB
Remote Interface coding
import java.rmi.*;
import javax.ejb.*;
public interface LibraryRemote
HelloRemote extends
extends
EJBObject
EJBObject
{ {
// Required methods declaration which are communication between client and server
}
}
public String
public
StringqueryOperation(String
sayHello(String str) str)
throws
throws
RemoteException;
RemoteException;
public String updateOperation(int accno1,char ird) throws RemoteException;
public String updateOperation(int accno1, String title1, String author1, int price1, int
isavailable1) throws RemoteException;
Req () for client & server comm.,
String queryOp(String item)
String updateOp(int accno, String
name, String author, int price, int
isAvailable)
String updateOp(int accno, char ird)
MRK
Think BIG
Developing an EJB for Library operations
3D. Implementation Library operation with EJB
Home Interface coding
import java.rmi.*;
import javax.ejb.*;
public interface LibraryHome
HelloHome extends
extends
EJBHome
EJBHome
{ {
// ONLY create() method
public LibraryRemote
HelloRemote create()
create()
throws
throws
RemoteException,
RemoteException,
CreateException;
CreateException;
}
MRK
Think BIG
Developing an EJB for Library operations
3D. Implementation Library operation with EJB
Bean Class coding
import java.rmi.*;
import javax.ejb.*;
import java.sql.*; // For the sql commands
public class LibraryBean
implements
SessionBean
HelloBean implements
SessionBean
{ {
SessionContext ctx;
Connection c;
public voidstm;
ejbCreate() {
Statement
}
ResultSet
rs;
public String sayHello(String str) throws RemoteException{
System.out.println("\nMsg from Clientauthor,isavailable;
: "+str);
String tableName,qry_str,returnRecordSet,title,
return i;"\nMsg from Bean : Hello EJB Client!";
int accno, price,
}
//Continue…
MRK
Think BIG
Developing an EJB for Library operations
3D. Implementation Library operation with EJB
Bean Class coding
public void ejbCreate() {
} tableName = "books"; //Table name for the operation performance
public
try{ String sayHello(String str) throws RemoteException{
System.out.println("\nMsg
from Client : "+str);
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
return
"\nMsg from Bean : Hello EJB Client!";
c=DriverManager.getConnection("jdbc:odbc:MRKLibrary”);
}
stm=c.createStatement();
//Continue…
}catch(java.lang.ClassNotFoundException e){
System.out.println("ClassNotFoundException : "+e);
}catch(SQLException e){
System.out.println("Error in ejbCreate method : "+e);
}
}
JDBC ODBC Connection to the database
MRK
Think BIG
Developing an EJB for Library operations
3D. Implementation Library operation with EJB
Bean Class coding
}
public String queryOperation(String str) throws RemoteException{
RemoteException;
public
str="SELECT
String updateOperation(int
* FROM "+tableName+"
accno1,char
"+str; ird) throws RemoteException;
public
String
String
crntRecordSet="\nS.NO
updateOperation(intACCESS
accno1,NUM
String
TITLE
title1,
\t\t\tAUTHOR
String author1,
\t\tPRICE
int
price1,
int isavailable1) throws RemoteException;
} \tAVAILABLITY";
System.out.println("\nReceived
in queryOperation
methods
: "+str);
public
String updateOperation(intquery
accno1,char
ird) throws
RemoteException{
i=0;
try {
rs=stm.executeQuery(str);
}
Req operation
while(rs.next())
public String
updateOperation(int accno1, String title1, String 
author1,
int
Sort (Display)
price1, int{ isavailable1)
i++;
throws RemoteException{
 Search
accno=rs.getInt("accno");
 Insert
title=rs.getString("title");
 Delete
author=rs.getString("author");
 Issue
price=rs.getInt("price");
 Return
//Continue…
MRK
Think BIG
Developing an EJB for Library operations
3D. Implementation Library operation with EJB
Bean Class coding
isavailable = rs.getBoolean("isavailable") ? "Yes" : "No";
System.out.print("\n "+i+") "+accno+" \t"+title+" \t\t"+author+"
\t\t"+price+" \t"+isavailable+" ");
crntRecordSet+="\n "+i+") "+accno+" \t"+title+" \t\t"+author+"
\t\t"+price+" \t"+isavailable+" ";
}
if (i==0) crntRecordSet="\t\t\t << Book is not available >>";
Req operation
}catch (Exception e){
 Sort (Display)
System.out.println("Error in selectOperation method : "+e);
 Search
}
 Insert
return "REC::"+crntRecordSet;
 Delete
}
 Issue
 Return
MRK
Think BIG
Developing an EJB for Library operations
3D. Implementation Library operation with EJB
Bean Class coding
public String updateOperation(int accno1,char
accno1, charird)
ird)throws
throwsRemoteException{
RemoteException{
String str="";
if(isAvailableAccNo(accno1)) {
}
if(ird=='I')
//Issue
str = updateTheRecord("UPDATE "+tableName+" set isavailable=0 WHERE
isavailable=1 AND accno="+accno1);
if(ird=='R')
//Return
str = updateTheRecord("UPDATE "+tableName+" set isavailable=1
WHERE
Req operation
isavailable=0 AND accno="+accno1);
 Sort (Display)
if(ird=='D')
//Delete
 Search
str = updateTheRecord("DELETE FROM "+tableName+" WHERE
 Insert
accno="+accno1);
 >>";
Delete
}else str = "ERR::\t\t\t << Sorry, the AccessNumber is NOT available.
 Issue
return str;
 Return
}
//Continue…
MRK
Think BIG
Developing an EJB for Library operations
3D. Implementation Library operation with EJB
Bean Class coding
public String updateOperation(int accno1, String title1, String author1, int price1,
int isavailable1)
price1, int isavailable1)
throws RemoteException{
throws RemoteException{
String str="";
if(!isAvailableAccNo(accno1))
str = updateTheRecord("INSERT INTO "+tableName+"
}values("+accno1+",'"+title1+"','"+author1+"',"+price1+",'"+isavailable1+"')");
else str = "ERR::\t\t\t << Sorry, the AccessNumber is already exist. >>";
return str;
Req operation
}
//Continue…






Sort (Display)
Search
Insert
Delete
Issue
Return
MRK
Think BIG
Developing an EJB for Library operations
3D. Implementation Library operation with EJB
Bean Class coding
public boolean isAvailableAccNo(int accno1 ) {
boolean isAvail=false;
try
{
rs = stm.executeQuery("SELECT * FROM "+tableName);
while(rs.next()) {
if( accno1 == rs.getInt("accno")){
isAvail = true;
break;
}
}
}catch (Exception e){
System.out.println("Error in isAvailableAccNo method : "+e);
}
return isAvail;
Checking that is any book in this access no?
}
//Continue…
MRK
Think BIG
Developing an EJB for Library operations
3D. Implementation Library operation with EJB
Bean Class coding
public String updateTheRecord(String update){
String comment = "\t\t\t << "+update.substring(0,6);
int totalRecordUpdated = -1;
System.out.println("\nReceived query in updateTheRecord method : "+update);
comment+=" operation successfully made >>";
try
{
totalRecordUpdated = stm.executeUpdate(update);
}catch (Exception e){
System.out.println("Error in updateTheRecord method : "+e);
comment = "\t\t\t << "+update.substring(0,6);
comment+=" operation IS NOT successfully made >>";
}
Executing the updateOpeation method
System.out.println("Total number of record(s) is updated : "+totalRecordUpdated);
comment+="\n\t\t\t\t << for only "+totalRecordUpdated+" book(s) >>";
return "COM::"+comment;
}
MRK
Think BIG
Developing an EJB for Library operations
3D. Implementation Library operation with EJB
Bean Class coding
}
}
public void ejbPassivate(){
}
public void ejbActivate(){
}
public void setSessionContext(SessionContext ctx) {
this.ctx = ctx;
}
ejbRemove(){{
public void ejbRemove()
try{
}
stm.close();
c.close();
}catch(SQLException e){
System.out.println("Error in ejbRemove method : "+e);
}
}
Release (De-allocate) the resources i.e here
JDBC ODBC Connection
MRK
Think BIG
Developing an EJB for Library operations
3D. Implementation Library operation with EJB
Client Class coding
import java.rmi.*;
import javax.naming.*; //For Context and InitialContext class
import java.util.*; // For Properties class
public class HelloClient
LibraryClient
{ {
void
main(String arg[])
{
public static int
getNumber()
{
DataInputStream
dis;
try{
int in=0; Properties p = new Properties();
try {
p.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextF
dis
actory"); = new DataInputStream(System.in);
in = Integer.parseInt(dis.readLine());
ifp.put(Context.PROVIDER_URL,"t3://localhost:7001");
(in<0) throw new Exception();
Context ctx
}catch(Exception
e) ={ new InitialContext(p);
System.out.println("\n \t\t\t << Must be in valid number format only >>");
in = getNumber();
}
//Continue…
return in;
Method for get input as numeric format from
}
user
//Continue…
MRK
Think BIG
Developing an EJB for Library operations
3D. Implementation Library operation with EJB
Client Class coding
public static String getString() {
DataInputStream dis;
Method for get input as String format from
String str="";
user
try{
dis = new DataInputStream(System.in);
str = dis.readLine();
}catch(Exception e) {
System.out.println("Exception : "+e);
}
return str;
}
public static void main(String arg[]) {
try{ recvResultSet="";
String
String author,title;
Properties p = new Properties();
p.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextF
int accno=-1,
price,isAvailable,ch,ch2;
actory");
p.put(Context.PROVIDER_URL,"t3://localhost:7001");
//Continue…
//Continue…
MRK
Think BIG
Developing an EJB for Library operations
3D. Implementation Library operation with EJB
Client Class coding
try{
Properties p = new Properties();
p.put(Context.INITIAL_CONTEXT_FACTORY,
"weblogic.jndi.WLInitialContextFactory");
p.put(Context.PROVIDER_URL,"t3://localhost:7001");
Context ctx = new InitialContext(p);
InitialContext(p);
Assigning user define properties to InitialContext
Object objRef
objRef == ctx.lookup("HelloBean");
ctx.lookup(“LibraryBean");
HelloHome homeObj
LibraryHome
homeObj
= (HelloHome)
= (LibraryHome)
javax.rmi.PortableRemoteObject.narrow
(objRef,HelloHome.class);
javax.rmi.PortableRemoteObject.narrow
(objRef,LibraryHome.class);
HelloRemote remoteObj
LibraryRemote
remoteObj
= homeObj.create();
= homeObj.create();
Creating remote object for server comm.,
//Continue…
MRK
Think BIG
Developing an EJB for Library operations
3D. Implementation Library operation with EJB
Client Class coding
Overview of the switch case to call the
Do {
necessary methods
switch (userkey){
case 1 : Sorting order(display)
switch (userkey){
case 1 : Access no
case 2 : Title
}
case 2 : Search
case 3 : Issue
case 4 : Return
case 5 : Insert
case 6 : Delete
case 7 : Exit
}
}while(!Exit)
MRK
Think BIG
Developing an EJB for Library operations
3D. Implementation Library operation with EJB
Client Class coding
do{
System.out.print("\n\n\nSelect the operation\n====================");
System.out.print("\n1.Sort(Display)\n2.Search\n3.Issue\n
4.Return\n5.Insert\n6.Delete\n7.Exit ");
ch = getNumber();
System.out.println(remoteObj.sayHello("Hello
EJB server!"));
switch(ch) {
case 1 : System.out.print("(SORT) Select the sorting ORDER”);
System.out.print("\n\t1.Access number\n\t2.Title\n\t3.Main menu-Back
(Default) : ");
ch2 = getNumber();
switch(ch2){
case 1 : System.out.print("\t(ORDER BY ACCESS NUMBER)
"+remoteObj.queryOperation(" ORDER BY accno")); break;
case 2 : System.out.print("\t(ORDER BY TITLE)
"+remoteObj.queryOperation(" ORDER BY title")); break;
} break;
MRK
Think BIG
Developing an EJB for Library operations
3D. Implementation Library operation with EJB
Client Class coding
case 2 : System.out.print("(SEARCH) ");
System.out.print("\nEnter the book title : ");
title = getString();
System.out.print("\n"+remoteObj.queryOperation(" WHERE title LIKE
'"+title+"%' ORDER BY title"));
break;
case 3 : System.out.print("(ISSUE) ");
System.out.print("\t(ORDER BY AVAILABLITY) "+
remoteObj.queryOperation(" WHERE isavailable=1 ORDER BY title"));
System.out.print("\nEnter the book access number: ");
accno = getNumber();
if (accno!=0)
System.out.print("\n"+remoteObj.updateOperation(accno,'I'));
break;
MRK
Think BIG
Developing an EJB for Library operations
3D. Implementation Library operation with EJB
Client Class coding
case 4 : System.out.print("(RETURN) ");
System.out.print("\nEnter the book access number : ");
accno = getNumber();
if (accno!=0)
System.out.print("\n"+remoteObj.updateOperation(accno,'R'));
break;
case 5 : System.out.print("(INSERT) ");
System.out.print("\nEnter the book Access Number : ");
do {
if (accno==0)
System.out.println("\n \t\t\t << Must be in valid number format only >>");
accno = getNumber();
} while (accno==0);
MRK
Think BIG
Developing an EJB for Library operations
3D. Implementation Library operation with EJB
Client Class coding
System.out.print("Enter the book Title : ");
title = getString();
System.out.print("Enter the book Author : "); author = getString();
System.out.print("Enter the book Price : ");
price = getNumber();
System.out.print("Is this book issuable?\n(Enter 0 to NO) : ");
isAvailable = getNumber()==0 ? 0 : 1;
System.out.print("\n"+
remoteObj.updateOperation(accno,title,author,price,isAvailable));
break;
case 6 : System.out.print("(DELETE) ");
System.out.print("\nEnter the book access number\n(Enter 0 to CANCEL this
operation) : "); accno = getNumber();
if (accno!=0)
System.out.print("\n"+remoteObj.updateOperation(accno,'D'));
break;
MRK
Think BIG
Developing an EJB for Library operations
3D. Implementation Library operation with EJB
Client Class coding
case 7 : break;
}
}while(ch!=7);
remoteObj.remove();
}catch(java.rmi.RemoteException e) {System.out.println("RemoteException :"+e);
}catch(javax.ejb.CreateException e) { System.out.println("CreateException :"+e);
}catch(javax.naming.NamingException e){ System.out.println("NamingException :"+e);
}catch(Exception e) { System.out.println("javaX RemoteException : "+e);
}
}
}
MRK
Think BIG
Developing an EJB for Library operations
3E. How to run EJB
Deploy and run the EJB program
 Once your MS-Access i.e database, DSN connection and the EJB code are
successful completed. Then you can start compile and run the EJB program as
follows

Go to the command prompt and type as follows for set the weblogic environment
 D:\bea\weblogic81\server\bin
 Setwlsenv
Client-CMD
 Goto to your EJB program directory in the prompt for compiling using as follows
 Z:
 Cd Z:\mw\ejb\lib
 Javac *.java
 Start the weblogic server which located in
D:\bea\weblogic81\server\bin\startWLS.cmd
Client-CMD
Server-CMD
EJB BUILDER-CMD & EJB BUILDER-APP
 Start the weblogic builder which located in
D:\bea\weblogic81\server\bin\startWLBuilder.cmd
MRK
Think BIG
Developing an EJB for Library operations
3E. How to run EJB
Deploy and run the EJB program
EJB BUILDER-APP

Now connect the EJB builder to the server, once server completely started

Open the EJB program folder to create xml files and jar file which located in
EJB BUILDER-APP
Z:\mw\ejb\lib
 Check and set/type appropriate file name to deployment. EJB BUILDER-APP
 EJB client jar file : set as  Z:\mw\ejb\lib\test.jar
 Select the LibraryBean which appear left- side view for setting
 General tab
 EJB Name : set as  LibraryBean
 Transacting type : set as  Container
 JNDI name : set as(Which you given the client prog’s lookup stm) -> LibraryBean
 Get in Classes tab
 Bean : set as  LibraryBean
 Home : set as  LibraryHome
 Remote : set as  LibraryRemote
 Save it and deploy it
EJB BUILDER-APP
Click “tools and then Deploy Module…” in the EJB builder
MRK
Think BIG
Developing an EJB for Library operations
3E. How to run EJB
Deploy and run the EJB program
 Now you can run the client program after successful EJB deployment
 Get back to the command prompt and run LibraryClient program
Client-CMD
 Java LibraryClient
 Now you can start use the EJB library program to view and do the library
Client-CMD
operation
 You can also view some change in the server side by doing some operation the
client side
Client-CMD
Server-CMD
MRK
Question Question Question Question Question
Question Question Question Question
Think BIG
Question Question Question Question Question Question Question Question Question
Question Question Question Question Question Question Question Question Question
Question Question Question Question Question Question Question Question Question
Question Question Question Question Question Question Question Question Question
Question Question Question Question Question Question Question Question Question
Question Question Question Question Question Question Question Question Question
Question Question Question Question Question Question Question Question Question
Question Question Question Question Question Question Question Question Question
Question Question Question Question Question Question Question Question Question
Question Question Question Question Question Question Question Question Question
Question Question Question Question Question Question Question Question Question
Question Question Question Question Question Question Question Question Question
Question Question Question Question Question Question Question Question Question
Question Question Question Question Question Question Question Question Question
Question Question Question Question Question Question Question Question Question
Question Question Question Question Question Question Question Question Question
Question Question Question Question Question Question Question Question Question
Question Question Question Question Question Question Question Question Question
Question Question Question Question Question Question Question Question Question
Question Question Question Question Question Question Question Question Question
Question Question Question Question Question Question Question Question Question
Question Question Question Question Question Question Question Question Question
Question Question Question Question Question Question Question Question Question
Question Question Question Question Question Question Question Question Question
www.mrajendrakumar.info
Question Question Question Question Question Question
Question Question Question
Developing an EJB for Library operations
? Question(s) ?