Your SlideShare is downloading. ×
Java EE Programming [EJB 3.0 and JPA] Using  Eclipse and JBoss
Java EE Programming [EJB 3.0 and JPA] Using  Eclipse and JBoss
Java EE Programming [EJB 3.0 and JPA] Using  Eclipse and JBoss
Java EE Programming [EJB 3.0 and JPA] Using  Eclipse and JBoss
Java EE Programming [EJB 3.0 and JPA] Using  Eclipse and JBoss
Java EE Programming [EJB 3.0 and JPA] Using  Eclipse and JBoss
Java EE Programming [EJB 3.0 and JPA] Using  Eclipse and JBoss
Java EE Programming [EJB 3.0 and JPA] Using  Eclipse and JBoss
Java EE Programming [EJB 3.0 and JPA] Using  Eclipse and JBoss
Java EE Programming [EJB 3.0 and JPA] Using  Eclipse and JBoss
Java EE Programming [EJB 3.0 and JPA] Using  Eclipse and JBoss
Java EE Programming [EJB 3.0 and JPA] Using  Eclipse and JBoss
Java EE Programming [EJB 3.0 and JPA] Using  Eclipse and JBoss
Java EE Programming [EJB 3.0 and JPA] Using  Eclipse and JBoss
Java EE Programming [EJB 3.0 and JPA] Using  Eclipse and JBoss
Java EE Programming [EJB 3.0 and JPA] Using  Eclipse and JBoss
Java EE Programming [EJB 3.0 and JPA] Using  Eclipse and JBoss
Java EE Programming [EJB 3.0 and JPA] Using  Eclipse and JBoss
Java EE Programming [EJB 3.0 and JPA] Using  Eclipse and JBoss
Java EE Programming [EJB 3.0 and JPA] Using  Eclipse and JBoss
Java EE Programming [EJB 3.0 and JPA] Using  Eclipse and JBoss
Java EE Programming [EJB 3.0 and JPA] Using  Eclipse and JBoss
Java EE Programming [EJB 3.0 and JPA] Using  Eclipse and JBoss
Java EE Programming [EJB 3.0 and JPA] Using  Eclipse and JBoss
Java EE Programming [EJB 3.0 and JPA] Using  Eclipse and JBoss
Java EE Programming [EJB 3.0 and JPA] Using  Eclipse and JBoss
Java EE Programming [EJB 3.0 and JPA] Using  Eclipse and JBoss
Java EE Programming [EJB 3.0 and JPA] Using  Eclipse and JBoss
Java EE Programming [EJB 3.0 and JPA] Using  Eclipse and JBoss
Java EE Programming [EJB 3.0 and JPA] Using  Eclipse and JBoss
Java EE Programming [EJB 3.0 and JPA] Using  Eclipse and JBoss
Java EE Programming [EJB 3.0 and JPA] Using  Eclipse and JBoss
Java EE Programming [EJB 3.0 and JPA] Using  Eclipse and JBoss
Java EE Programming [EJB 3.0 and JPA] Using  Eclipse and JBoss
Java EE Programming [EJB 3.0 and JPA] Using  Eclipse and JBoss
Java EE Programming [EJB 3.0 and JPA] Using  Eclipse and JBoss
Java EE Programming [EJB 3.0 and JPA] Using  Eclipse and JBoss
Java EE Programming [EJB 3.0 and JPA] Using  Eclipse and JBoss
Java EE Programming [EJB 3.0 and JPA] Using  Eclipse and JBoss
Java EE Programming [EJB 3.0 and JPA] Using  Eclipse and JBoss
Java EE Programming [EJB 3.0 and JPA] Using  Eclipse and JBoss
Java EE Programming [EJB 3.0 and JPA] Using  Eclipse and JBoss
Java EE Programming [EJB 3.0 and JPA] Using  Eclipse and JBoss
Java EE Programming [EJB 3.0 and JPA] Using  Eclipse and JBoss
Java EE Programming [EJB 3.0 and JPA] Using  Eclipse and JBoss
Java EE Programming [EJB 3.0 and JPA] Using  Eclipse and JBoss
Java EE Programming [EJB 3.0 and JPA] Using  Eclipse and JBoss
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Java EE Programming [EJB 3.0 and JPA] Using Eclipse and JBoss

2,174

Published on

EJB 3.0 and JPA Using Eclipse and JBoss WorkBook [in Thai]

EJB 3.0 and JPA Using Eclipse and JBoss WorkBook [in Thai]

Published in: Technology
1 Comment
3 Likes
Statistics
Notes
No Downloads
Views
Total Views
2,174
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
232
Comments
1
Likes
3
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. 1 Hand-on Exercises การพัฒนฒนาโปรแกรม EJB 3.0 and JPA โดยใช้੼ Eclipse และ JBoss Assoc.Prof.Dr.Thanachart Numnonda Software Park Thailand and Asst Prof.Thanisa Kruawaisayawan King Mongkuts Institute of Technology Ladkrabang June 2011การพัฒนฒนาโปรแกรมด้วย Enterprise วย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 2. 2 บทนำ เอกสารนใช้ในการประกอในการประกอบการสอนวช้ในการประกอา Java 301 : EJB 3.0 ของหลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศกสตร Mini Master of JavaTechnology คณะเทคโนโลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศยสารสนเทศ สถาบนพัฒนระจอมเกลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศาเจาคณทหารลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศาด้วย Enterprise กระบง โด้วย Enterprise ยมจด้วย Enterprise ประสงค(เพัฒน)*อให,เรยนได้วย Enterprise เขาใจถ.งการพัฒนฒนาโปรแกรม Java Enterprise Application ท*ใช้ในการประกอ Enterprise Java Bean 3.0 แลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศะJava Persistence API ทงนแบบ/.กหด้วย Enterprise นอางองกบเคร)*องม)อพัฒนฒนาโปรแกรมจาวา Eclipse แลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศะ โปรแกรมJBoss Application Server thananum@gmail.com twitter.com/thanachart www.facebook.com/thanachart www.thaijavadev.com มถนายน 2554การพัฒนฒนาโปรแกรมด้วย Enterprise วย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 3. 3สารบัญญExercise 1 Stateless Session Bean Using EJB 3.0................................................................................4Exercise 2 Stateful Session Bean Using EJB 3.0...............................................................................21Exercise 3 Entity Class (JPA).............................................................................................................26Exercise 4 การพัฒนาJSP เพื่อเฒนา JSP เพัฒนาJSP เพื่อเอเรยกใช้ EJB 3.0 36x1King EJB 3.0.....................................................................................36Exercise 5 JPA : Entity Relationships................................................................................................41Exercise 6 JPA: Inheritance................................................................................................................60Exercise 7 Message Driven Bean.......................................................................................................70Exercise 8 EJB Security.....................................................................................................................75Exercise 9 Using Java Persistence API in Visual Web JSF applications...........................................83การพัฒนฒนาโปรแกรมด้วย Enterprise วย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 4. 4 Exercise 1 Stateless Session Bean Using EJB 3.0 แบบ/.กหด้วย Enterprise นเป0นการพัฒนฒนาโปรแกรม Enterprise Java Bean (EJB) โด้วย Enterprise ยใช้ในการประกอ EJB 3.0 สราง SessionBean แลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศะแสด้วย Enterprise งตวอย1างการเรยกใช้ในการประกอ Session Bean จาก Web Application โด้วย Enterprise ยใช้ในการประกอ Java Servlet แลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศะจากDesktop Application โด้วย Enterprise ยใช้ในการประกอ Java SEขนตอนในการพัฒนาโปรแกรมฒนาโปรแกรม 1. สราง Enterprise Application Project 2. พัฒนฒนา Session Bean 3. พัฒนฒนา Web Application 4. พัฒนฒนา Desktop Application1.1 ก รสร ง Enterprise Application Project สราง Project แบบ Enterprise Application ซึ่งมี EJB Module และ Web Module ภายในตัว P.*งม EJB Module แลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศะ Web Module ภายในตว Project 1. สราง Project โด้วย Enterprise ยเลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ)อกเมน File → New → Enterprise Application Project ก4าหนด้วย Enterprise Project Name เป0น SessionBeanDemo 2. สราง Server ท*จะรน Click ท*ป1ม New Runtime... ก4าหนด้วย Enterprise Directory ท*ม JBoss Application Server อย1 3. กด้วย Enterprise Next กด้วย Enterprise ป1ม New Module... เลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ)อก EJB Module แลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศะ Web Module กด้วย Enterprise Finish จนจบ Wizardการพัฒนฒนาโปรแกรมด้วย Enterprise วย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 5. 5 รปที่ 1.1 การสราง Enterprise Application Projectการพัฒนฒนาโปรแกรมด้วย Enterprise วย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 6. 61.2 ก รพัฒนฒนำ โปรแกรม Session Bean โปรแกรม EJB จะใช้ในการประกอ Session Bean ในการตด้วย Enterprise ต1อกบโปรแกรมอ)*นๆ ภายนอก EJB Containerโด้วย Enterprise ย Session Bean จะประกอบด้วย Enterprise วย Business Method ต1างๆ ในแบบ/.กหด้วย Enterprise จะสราง Session Bean ท*ช้ในการประกอ)*อBLSession ท*ม Business method สองเมธอด้วย Enterprise ค)อ ● String sayHi(String name) ● double currencyConvert(String currency, double amt) โด้วย Enterprise ยเราสามารถท*จะพัฒนฒนาโปรแกรมนได้วย Enterprise ด้วย Enterprise งน 1. คลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ7กขวาท* SessionBeanDemoEJB → New → Session Bean(EJB 3.x) 2. ก4าหนด้วย Enterprise Java package = ejb Class Name = BLSession State Type = Stateless Create Business Interface เลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ)อกทง Remote แลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศะ Local ด้วย Enterprise งรปท* 1.2 รปที่ 1.2 ไดอะล็อกการสร้าง Sอกการสราง Session Beanการพัฒนฒนาโปรแกรมด้วย Enterprise วย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 7. 7 3. แลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศวกด้วย Enterprise Finish โปรแกรมจะสรางไฟลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ(ต1างๆ มาใหด้วย Enterprise งรป รปที่ 1.3 โครงสรางของไฟล็อกการสร้าง Sของ Session Bean 4. Declare Method Signature 2 methods ท* Interface BLSessionLocal , BLSessionRemote Method Name ช้ในการประกอ)*อ sayHi Return Type : String Input Parameter = name เป0น String Method Name ช้ในการประกอ)*อ currencyConvert Return Type : double Input Parameter 1 = currency เป0น String Input Parameter 2 = amt เป0น double ท4าไมตอก4าหนด้วย Enterprise Signature Method ใหกบ Interface? ม 2 กรณ ค)อ 1. ,เรยก EJB อย1บน Virtual Machine เด้วย Enterprise ยวกนกบ EJB ,เรยกจะใช้ในการประกองาน Method ท*ระบใน Interface BLSessionLocal 2. ,เรยกอย1คนลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศะ Virtual Machine หร)อคนลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศะเคร)อง * ,เรยกจะใช้ในการประกองาน Method ท*ระบใน Interface BLSessionRemoteการพัฒนฒนาโปรแกรมด้วย Enterprise วย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 8. 8Listing 1.1 ประกาศ Signature Method ท* Interface ทง Local แลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศะ Remote--- File Local--------------------------------------------------------------@Localpublic interface BLSessionLocal { public String sayHi(String name); public double currencyConvert(String currency,double amt);}--- File Remote-------------------------------------------------------------@Remotepublic interface BLSessionRemote { public String sayHi(String name); public double currencyConvert(String currency,double amt);} 5. จะเห0นว1าม Error เกด้วย Enterprise ขนท* BLSession.java (Concrete Class) ใหใช้ในการประกอ mouse วางท* Error . eclipse จะบอกว1าให implement method ท* interface บงคบไว กรณนกด้วย Enterprise เลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ)อกท* บรรทด้วย Enterprise แรก Add Unimplemented Methods ด้วย Enterprise งรป รปที่ 1.4 ที่ !าการ Implement source code ที่ concrete class : BLSession 6. ให Implement source code ส4าหรบ Business Method ทงสองด้วย Enterprise งน public String sayHi(String name) { return Hello + name; } public double currencyConvertor(String currency, double amt) { if (currency.equals(baht)) { return (amt / 35); } else if (currency.equals(euro)) { return (amt * 2); } else { return 0; } }การพัฒนฒนาโปรแกรมด้วย Enterprise วย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 9. 91.3 ก รพัฒนฒนำ โปรแกรม Web Application โปรแกรม EJB จะเป0นส1 วนของ Business Logic เท1านน การพัฒนฒนาส1 วนของ Presentation จะตองใช้ในการประกอโปรแกรม Web Application หร)อ Java SE ในขนตอนนจะพัฒนฒนาโปรแกรม Web Application เพัฒน)*อเรยกใช้ในการประกอ Business Method ของ BLSessionท*ช้ในการประกอ)*อ sayHi โด้วย Enterprise ยก4าหนด้วย Enterprise ให,ใช้ในการประกอส1 งพัฒนารามเตอร( String myName ไป Servlet ท*ช้ในการประกอ)*อ SayHiServlet 1. คลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ7กขวาท* SessionBeanDemoWeb เลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ)อก New → Servlet 2. ก4าหนด้วย Enterprise Package = controller Class Name = SayHiServlet รปที่ 1.5 สราง Servlet เพัฒนาโปรแกรม#อต$ดต%อกบ EJB3การพัฒนฒนาโปรแกรมด้วย Enterprise วย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 10. 10 3. Set ให Web Project รจก EJB Project โด้วย Enterprise ยคลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศกขวาท* SessionBeanDemoWeb เลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ)อก Build Path → Configure Build Path รปที่ 1.6 ที่ !าให้ Web Projec Web Project มองเห้ Web Projecน EJB Project 4. เพัฒนม Source code ในการเรยก EJB ท* Servlet โด้วย Enterprise ย Declare เป0น Instant Variable * public class SayHiServlet extends HttpServlet { @EJB private BLSessionLocal blSession; .......... .......... .......... 5. ใหปรบปรง Source code ในเมธอด้วย Enterprise processRequest ด้วย Enterprise งน protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding(TIS-620); response.setContentType(TIS-620); PrintWriter out = response.getWriter(); out.println(htmlbody); out.println(blSession.sayHi(request.getParameter(myName))); out.println(/body/html); out.close(); }การพัฒนฒนาโปรแกรมด้วย Enterprise วย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 11. 111.4 ก รทดสอบโปรแกรม 1. ท4าการ Add โปรแกรม SessionBeanDemo เขาส1 JBoss Application Server 2. ใส1 URL ของ Web Browser เป0น http://localhost:8080/SessionBeanDemoWeb/SayHiServlet?myName=Thana 3. โปรแกรม Web Browser จะแสด้วย Enterprise งขอความ Hello Thana ออกมาการพัฒนฒนาโปรแกรมด้วย Enterprise วย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 12. 121.5 ก รพัฒนฒนำ โปรแกรม Desktop Application ติดต่อกับ EJB 3.0姍x愭楬2โปรแกรม Wดติดต่อกับ EJB 3.0姍x愭楬2โปรแกรม Wอกบ EJB 3.0 เราสามารถท*จะเขยนโปรแกรม Desktop Application เพัฒน)*อท*จะเรยกใช้ในการประกอ EJB ในขนตอนนจะเป0นการพัฒนฒนาโปรแกรม Java SE เพัฒน)*อเรยกใช้ในการประกอ Business Method ของ BLSession โด้วย Enterprise ยจะท4าการพัฒนฒนาโปรแกรมสองโปรแกรม โปรแกรมแรกค)อโปรแกรม Main.java จะเรยกเมธอด้วย Enterprise ท*ช้ในการประกอ)*อ sayHi จาก command prompt ส1 วนโปรแกรมท*สองค)อโปรแกรม CurrencyConvertor.java จะเรยกเมธอด้วย Enterprise ท*ช้ในการประกอ)*อ currencyConvert โด้วย Enterprise ยก4าหนด้วย Enterprise ใหโปรแกรมนม GUI เพัฒน)*อให,ใช้ในการประกอปอนขอมลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศเพัฒน)*อก4าหนด้วย Enterprise สกลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศเงนแลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศะจ4านวนเงน แลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศะมขนตอนการพัฒนฒนาด้วย Enterprise งน 1. คลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศกขวาท* SessionBeanDemo เลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ)อก New → Application Client Module ก4าหนด้วย Enterprise Project Name = SessionBeanDemoClient 2. คลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศกเลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ)อก check box เป0น Add project to an EAR เลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ)อก dropdown ช้ในการประกอ)*อ SessionBeanDemo รปที่ 1.7 การเพัฒนาโปรแกรม$ม Enterprise Application Client เขาส% Enterprise Application Projectการพัฒนฒนาโปรแกรมด้วย Enterprise วย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 13. 131.5.1 แกไข EJB Project (เพัฒน*ม Mapping Name) เพัฒน)*อให Application Client เรยกใช้ในการประกอ SessionBean ของ EJB ได้วย Enterprise จะตอง Register ช้ในการประกอ)*อของ SessionBean เขาส1 Context หร)อเรยกว1าการ Mapping ไปท* SessionBeanDemoEJB ท* @Stateless ใหเพัฒนม วงเลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ0บ แลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศวกด้วย Enterprise Ctrl+Space จะม hint มาให * เลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ)อก mappedName แลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศวใส1 ช้ในการประกอ)*อท*ตองการ รปที่ 1.8 การเพัฒนาโปรแกรม$มชื่อของ Session Bea#อของ Session Bean เขาส% Context ของ JBoss Application Server1.5.2 การพัฒนฒนาโปรแกรม Main.java Implement Source code ของ Main.java ด้วย Enterprise งนimport java.util.Hashtable;import javax.naming.Context;import javax.naming.InitialContext;import javax.naming.NamingException;import ejb.BLSessionRemote;public class Main { public static void main(String[] args) throws NamingException { Context ctx = getJBossNamingContext(); BLSessionRemote sb = (BLSessionRemote)ctx.lookup(SessionBeanForClient); String result = sb.sayHi(Thana); System.out.println(result); } public static Context getJBossNamingContext() throws NamingException{ HashtableString, String env = new HashtableString, String(); env.put(java.naming.factory.initial,org.jboss.naming.NamingContextFactory); env.put(java.naming.provider.url, localhost:1099); return new InitialContext(env); }} ท* Method getJBossNamingContext() พัฒนบว1ามการ Config ถ.ง host:port ของ Naming Service(เป0นท*ๆเราจะเขาไปถามหา Session Bean ช้ในการประกอ)*อ “SessionBeanForClient”) เราจะตองหา port ของ Server ท*มEJB อย1 ซึ่งมี EJB Module และ Web Module ภายในตัว P.*งท4าได้วย Enterprise โด้วย Enterprise ย double click ท* Server JBoss ด้วย Enterprise งรปการพัฒนฒนาโปรแกรมด้วย Enterprise วย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 14. 14 รปที่ 1.9 การห้ Web Projecา JNDI port ของ Server ที่ EJB Project Deploy อยู่t ˜A HashtableString, String env = new Hashta% จากนนท4าการรน Application จะได้วย Enterprise ,ลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศพัฒนธ(ค)อ Hello Thana print ออกมาท* Consoleการพัฒนฒนาโปรแกรมด้วย Enterprise วย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 15. 151.5.3 การพัฒนฒนาโปรแกรม CurrencyConvertor.java โปรแกรม Desktop Application จะมลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศกษณะด้วย Enterprise งรป โด้วย Enterprise ยจะใช้ในการประกอ GUI Designer (Jigloo) ในการพัฒนฒนา รปที่ 1.10 GUI ของโปรแกรม CurrencyConvertor 1. คลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศกขวาท*โหนด้วย Enterprise SessionBeanDemoClient เลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ)อก appClientModule → New → Other... → GUI Forms → Swing → Jframe จะมได้วย Enterprise อะลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ0อกข.นมา ก4าหนด้วย Enterprise Package = swing แลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศะ Class Name = CurrencyConvertor รปที่ 1.11 สราง Swing GUIการพัฒนฒนาโปรแกรมด้วย Enterprise วย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 16. 16 2. คลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ7กท* JFrame แลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศวเปลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ*ยน property ท*ช้ในการประกอ)*อ title เป0น Currency Convertor รปที่ 1.12 สราง Swing GUI 3. เพัฒนม JPanel แบบ Form * รปที่ 1.13 สราง Swing GUI 4.การพัฒนฒนาโปรแกรมด้วย Enterprise วย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 17. 17 5. ลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศากไอคอน Label ใน Swing Controls จาก Table Compoments Drag Drop ไปท*หนาต1าง ด้วย Enterprise งรป แลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศวก4าหนด้วย Enterprise ค1า รปที่ 1.14 การวาง Label ใน Components Windows 6. คลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ7กเลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ)อก jLabel แต1ลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศะตว แลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศะเปลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ*ยน property ท*ช้ในการประกอ)*อ text เป0น currency, amount แลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศะ value 7. ลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศากไอคอน Combo Box มาในต4าแหน1งทางขวาม)อของ currency จากนนใน property ใหเลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ)อก model โด้วย Enterprise ยก4าหนด้วย Enterprise Item สองรายการใหเป0น baht แลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศะ euro ด้วย Enterprise งรป รปที่ 1.15 การก!าห้ Web Projecนดค%า item ของ ComboBoxการพัฒนฒนาโปรแกรมด้วย Enterprise วย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 18. 18 8. ท4าการ implement sourcecode ด้วย Enterprise งรป 9. Implement source code กรณท*มการกด้วย Enterprise ป1ม Calculate โด้วย Enterprise ยแกไข source code ด้วย Enterprise งน private void jButton1ActionPerformed(ActionEvent evt) { System.out.println(jButton1.actionPerformed, event=+evt); try { Context ctx = getJBossNamingContext(); BLSessionRemote obj = (BLSessionRemote) ctx.lookup(SessionBeanForClient); int index = jComboBox1.getSelectedIndex(); String currency = (String) jComboBox1.getItemAt(index); String amtStr = jTextField1.getText(); double amt = Double.parseDouble(amtStr); double usDollar = obj.currencyConvertor(currency, amt); jTextField2.setText(usDollar + ); } catch (Exception ex) { ex.printStackTrace(); } } public Context getJBossNamingContext() throws NamingException{ HashtableString, String env = new HashtableString, String(); env.put(java.naming.factory.initial,org.jboss.naming.NamingContextFactory); env.put(java.naming.provider.url, localhost:1099); return new InitialContext(env); } 10. ป1ม Exit ท4าเช้ในการประกอ1นเด้วย Enterprise ยวกบป1ม Calculate private void jButton2ActionPerformed(ActionEvent evt) { System.out.println(jButton2.actionPerformed, event= + evt); System.exit(0); } 11. ทด้วย Enterprise สอบโปรแกรมโด้วย Enterprise ยการเลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ)อกสกลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศเงน แลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศะปอนจ4านวนเงน แลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศวกด้วย Enterprise ป1ม Calculateการพัฒนฒนาโปรแกรมด้วย Enterprise วย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 19. 19Source Code ท* Jigloo สรางข.นมา แลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศะท*เราปรบปรงทงหมด้วย Enterprise package swing;import com.jgoodies.forms.layout.CellConstraints;import com.jgoodies.forms.layout.FormLayout;import ejb.BLSessionRemote;import java.awt.BorderLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.Hashtable;import javax.naming.*;import javax.swing.ComboBoxModel;import javax.swing.DefaultComboBoxModel;import javax.swing.JButton;import javax.swing.JComboBox;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextField;import javax.swing.WindowConstants;import javax.swing.SwingUtilities;import org.apache.bsf.Main;/** * This code was edited or generated using CloudGardens Jigloo SWT/Swing GUI * Builder, which is free for non-commercial use. If Jigloo is being used * commercially (ie, by a corporation, company or business for any purpose * whatever) then you should purchase a license for each developer using Jigloo. * Please visit www.cloudgarden.com for details. Use of Jigloo implies * acceptance of these licensing terms. A COMMERCIAL LICENSE HAS NOT BEEN * PURCHASED FOR THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED LEGALLY FOR * ANY CORPORATE OR COMMERCIAL PURPOSE. */public class CurrencyConverter extends javax.swing.JFrame { private JPanel jPanel1; private JLabel jLabel3; private JButton jButton1; private JComboBox jComboBox1; private JButton jButton2; private JTextField jTextField2; private JTextField jTextField1; private JLabel jLabel2; private JLabel jLabel1; /** * Auto-generated main method to display this JFrame */ public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { CurrencyConverter inst = new CurrencyConverter(); inst.setLocationRelativeTo(null); inst.setVisible(true); } }); } public CurrencyConverter() { super(); initGUI(); } private void initGUI() { try { setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); { jPanel1 = new JPanel(); FormLayout jPanel1Layout = new FormLayout( 53dlu, 42dlu, 41dlu, 44dlu, max(p;5dlu), max(p;5dlu), max(p;5dlu), max(p;5dlu)); getContentPane().add(jPanel1, BorderLayout.CENTER); jPanel1.setLayout(jPanel1Layout); jPanel1.setPreferredSize(new java.awt.Dimension(182, 104)); { jLabel1 = new JLabel(); jPanel1.add(jLabel1, new CellConstraints( 1, 1, 1, 1, default, default)); jLabel1.setText(Currency); } { jLabel2 = new JLabel(); jPanel1.add(jLabel2, new CellConstraints( 1, 2, 1, 1, default, default)); jLabel2.setText(Amount); } { jLabel3 = new JLabel(); jPanel1.add(jLabel3, new CellConstraints( 1, 3, 1, 1, default, default)); jLabel3.setText(Value [Dollars] ); } { jTextField1 = new JTextField(); jPanel1.add(jTextField1, new CellConstraints( 2, 2, 1, 1, default, default)); } { jTextField2 = new JTextField();การพัฒนฒนาโปรแกรมด้วย Enterprise วย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 20. 20 jPanel1.add(jTextField2, new CellConstraints( 2, 3, 1, 1, default, default)); } { jButton1 = new JButton(); jPanel1.add(jButton1, new CellConstraints( 1, 4, 1, 1, default, default)); jButton1.setText(Calculate); jButton1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { jButton1ActionPerformed(evt); } }); } { jButton2 = new JButton(); jPanel1.add(jButton2, new CellConstraints( 2, 4, 1, 1, default, default)); jButton2.setText(Exit); jButton2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { jButton2ActionPerformed(evt); } }); } { ComboBoxModel jComboBox1Model = new DefaultComboBoxModel( new String[] { baht, euro }); jComboBox1 = new JComboBox(); jPanel1.add(getJComboBox1(), new CellConstraints(2, 1, 1, 1, default, default)); jComboBox1.setModel(jComboBox1Model); } } pack(); } catch (Exception e) { e.printStackTrace(); } } private void jButton2ActionPerformed(ActionEvent evt) { System.out.println(jButton2.actionPerformed, event= + evt); System.exit(0); } public JComboBox getJComboBox1() { return jComboBox1; } private void jButton1ActionPerformed(ActionEvent evt) { System.out.println(jButton1.actionPerformed, event=+evt); try { Context ctx = getJBossNamingContext(); BLSessionRemote obj = (BLSessionRemote) ctx.lookup(SessionBeanForClient); int index = jComboBox1.getSelectedIndex(); String currency = (String) jComboBox1.getItemAt(index); String amtStr = jTextField1.getText(); double amt = Double.parseDouble(amtStr); double usDollar = obj.currencyConvertor(currency, amt); jTextField2.setText(usDollar + ); } catch (Exception ex) { ex.printStackTrace(); } } public Context getJBossNamingContext() throws NamingException{ HashtableString, String env = new HashtableString, String(); env.put(java.naming.factory.initial,org.jboss.naming.NamingContextFactory); env.put(java.naming.provider.url, localhost:1099); return new InitialContext(env); }}การพัฒนฒนาโปรแกรมด้วย Enterprise วย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 21. 21 Exercise 2 Stateful Session Bean Using EJB 3.0เน#อห้ Web Projecาที่ ตองศึกษาก่อน Ses-กษาก%อน Session Bean Using EJB 3.0 แบบ/.กหด้วย Enterprise ในบทนเป0นการพัฒนฒนา Stateful Session Bean ส4าหรบ Shopping Cart โด้วย Enterprise ยใช้ในการประกอ EJB 3.0โด้วย Enterprise ยก4าหนด้วย Enterprise ให Session Bean มช้ในการประกอ)*อเป0น Cart แลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศะม Business Methods สามเมธอด้วย Enterprise ค)อ ● void putItem(String itemId, int quantity) ● void removeItem(String itemId) ● Hashtable getItems() นอกจากนจะม เมธอด้วย Enterprise เท*ถกเรยกจาก @PostConstruct ค)อ ● void initialize() แลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศะ Bean Class จะมตวแปรของออปเจ0ค (instance variable) สองตวค)อ ● String customerId ● Hashtable cart ในแบบ/.กหด้วย Enterprise นเราจะเขยน Java Servlet ข.นมาเพัฒน)*อเรยกใช้ในการประกอ Cart Session Bean ท*ช้ในการประกอ)*อCartManager.java เพัฒน)*อใช้ในการประกอในการเพัฒน*ม/ลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศบรายการออกจาก Cart แลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศะ เพัฒน)*อแสด้วย Enterprise งรายการท*อย1ใน Cart โด้วย Enterprise ย,ท*เรยก 1ใช้ในการประกอ CartManager จะตองส1 งพัฒนารามเตอร(ท*ช้ในการประกอ)*อ action มาเพัฒน)อระบวาตองการท4าอะไรกบ Cart โด้วย Enterprise ยม action ด้วย Enterprise งน ● add เพัฒน)*อเพัฒน*มรายการลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศงใน Cart ● remove เพัฒน)*อลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศบรายการออกจาก Cart ● list เพัฒน)*อแสด้วย Enterprise งรายการใน Cart [หมายเหต ถาเราสราง Servlet หลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศายๆไฟลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ(เพัฒน)*อท4าหนาท*ต1างกน เช้ในการประกอ1น AddCartServlet,RemoveCartServlet แลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศะ ListCartServlet โปรแกรม Stateful Session Bean จะสราง bean instanceส4าหรบ Servlet แต1ลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศะตวท4าใหใช้ในการประกอ Session ท*ต1างกน]ขนตอนในการพัฒนฒนาโปรแกรม 1. พัฒนฒนา Stateful Session Bean 2. พัฒนฒนาโปรแกรม CartManager.java 3. พัฒนฒนาโปรแกรม CartList.java2.1 ก รพัฒนฒนำ โปรแกรม Stateful Session Bean แบบ/.กหด้วย Enterprise นจะใช้ในการประกอโปรเจ0คเด้วย Enterprise ม (SessionBeanDemo) ท*สรางในแบบ/.กโปรแกรม Session Bean UsingEJB 3.0 ในการสราง Stateful Session Bean โด้วย Enterprise ยมขนตอนในการพัฒนฒนาโปรแกรมนได้วย Enterprise ด้วย Enterprise งนการพัฒนฒนาโปรแกรมด้วย Enterprise วย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 22. 22 1. คลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ7กขวาท* SessionBeanDemoEJB → New → Session Bean(EJB 3.x) 2. ก4าหนด้วย Enterprise Java package = ejb , Class Name = Cart แลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศะ State Type = Stateful รปที่ 2.1 การก!าห้ Web Projecนดค%าของ Cart Stateful Session Bean 3. ท4าการ Add Business Method โด้วย Enterprise ยเร*มจากสราง Signature Method ใน Interface CartLocal แลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศะ CartRemote ด้วย Enterprise งน Declare Method Signature 3 methods ท* Interface CartLocal , CartRemote Method Name ช้ในการประกอ)*อ putItem Input Parameter 1 = itemId เป0น String Input Parameter 2 = quantity เป0น int Method Name ช้ในการประกอ)*อ removeItem Input Parameter = itemId เป0น String Method Name ช้ในการประกอ)*อ getItems Return Type : Hashtableการพัฒนฒนาโปรแกรมด้วย Enterprise วย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 23. 23 4. จะได้วย Enterprise Business Method อย1ใน Interface ทงสอง (local,remote) 3 Methods ค)อ void putItem(String itemId , int quantity); void removeItem(String itemId); Hashtable getItems(); Implement source code ตาม Listing 2.1 แลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศะ 2.2Listing 2.1 โปรแกรม CartLocal.java package ejb; import java.util.Hashtable; import javax.ejb.Local; @Local public interface CartLocal { void putItem(String itemId, int quantity); void removeItem(String itemId); Hashtable getItems(); }Listing 2.2 โปรแกรม CartRemote.java package ejb; import java.util.Hashtable; import javax.ejb.Remote; @Remote public interface CartRemote { void putItem(String itemId, int quantity); void removeItem(String itemId); Hashtable getItems(); }การพัฒนฒนาโปรแกรมด้วย Enterprise วย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 24. 24 จากนน Fix Error ของ Class Cart.java โด้วย Enterprise ย Implement source code ตาม Listing 2.3 ด้วย Enterprise งน 5.Listing 2.3 โปรแกรม Cart.java package ejb; import java.util.Hashtable; import javax.annotation.PostConstruct; import javax.ejb.Stateful; @Stateful public class Cart implements CartRemote, CartLocal { HashtableString, Integer cart; @PostConstruct public void initialize(){ cart = new HashtableString, Integer(); } @Override public void putItem(String itemId, int quantity) { cart.put(itemId, quantity); } @Override public void removeItem(String itemId) { cart.remove(itemId); } @Override public Hashtable getItems() { return cart; } }2.2 ก รพัฒนฒนำ โปรแกรม CartManager.java โปรแกรม CartManager.java เป0นโปรแกรม Java Servlet เพัฒน)*อเรยกใช้ในการประกอ Business Method ของ CartBean ในการเพัฒน*มรายการลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศงใน Cart โด้วย Enterprise ยก4าหนด้วย Enterprise ให,ใช้ในการประกอส1 งพัฒนารามเตอร(มายงโปรแกรมด้วย Enterprise งน ● itemId ค)อหมายเลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศขของรายการสนคา ● quantity ค)อจ4านวนของรายการสนคา ● method ถามค1าเป0น add ค)อเพัฒนมรายการ แลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศะถามค1าเป0น remove ค)อลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศบรายการ * ช้ในการประกอด้วย Enterprise ค4าสงต1างๆ ภายใน CartManager อธบายได้วย Enterprise ด้วย Enterprise งน * 1. ประกาศตวแปร cart เป0นช้ในการประกอนด้วย Enterprise CartLocal โด้วย Enterprise ยใช้ในการประกอ annotation ท*ช้ในการประกอ)*อ @EJB ด้วย Enterprise งน @EJB private CartLocal cart;การพัฒนฒนาโปรแกรมด้วย Enterprise วย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 25. 25 2. ค4าสงอ1านค1าพัฒนารามเตอร(ต1างๆ * โด้วย Enterprise ยก4าหนด้วย Enterprise ใหมพัฒนารามเตอร(ส1ง,1านมาจาก request ค)อ action, item แลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศะ quantity โด้วย Enterprise ยมค4าสงด้วย Enterprise งน * String action = request.getParameter(action); String item = request.getParameter(item); String quantity = request.getParameter(quantity); cart.putItem(item, Integer.parseInt(quantity)); 3. ค4าสงการเรยก Enterprise Bean ตาม action ท*ต1างกนด้วย Enterprise งน * if (action.equals(add)) { cart.putItem(item, Integer.parseInt(quantity)); } else if (action.equals(remove)) { cart.removeItem(item); } else if (action.equals(list)) { Hashtable items = cart.getItems(); ……… } ขนตอนการพัฒนฒนา Class CartManager 1. เลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ)อกหนาต1าง Projects แลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศวคลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ7กขวาท*โหนด้วย Enterprise SessionBeanDemoWeb จากนนเลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ)อกค4าสง New → Servlet * ก4าหนด้วย Enterprise Package = controller , Class Name = CartManager 2. ในหนาต1าง Editor ใหเพัฒน*ม Source code ในการเรยก EJB ด้วย Enterprise งน ประกาศ instant variable เป0นช้ในการประกอนด้วย Enterprise CartLocal เพัฒนราะเราจะส)*อสารกบ EJB ,1าน Interface CartLocal @EJB private CartLocal cart; 3. Implement source code ของ Method processRequest( ) ด้วย Enterprise งนListing 2.4 โปรแกรม CartManager.javapackage controller;import java.io.IOException;import java.io.PrintWriter;import java.util.Enumeration;import java.util.Hashtable;import javax.ejb.EJB;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import ejb.CartLocal;public class CartManager extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); }การพัฒนฒนาโปรแกรมด้วย Enterprise วย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 26. 26 @EJB privateCartLocal cart; protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding(TIS-620); response.setContentType(TIS-620); PrintWriter out = response.getWriter(); String action = request.getParameter(action); String item = request.getParameter(item); String quantity = request.getParameter(quantity); out.println(htmlbodyh1Cart Manager/h1); if (action.equals(add)) { cart.putItem(item, Integer.parseInt(quantity)); } else if (action.equals(remove)) { cart.removeItem(item); } else if (action.equals(list)) { Hashtable items = cart.getItems(); Enumeration itemNames = items.keys(); while (itemNames.hasMoreElements()) { String itemId = (String) itemNames.nextElement(); out.println(Item id: + itemId + Quantity : + items.get(itemId)); out.println(BR); } } out.println(/body/html); }}2.3 ก รทดสอบโปรแกรม 1. ท4าการ Publish เพัฒน)*อใหทก Project ท4าการ Synchronized กน รปที่ 2.2 การ Publish เพัฒนาโปรแกรม#อ Synchronized Project ใน Enterprise Application 2. ท4าการใส1 รายการโด้วย Enterprise ยเลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ)อก URL ของ Web Browser เป0น http://localhost:8080/SessionBeanDemoWeb/CartManager?action=additem=125quantity=3 ท4าการใส1 รายการเพัฒน*มเตมโด้วย Enterprise ยเลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ)อก URL ของ Web Browser เป0น http://localhost:8080/SessionBeanDemoWeb/CartManager?action=additem=123quantity=2 3. แสด้วย Enterprise งรายการใน Cart โด้วย Enterprise ยเลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ)อก URL เป0น http://localhost:8080/SessionBeanDemoWeb/CartManager?action=list 4. ทด้วย Enterprise ลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศองลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศบรายการโด้วย Enterprise ยเลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ)อก URL ของ Web Browser เป0น http://localhost:8080/SessionBeanDemoWeb/CartManager?action=removeitem=123 5. แสด้วย Enterprise งรายการใน Cart ใหม1โด้วย Enterprise ยเลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ)อก URL เป0น http://localhost:8080/SessionBeanDemoWeb/CartManager?action=listการพัฒนฒนาโปรแกรมด้วย Enterprise วย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 27. 27 Exercise 3 Entity Class (JPA) แบบ/.กหด้วย Enterprise ในบทนเป0นการพัฒนฒนาโปรแกรม Enterprise Java Bean (EJB) โด้วย Enterprise ยจะเป0นการพัฒนฒนาโปรแกรมตด้วย Enterprise ต1อกบฐานขอมลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ MySQL โด้วย Enterprise ยใช้ในการประกอ EJB3.0 บน JBoss Application Server จะประกอบด้วย Enterprise วยEntity Class ท*เช้ในการประกอ)*อมโยงกบตารางท*ช้ในการประกอ)*อ books แลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศะ Session Bean เพัฒน)*อใช้ในการประกอในการจด้วย Enterprise การเพัฒน*ม แกไข แลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศะลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศบขอมลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศใน table books ได้วย Enterprise ขนตอนในการพัฒนาโปรแกรมฒนาโปรแกรม 1. สราง Enterprise Application Project 2. พัฒนฒนา Entity Class 3. พัฒนฒนา Session Bean 4. พัฒนฒนา Web Application3.1 ก รสร ง Enterprise Application Project สราง Enterprise Application Project โด้วย Enterprise ยม EJB Module แลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศะ Web Module อย1ภายใน Project 1. เลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ)อกเมน File → New → Enterprise Application Project ก4าหนด้วย Enterprise Project Name = BookApp 2. สราง Module ใหม1 รปที่ 3.1 สราง Module EJB แล็อกการสร้าง Sะ Web ใน Enterprise Applicationการพัฒนฒนาโปรแกรมด้วย Enterprise วย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 28. 283.2 ก ร Config ให้ Project ใช Project ใช้งาน JPA เพื่อเชื่อมต่อกง นำ JPA เพัฒนอเช้งาน JPA เพื่อเชื่อมต่อกอมติดต่อกับ EJB 3.0姍x愭楬2โปรแกรม Wอกบ Database ได Java EE 5 จะใช้ในการประกอคลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศาสประเภท Entity เพัฒน)*อเป0นออปเจ0คท*สอด้วย Enterprise คลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศองกบตารางในฐานขอมลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ ในท*นเราจะสราง Entity Class ท*ช้ในการประกอ)*อ Books.java จากตารางท*ช้ในการประกอ)*อ books ซึ่งมี EJB Module และ Web Module ภายในตัว P.*งมการสรางมาก1อนแลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศว โด้วย Enterprise ยมขนตอนการพัฒนฒนาโปรแกรมนมด้วย Enterprise งน 1. Copy EclipseLink , MySQLConnection (.jar file) ไปท* %JBOSS_HOMEcommonlib 2. คลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศกขวาท* BookAppEJB เลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ)อก Build path → Configure Build path... 3. เลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ)อก Project Facets → JPA ท4าการ Config ด้วย Enterprise งรปการพัฒนฒนาโปรแกรมด้วย Enterprise วย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 29. 29การพัฒนฒนาโปรแกรมด้วย Enterprise วย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 30. 30 รปที่ 3.2 Configuration ส%วนของ EclipseLink ใน EJB Project 4. สราง JNDI DataSource ให JBoss (คลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศายกบการเพัฒน*ม file context.xml ใน Tomcat6) เปด้วย Enterprise Folder $JBOSS_HOMEdocsexamplesjca แลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศว copy file mysql-ds.xml ไปท* $JBOSS_HOMEserverdefaultdeploy 5. ท4าการ config file mysql-ds.xml ด้วย Enterprise งรป รปที่ 3.3 Config JNDI Context ให้ Web Projec JBossการพัฒนฒนาโปรแกรมด้วย Enterprise วย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 31. 31 6. Config persistence.xml ใน BookAppEJB เพัฒน)*อให JPA ใช้ในการประกอ Database ท*ระบ รปที่ 3.4 Config persistence.xml 7. ท4าการเพัฒน*ม JVM Arguments -Djava.endorsed.dirs=$JBOSS_HOME/lib/endorsed รปที่ 3.5 Config persistence.xml 8. Add (Deploy) BookApp ลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศง JBoss แลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศะท4าการ Start JBoss Application Server Monitor ด้วย Enterprise log ท* Console ตองไม1พัฒนบ ERRORการพัฒนฒนาโปรแกรมด้วย Enterprise วย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 32. 323.3 ก รพัฒนฒนำ โปรแกรม Entity Class สราง Entity Classes โด้วย Enterprise ย คลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศกขวาท* BookAppEJB → New → Entities from Tables รปที่ 3.6 แสดงการสราง Entity Class จะได้วย Enterprise Entity Class ช้ในการประกอ)*อ Books.java ท*ม Getter/Setter ของทก Field ใน table books เพัฒน*มส1 วนของ statement การ Query ขอมลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศไปท*บรรทด้วย Enterprise ด้วย Enterprise านลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ1างของ @Table(name = books) ด้วย Enterprise งน @NamedQuery (name = Books.findByIsbn, query = SELECT b FROM Books b WHERE b.isbn = :isbn)การพัฒนฒนาโปรแกรมด้วย Enterprise วย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 33. 33Listing 3.1 โปรแกรม Books.javapackage entity;import java.io.Serializable;import javax.persistence.*;@Entity@Table(name=books)@NamedQuery (name = Books.findByIsbn, query = SELECT b FROM Books b WHERE b.isbn = :isbn)public class Books implements Serializable { private static final long serialVersionUID = 1L; @Id @Column(name=ISBN) private String isbn; @Column(name=AUTHOR) private String author; @Column(name=PRICE) private float price; @Column(name=TITLE) private String title; public String getIsbn() { return this.isbn; } public void setIsbn(String isbn) { this.isbn = isbn; } public String getAuthor() { return this.author; } public void setAuthor(String author) { this.author = author; } public float getPrice() { return this.price; } public void setPrice(float price) { this.price = price; } public String getTitle() { return this.title; } public void setTitle(String title) { this.title = title; }}การพัฒนฒนาโปรแกรมด้วย Enterprise วย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 34. 343.4 ก รพัฒนฒนำ โปรแกรม Session Bean โปรแกรม EJB จะใช้ในการประกอ Session Bean ในการตด้วย Enterprise ต1อกบโปรแกรมอ)*นๆ ภายนอก EJB Container โด้วย Enterprise ยโปรแกรมเหลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ1านนจะตด้วย Enterprise ต1อกบ Entity Class โด้วย Enterprise ย,1าน Session Bean แบบ/.กหด้วย Enterprise นจะสราง Session Bean ท*ช้ในการประกอ)*อBooksFacade.java ท*ม Business method ในการ เรยกด้วย Enterprise ขอมลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศของตารางท*ช้ในการประกอ)*อ books โด้วย Enterprise ยใช้ในการประกอ Entity Class ช้ในการประกอ)*อBooks.java แลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศะ EntityManager โด้วย Enterprise ยจะมขนตอนการพัฒนฒนาด้วย Enterprise งน 1. คลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศกขวาท*โหนด้วย Enterprise BookAppEJB เลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ)อก New → SessionBean (EJB 3.x) รปที่ 3.7 แสดงการสราง Session Bean 2. ก4าหนด้วย Enterprise Package = sb Class name = BookFacade eclipse จะสราง Interface BookFacadeLocal.java ให 3. เพัฒนม Signature method ท* interface ของการคนหาหนงส)อ แลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศะ รบช้ในการประกอ)*อ String isbn เพัฒน)*อไปประมวลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ,ลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ * Books find(String isbn);การพัฒนฒนาโปรแกรมด้วย Enterprise วย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 35. 35Listing 3.2 โปรแกรม BookLocal.javapackage sb;import javax.ejb.Local;import entity.Books;@Localpublic interface BookFacadeLocal { Books find(String isbn);} 4. Fix Error ท* class BookFacade.java implements concrete class โด้วย Enterprise ยระบช้ในการประกอ)*อ JPA ท*ใช้ในการประกอค)อ BookAppEJB แลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศวใช้ในการประกองานโด้วย Enterprise ยส1 ง Books.class (Books Entity Class) ไปให entity manager → em.find(Books.class, id);Listing 3.3 โปรแกรม BookFacade.javapackage sb;import javax.ejb.Stateless;import javax.persistence.EntityManager;import javax.persistence.PersistenceContext;import entity.Books;@Statelesspublic class BookFacade implements BookFacadeLocal { @PersistenceContext(unitName = BookAppEJB) private EntityManager em; @Override public Books find(String isbn) { return em.find(Books.class, isbn); }}3.5 ก รพัฒนฒนำ โปรแกรม Web Application โปรแกรม EJB จะเป0นส1 วนของ Business Logic เท1านน การพัฒนฒนาส1 วนของ Presentation จะตองใช้ในการประกอโปรแกรม Web Application (หร)อ Java SE) แบบ/.กหด้วย Enterprise นจะพัฒนฒนาโปรแกรม Web Application เพัฒน)*อให,ใช้ในการประกอปอน isbn ของหนงส)อในหนาเว0บ findBook.html แลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศวโปรแกรมจะเรยกโปรแกรม Servlet ท*ช้ในการประกอ)*อShowBook.java เพัฒน)*อแสด้วย Enterprise งรายลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศะเอยด้วย Enterprise ของหนงส)อด้วย Enterprise งกลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ1าวออกมา โด้วย Enterprise ยมขนตอนการพัฒนฒนาด้วย Enterprise งนการพัฒนฒนาโปรแกรมด้วย Enterprise วย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 36. 363.5.1 การพัฒนฒนาโปรแกรม findBook.html โปรแกรม findBook.html เป0นเว0บเพัฒนจท*ใช้ในการประกอแสด้วย Enterprise งฟอร(มส4าหรบให,ใช้ในการประกอปอน isbn ของหนงส)อโด้วย Enterprise ยมขนตอนการพัฒนฒนาด้วย Enterprise งน 1. คลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศกขวาท*โหนด้วย Enterprise BookAppWeb เลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ)อกค4าสง New → HTML * 2. ก4าหนด้วย Enterprise HTML File Name: เป0น findBook แลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศวกด้วย Enterprise Finish 3. เขยน source code ของไฟลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ( findBook.html ตาม Listing ท* 3.4Listing 3.4 โปรแกรม findBook.html!DOCTYPE html PUBLIC -//W3C//DTD HTML 4.01 Transitional//ENhttp://www.w3.org/TR/html4/loose.dtdhtmlheadmeta http-equiv=Content-Type content=text/html; charset=UTF-8titleInsert title here/title/headbody form action=ShowBook method=POST h2Search Book from ISBN/h2 Enter ISBN input type=text name=isbn / input type=submit value=Find / /form/body/html3.5.2 การพัฒนฒนาโปรแกรม ShowBook.java โปรแกรม ShowBook.java เป0นโปรแกรม Java Servlet ท*จะอ1านหมายเลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศข ISBN ท*,ใช้ในการประกอปอนมาจากหนา findBook.html แลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศะจะเรยกเมธอด้วย Enterprise find() ของ session bean ท*ช้ในการประกอ)*อ BooksFacade เพัฒน)*อแสด้วย Enterprise งรายลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศะเอยด้วย Enterprise ของหนงส)อ โด้วย Enterprise ยมขนตอนการพัฒนฒนาโปรแกรมด้วย Enterprise งน 1. คลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศกขวาท*โหนด้วย Enterprise BookAppWeb เลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ)อก New → Servlet Package = servlets File Name = ShowBook 2. เพัฒนม source code ในการเรยก EJB (ประกาศเป0น Instance Varible) * @EJB private BooksFacadeLocal booksFacade; Eclipse จะแจง Error เพัฒนราะ Web ไม1เห0น EJB Projectการพัฒนฒนาโปรแกรมด้วย Enterprise วย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 37. 37 ใหท4าการเพัฒนม Build path ใหม Library ของ EJB Project โด้วย Enterprise ยเลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ)อกท* Fix Project Setup * แลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศะ set Build path ใหด้วย Enterprise งรป รปที่ 3.8 แสดงการ Fix Project Setupการพัฒนฒนาโปรแกรมด้วย Enterprise วย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 38. 38 ใหปรบปรง Source code ในเมธอด้วย Enterprise processRequest ด้วย Enterprise ง Listing ด้วย Enterprise านลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ1าง 3.Listing 3.5 โปรแกรม ShowBook.javapackage servlets;import java.io.IOException;import java.io.PrintWriter;import javax.ejb.EJB;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import sb.BookFacadeLocal;import entity.Books;public class ShowBook extends HttpServlet { private static final long serialVersionUID = 1L; @EJB private BookFacadeLocal bookFacade; public ShowBook() { super(); } protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } protected void processRequest(HttpServletRequest request,HttpServletResponseresponse) throws ServletException, IOException { request.setCharacterEncoding(TIS-620); response.setContentType(TIS-620); PrintWriter out = response.getWriter(); out.println(html); out.println(head); out.println(titleServlet ShowBook/title); out.println(/head); out.println(body); String isbn = request.getParameter(isbn); Books book = bookFacade.find(isbn); out.println(Title: + book.getTitle() + BR); out.println(Author: + book.getAuthor() + BR); out.println(Price: + book.getPrice() + BR); out.println(/body); out.println(/html); out.close(); }}การพัฒนฒนาโปรแกรมด้วย Enterprise วย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 39. 393.6 ก รทดสอบโปรแกรม 1. Re-Publish JBoss Server 2. เรยก http://localhost:8080/BookAppWeb/findBook.html 3. กรอก isbn ท*มใน table books แลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศวกด้วย Enterprise Find หนาจอก0จะแสด้วย Enterprise งรายลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศะเอยด้วย Enterprise ของหนงส)อออกมาการพัฒนฒนาโปรแกรมด้วย Enterprise วย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 40. 40 Exercise 4 ก รพัฒนฒนำ JSP เพัฒนอเรยกใช้งาน JPA เพื่อเชื่อมต่อก EJB 3.0เน#อห้ Web Projecาที่ ตองศึกษาก่อน Ses-กษาก%อน Entity Class แบบ/.กหด้วย Enterprise นเป0นการพัฒนฒนาโปรแกรม JSP เพัฒน)*อเรยกใช้ในการประกอ Entity Class ท*ช้ในการประกอ)*อ Books แลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศะ Session Bean ท*ช้ในการประกอ)*อ BooksFacade ซึ่งมี EJB Module และ Web Module ภายในตัว P.*งพัฒนฒนามาจากแบบ/.กหด้วย Enterprise เร)*อง Entity Class แลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศวจะเรยกใช้ในการประกอ Stateful Session Bean ท*ช้ในการประกอ)*อCart แลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศะโปรแกรม Servlet ท*ช้ในการประกอ)*อ CartManager.java ท*พัฒนฒนามาจากแบบ/.กหด้วย Enterprise เร)*อง Stateful Session Bean 1Using EJB 3.0 เพัฒน)*อใส1 รายช้ในการประกออหนงส)อลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศงใน Cart แลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศะเพัฒน)*อแสด้วย Enterprise งรายการท*อย1ใน Cart โด้วย Enterprise ยใช้ในการประกอ Project ท*,านมา )*ช้ในการประกอ)*อ SessionBeanDemoWeb โปรแกรม showBook.jsp เป0นโปรแกรม JSP ท*จะเรยกใช้ในการประกอ Custom Tag ท*ช้ในการประกอ)*อ EJBTags:GetBooksซึ่งมี EJB Module และ Web Module ภายในตัว P.*งจะเป0น Tag ท*เรยกใช้ในการประกอ เมธอด้วย Enterprise findAll() ของ BooksFacade Session Bean แลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศวเก0บ List ของหนงส)อทงหมด้วย Enterprise ไวใน session โปรแกรม showBook.jsp ก0จะแสด้วย Enterprise งรายช้ในการประกอ)*อหนงส)อทงหมด้วย Enterprise มาให,ใช้ในการประกอเลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ)อกลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศงใน Cart โปรแกรมนตองพัฒนฒนาไฟลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ(ต1างๆ ค)อ ● Tag Library Descriptor ● Tag Handler ● JSP File โด้วย Enterprise ยมขนตอนการพัฒนฒนาด้วย Enterprise งน4.1.1 สราง Tag Library Descriptor ไฟลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ(นจะใช้ในการประกอเก0บ รายช้ในการประกออ Tag ต1างๆท*มอย1เพัฒน)*อสามารถน4า tag ต1างๆ มาใช้ในการประกอในโปรแกรม JSP โด้วย Enterprise ยใช้ในการประกอค4าสง )* *%@taglib ...% การสราง Tag Library Descriptor จะมขนตอนด้วย Enterprise งน 1. คลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศกขวาท*โหนด้วย Enterprise BookAppWeb 2. สรางโฟลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศเด้วย Enterprise อร( Web PagesWEB-INFtlds 3. สรางไฟลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ(ท*ช้ในการประกอ)*อ EJBTags.tld แลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศะ implements ด้วย Enterprise งนการพัฒนฒนาโปรแกรมด้วย Enterprise วย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 41. 41Listing 4.1 โปรแกรม EJBTags.tld?xml version=1.0 encoding=UTF-8?taglib xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance xmlns=http://java.sun.com/xml/ns/javaee xmlns:web=http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd xsi:schemaLocation=http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd id=WebApp_IDversion=2.1 tlib-version1.2/tlib-version short-nameEJBTags/short-name uri/WEB-INF/tlds/EJBTags/uri tag nameGetBooks/name tag-classtags.GetBooks/tag-class body-contentscriptless/body-content /tag/taglib4.1.2 สรางไฟลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ( Tag Handler 1 ไฟลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ( Tag Handler จะเป0นโปรแกรมจาวาท*พัฒนฒนาข.นเพัฒน)*อระบวา เม)*อเรยกใช้ในการประกอ tag แลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศวจะตองท4าค4าสง *อย1างไร ในท*นจะก4าหนด้วย Enterprise ช้ในการประกอ)*อ Tag เป0น GetBook โด้วย Enterprise ยมขนตอนการพัฒนฒนาด้วย Enterprise งน 1. คลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ7กขวาท* Project BookAppWeb จากนนเลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ)อกค4าสง New → Class * ก4าหนด้วย Enterprise Package = tags , Class Name = GetBooks เลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ)อก SuperClass = SimpleTagSupport 2. ท4าการ Implement Method ช้ในการประกอ)*อ doTag( ) : Call Enterprise Bean โด้วย Enterprise ยใช้ในการประกอ annotation @EJB @EJB private BooksFacadeLocal booksFacade; ใหเพัฒนม Signature Method = ListBooks findAll(); ท* interface BookFacadeLocal 3. *Listing 4.2 โปรแกรม BooksFacadeLocal.java package sb; import java.util.List; import entity.Books; @Local public interface BookFacadeLocal { Books find(String isbn); ListBooks findAll(); } 4. Fix Error โด้วย Enterprise ยการ Implements BooksFacade.java ด้วย Enterprise งน public ListBooks findAll() { CriteriaQuery cq = em.getCriteriaBuilder().createQuery(); cq.select(cq.from(Books.class)); return em.createQuery(cq).getResultList(); }การพัฒนฒนาโปรแกรมด้วย Enterprise วย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 42. 42 5. แกไข Books.java โด้วย Enterprise ยลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศบของเด้วย Enterprise มออกแลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศวใส1 ช้ในการประกอด้วย Enterprise Query statement ลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศงไป@NamedQueries({@NamedQuery(name = Books.findAll, query = SELECT b FROM Books b),@NamedQuery(name = Books.findByIsbn, query = SELECT b FROM Books b WHEREb.isbn = :isbn)})Listing 4.3 โปรแกรม Books.javapackage entity;import java.io.Serializable;import javax.persistence.*;@Entity@Table(name = books)@NamedQueries({@NamedQuery(name =Books.findAll,query=SELECT b FROM Books b),@NamedQuery(name =Books.findByIsbn,query=SELECT b FROM Books b WHERE b.isbn = :isbn)})public class Books implements Serializable { private static final long serialVersionUID = 1L; @Id @Column(name = ISBN) private String isbn; @Column(name = AUTHOR) private String author; @Column(name = PRICE) private float price; @Column(name = TITLE) private String title; public String getIsbn() { return this.isbn; } public void setIsbn(String isbn) { this.isbn = isbn; } public String getAuthor() { return this.author; } public void setAuthor(String author) { this.author = author; } public float getPrice() { return this.price; } public void setPrice(float price) { this.price = price; } public String getTitle() { return this.title; } public void setTitle(String title) { this.title = title; }}การพัฒนฒนาโปรแกรมด้วย Enterprise วย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 43. 43 6. Implement source code ใน class GetBooks.java ท*เมธอด้วย Enterprise doTag() ด้วย Enterprise งน public void doTag() throws JspException { JspWriter out = getJspContext().getOut(); try{ JspFragment f = getJspBody(); if (f != null)f.invoke(out); ListBooks books = bookFacade.findAll(); getJspContext().setAttribute(books,books,PageContext.SESSION_SCOPE); } catch (IOException ex) { throw new JspException(ex.getMessage()); } }Listing 4.4 โปรแกรม GetBooks.javapackage tags;import java.io.IOException;import java.util.List;import javax.ejb.EJB;import javax.servlet.jsp.JspException;import javax.servlet.jsp.JspWriter;import javax.servlet.jsp.PageContext;import javax.servlet.jsp.tagext.JspFragment;import javax.servlet.jsp.tagext.SimpleTagSupport;import entity.Books;import sb.BookFacadeLocal;public class GetBooks extends SimpleTagSupport { @EJB private BookFacadeLocal bookFacade; @Override public void doTag() throws JspException { JspWriter out = getJspContext().getOut(); try { JspFragment f = getJspBody(); if (f != null)f.invoke(out); ListBooks books = bookFacade.findAll(); getJspContext().setAttribute(books, books,PageContext.SESSION_SCOPE); } catch (IOException ex) { throw new JspException(ex.getMessage()); } }}การพัฒนฒนาโปรแกรมด้วย Enterprise วย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 44. 444.1.3 เขยนโปรแกรม showBook.jsp 1. คลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศกขวาท* BookAppWeb จากนนเลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ)อกค4าสง New → JSP * ก4าหนด้วย Enterprise JSP File Name: เป0น showBook 2. ในหนาต1าง editor ใหแกไข source code ของไฟลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ( showBook.jsp ใหเป0นไปตาม Listing ท* 4.5 โปรแกรมนจะให,ลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศพัฒนธ(ด้วย Enterprise งตวอย1างในรปท* 4.1 รปที่ 4.1 ผล็อกการสร้าง Sล็อกการสร้าง Sพัฒนาโปรแกรมธ์โปรแกรม showBโปรแกรม showBook.jspการพัฒนฒนาโปรแกรมด้วย Enterprise วย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 45. 45Listing 4.5 โปรแกรม showBook.jsp%@page contentType=text/html%%@page pageEncoding=UTF-8%%@taglib uri=http://java.sun.com/jsp/jstl/core prefix=c%%@taglib uri=/WEB-INF/tlds/EJBTags prefix=EJB %htmlbody EJB:GetBooks/ h1Please Select Books/h1 form action=http://localhost:8080/SessionBeanDemoWeb/CartManager input type=HIDDEN name=action value=add / table border=1 thead tr th/th th Title /th th Author /th th Price /th th Quantity /th /tr /thead tbody c:forEach var=book items=${sessionScope.books} tr tdinput type=checkbox name=item value=${book.isbn} //td td${book.title}/tdtd${book.author}/td td${book.price}/td tdinput type=text name=${book.isbn} value=0 size=3 / /td /tr /c:forEach /tbody /table p input type=submit value=Add / /form /body/html4.2 ก รปรบปร งโปรแกรม CartManager.java โปรแกรม CartManager.java เด้วย Enterprise มจะก4าหนด้วย Enterprise ใหอ1านขอมลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศการใส1 รายการสนคาลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศง Cart ท*ลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศะรายการเพัฒน)*อใหโปรแกรมสามารถอ1านขอมลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศรายการสนคาท*จะเก0บอย1ในตวแปรอะเรย(ช้ในการประกอนด้วย Enterprise String ท*อาจมหลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศายรายการซึ่งมี EJB Module และ Web Module ภายในตัว P.*งถกเลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ)อกมาจาก checkbox ท*อย1ในหนา showBook.jsp ได้วย Enterprise โด้วย Enterprise ยใหแกไข source code ในไฟลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ(CartManager.java ส1 วน Business Logic ของการเพัฒน*มขอมลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ ด้วย Enterprise งน if (action.equals(add)) { cart.putItem(item, Integer.parseInt(quantity)); } เป0น if (action.equals(add)) { String[] items = request.getParameterValues(item); for (int i = 0; i items.length; i++) { String qty = request.getParameter(items[i]); cart.putItem(items[i], Integer.parseInt(qty)); } }การพัฒนฒนาโปรแกรมด้วย Enterprise วย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 46. 46Listing 4.6 โปรแกรม CartManager.javapackage controller;import java.io.IOException;import java.io.PrintWriter;import java.util.Enumeration;import java.util.Hashtable;import javax.ejb.EJB;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import ejb.CartLocal;public class CartManager extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } @EJB CartLocal cart; protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding(TIS-620); response.setContentType(TIS-620); String action = request.getParameter(action); String item = request.getParameter(item); String quantity = request.getParameter(quantity); PrintWriter out = response.getWriter(); out.println(htmlbodyh1Cart Manager/h1); if (action.equals(add)) { String[] items = request.getParameterValues(item); for (int i = 0; i items.length; i++) { String qty = request.getParameter(items[i]); cart.putItem(items[i], Integer.parseInt(qty)); } } else if (action.equals(remove)) { cart.removeItem(item); } else if (action.equals(list)) { Hashtable items = cart.getItems(); Enumeration itemNames = items.keys(); while (itemNames.hasMoreElements()) { String itemId = (String) itemNames.nextElement(); out.println(Item id: + itemId + Quantity : + items.get(itemId)); out.println(BR); } } out.println(/body/html); }}การพัฒนฒนาโปรแกรมด้วย Enterprise วย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 47. 474.3 ก รทดสอบโปรแกรม 1. ท4าการ Build แลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศะ Deploy โปรเจ0ค SessionBeanDemo แลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศะ BookApp 2. เปด้วย Enterprise URL http://localhost:8080/BookAppWeb/showBook.jsp ใหเราทด้วย Enterprise ลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศองเลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ)อกแลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศะใส1 ขอมลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ 3. เม)*อกด้วย Enterprise ป1ม Add โปรแกรมก0จะเก0บหนงส)อท*เลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ)อกลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศง Cart 4. แสด้วย Enterprise งรายการใน Cart โด้วย Enterprise ยเลักสูตร Mini Master of Java Technology คณะเทคโนโลยีสารสนเทศ)อก URL เป0น http://localhost:8080/SessionBeanDemoWeb/CartManager?action=listการพัฒนฒนาโปรแกรมด้วย Enterprise วย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan

×