:, JBuilder EJB 2.x CMP EJB Relationships JBuilder EJB Test Client EJB EJB Seminar CMP Entity Beans Value Object Design Pattern J2EE Design Patterns Value Object Value Object Factory J2EE EJB Test Client Seminar Entity Bean Value Object Design Pattern Session Bean Value Object Design Pattern Entity Beans Value Object Design Pattern( Data Transfer Object Design Pattern) J2EE EJB Container (Design Pattern) ( 1)
J2EE Value Object Design Pattern Entity Bean Entity Bean Client EJB Network getattribute1() getattribute2() getattribute3() getattribute4() getattribute5() 1 Entity Bean Value Object Value Object Value Object
Client SomeValueObject EJB getsomevalueobject() getattribute1() getattribute2() getattribute3() Network getattribute4() getattribute5() 2 Value Object Design Pattern Value Object Design Pattern SeminarTestClient 1 Value Object Entity Bean Value Object use cases use case Value Object business logic Value Object use cases Value Object Entity Bean Value Object Value Object Value Object Value Object Java Serializable Object Value Object Domain Model Domain Model Value Object Domain Model Value Object Value Object Domain Value Object
Value Object Domain Value Object Value Object Custom Value Object Value Object Entity Bean Entity Bean Domain Model Domain Value Object Custom Value Object Entity Bean Custom Value Object Bean Domain Value Object Value Object Domain Objects Design Pattern Value Object Factory Design Pattern Value Objects Value Object Factory Value Objects Value Object Factory Java Class Session Bean Stateless Session Bean Servlet Seminar Value Object Value Object Domain Value Object Seminar Entity Bean Class Diagram 3 Seminar Entity Bean Seminar Value Object class diagram Class JBuilder Seminar Value Object
JBuilder Borland CodeCentral JBuilder Opentools Value Object Wizard zip VOWizard.jar <JBuilder >/lib/ext CodeCentral ( 2) Value Object Wizard Domain Value Object JBuilder Entity Bean class SeminarBean.java Wizards Create Value Object 4 Value Object Wizard Seminar Entity Bean Value Object Entity Bean ( Room Attendee Instructor Entity Beans) Value Object JBuilder EJB Designer Seminar Entity Bean View Bean Source JBuilder Bean JBuilder Wizards Create Value Object JBuilder Value Object Value Object Factory
5 Value Object Wizard 6 Value Object Wizard Value Object Wizard SeminarValueObject SeminarValueObjectFactory JBuilder SeminarValueObject Serializable Interface
Constructor public SeminarValueObject(long Id, String name, Date starttime, Date finishtime, Collection attendeeids, int level, int category, String roomname, long instructorid) { setid(id); setname(name); setstartdate(starttime); setfinishdate(finishtime); setattendee(attendeeids); setlevel(level); setcategory(category); setroomname(roomname); setinstructorid(instructorid); SeminarValueObject.java tostring() equals() method Serializable Java Object method Value Object Wizard Opentool equals() method primitive type Java Seminar Value Object Factory Seminar Value Object Seminar Value Object Factory SeminarValueObjectFactory (Instance) (Helper Class)EJBHomeFactory class Entity Bean Home Interface Reference private static SeminarValueObjectFactory instance = null; private EJBHomeFactory homefactory; Seminar Value Object Factory Constructor EJBHomeFactory JNDI
private SeminarValueObjectFactory() throws NamingException { homefactory = EJBHomeFactory.getInstance(); public Member Methods public static SeminarValueObjectFactory getinstance(){ public SeminarValueObject getseminar(long id) { public Collection getseminarofattendee(long id) { public Collection getallseminar(){ Helper Methods factory manager class Factory class createvalue() Value Object // Helper methods used by the factory or a manager public Seminar findseminar(long id) { public Collection findseminarofattendee(long id) { public Collection findallseminars() { // Helper methods used by the factory private SeminarValueObject createvalue(seminar seminar) { return new SeminarValueObject( seminar.getid(), seminar.getname(), seminar.getstartdate(), seminar.getfinishdate(), seminar.getlevel(), seminar.getcategory(), seminar.getroomname(), seminar.getinstructorid(), getattendeeids(seminar)); private Collection createvalues(collection seminars) { Collection SeminarValueObjects = new Vector(seminars.size()); Iterator iterator = seminars.iterator(); Seminar seminar = null; while(iterator.hasnext()) { seminar = (Seminar) iterator.next();
SeminarValueObjects.add(createValue(seminar)); return SeminarValueObjects; private Collection getattendeeids(seminar seminar) { SeminarValueObjectFactory Value Object Factory SeminarManager EJBHomeFactory SeminarManager EJBHomeFactory Value Object Value Object Factory Seminar Entity Bean Seminar Value Object Seminar Entity Bean SeminarManager SeminarManager private static SeminarManager instance = null; private SeminarValueObjectFactory seminarvalueobjectfactory; private RoomValueObjectFactory roomvalueobjectfactory; private AttendeeValueObjectFactory attendeevalueobjectfactory; private EJBHomeFactory homefactory; SeminarManager Constructor getinstance() method private SeminarManager() throws NamingException { homefactory = EJBHomeFactory.getInstance(); seminarvalueobjectfactory = attendeevalueobjectfactory = SeminarValueObjectFactory.getInstance(); AttendeeValueObjectFactory.getInstance(); roomvalueobjectfactory = RoomValueObjectFactory.getInstance(); public static SeminarManager getinstance() throws NamingException { Seminar Value Object Seminar Entity Bean
public long createseminar(seminarvalueobject seminarvalueobject) throws FinderException, NamingException { public void updateseminar(seminarvalueobject seminarvalueobject) throws FinderException, NamingException { public void removeseminar(long id) throws FinderException, NamingException { public void removeallseminars() throws FinderException, NamingException { -EJBHomeFactory class EJB Home Interface Reference EJB 2.x Local Interface Home Interface Reference Local Interface lookupbylocalejbreference() Remote Interface lookupbyremoteejbreference() Local Interface Java Type Casting Remote Interface javax.rmi.portableremoteobject.narrow() method ; EJBHomeFactory.java class EJBHomeFactory { private static EJBHomeFactory instance = null; private Context initialcontext; private Map ejbhomes; private EJBHomeFactory() throws NamingException { public static EJBHomeFactory getinstance() throws NamingException { public EJBLocalHome lookupbylocalejbreference(string ejbreferencecomponent) throws NamingException { java.lang.object home = ejbhomes.get(ejbreferencecomponent); if(home == null) { home = initialcontext.lookup("java:comp/env/ejb/" + ejbreferencecomponent); ejbhomes.put(ejbreferencecomponent, home);
return (EJBLocalHome) home; public EJBHome lookupbyremoteejbreference(string ejbreferencecomponent, Class homeclass) throws NamingException { java.lang.object home = ejbhomes.get(ejbreferencecomponent); if(home == null) { java.lang.object obj = initialcontext.lookup("java:comp/env/ejb/" + ejbreferencecomponent); home = javax.rmi.portableremoteobject.narrow(obj, homeclass); ejbhomes.put(ejbreferencecomponent, home); return (EJBHome) home; EAR Class Diagram 7 Class Diagram
PracticalEJBProgramming.EAR JBuilder PracticalEJBProgrammingModule JBuilder Properties Properties Content 8 JBuilder EJB Module Properties Add Classes SeminarManager.class SeminarValueObject.class SeminarValueObjectFactory.class JBuilder EJB Class Not Found Manager class Value Object Factory class Value Object class EJB Session Bean Scheduler Stateless Session Bean
Session Bean Manager class Value Object Factory class Value Object class EJB Session Bean Session Bean Entity Beans Beans Session Bean MVC Controller Session Bean Session Bean Session Scheduler Session Bean Value Object SchedulerTestClient EJB Scheduler Session Bean 9 EJB Scheduler Session Bean Scheduler Bean findroom() method RoomValueObject public RoomValueObject findroom(string name) { try { return roomvalueobjectfactory.getroom(name); catch(exception e) { throw new EJBException(e);
public Collection findallrooms() { try { return roomvalueobjectfactory.getallrooms(); catch(exception e) { throw new EJBException(e); Scheduler Session Bean PracticalEJBProgramming.EAR Borland Enterprise Server SchedulerTestClient.java JBuilder EJB Test Client SchedulerTestClient Value Object RoomValueObject SchedulerTestClient 9 SchedulerTestClient SchedulerTestClient Borland Enterprise Server JBuilder SchedulerTestClient
10 JBuilder SchedulerTestClient BES Console EJB Container Container Room Entity Bean 11 Borland Enterprise Server Console Room Entity Bean
J2EE Design Patterns Value Object Value Object Factory Design Patterns Session Bean Entity Bean J2EE J2EE EJB EJB Container Value Object Value Object Factory Design Patterns Session Bean EJB 1 Design Patterns Design Patterns: Elements of Reusable Object -Oriented Software by Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides Core J2EE Patterns: Best Practices and Design Strategies by John Crupi, Dan Malks, Deepak Alur EJB Design Patterns by Floyd Marinescu 2 CodeCentral http://codecentral.borland.com/codecentral/ccweb.ex e/home