Submit Search
Upload
EJB Programming Using Eclipse & JBoss
•
3 likes
•
2,275 views
Software Park Thailand
Follow
เอกสารการสอน Mini Master of Java Technology
Read less
Read more
Technology
Report
Share
Report
Share
1 of 47
Download now
Download to read offline
Recommended
Book area
Book area
พิชัย ตุ้งประโคน
การใช้โปรแกรม Sony vegas pro13
การใช้โปรแกรม Sony vegas pro13
พัน พัน
เอกสารประกอบการเรียน ภาษา HTML เบื้องต้น
เอกสารประกอบการเรียน ภาษา HTML เบื้องต้น
Kon Bannok
แบบเสนอโครงร่างโครงงานคอมพิวเตอร์
แบบเสนอโครงร่างโครงงานคอมพิวเตอร์
ปรียาพร ศิริวัฒน์
แผนการสอน ผลิตสื่อวีดีทัศน์ ม.6
แผนการสอน ผลิตสื่อวีดีทัศน์ ม.6
พงศธร ภักดี
โครงงานคอม
โครงงานคอม
Somsak Kaeosijan
รูปเล่มวิชาโครงงาน
รูปเล่มวิชาโครงงาน
AjBenny Pong
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์ (2)
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์ (2)
fulk123
Recommended
Book area
Book area
พิชัย ตุ้งประโคน
การใช้โปรแกรม Sony vegas pro13
การใช้โปรแกรม Sony vegas pro13
พัน พัน
เอกสารประกอบการเรียน ภาษา HTML เบื้องต้น
เอกสารประกอบการเรียน ภาษา HTML เบื้องต้น
Kon Bannok
แบบเสนอโครงร่างโครงงานคอมพิวเตอร์
แบบเสนอโครงร่างโครงงานคอมพิวเตอร์
ปรียาพร ศิริวัฒน์
แผนการสอน ผลิตสื่อวีดีทัศน์ ม.6
แผนการสอน ผลิตสื่อวีดีทัศน์ ม.6
พงศธร ภักดี
โครงงานคอม
โครงงานคอม
Somsak Kaeosijan
รูปเล่มวิชาโครงงาน
รูปเล่มวิชาโครงงาน
AjBenny Pong
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์ (2)
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์ (2)
fulk123
Java EE Programming [EJB 3.0 and JPA] Using Eclipse and JBoss
Java EE Programming [EJB 3.0 and JPA] Using Eclipse and JBoss
IMC Institute
Eclipse
Eclipse
gzxc
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Software Park Thailand
Hand on Exercises Java Web Services and SOA using GlassFish ESB and NetBeans
Hand on Exercises Java Web Services and SOA using GlassFish ESB and NetBeans
IMC Institute
ใบความรู้ที่ 3.2
ใบความรู้ที่ 3.2
ณัฐพล บัวพันธ์
webprogramming eclipse-jsp
webprogramming eclipse-jsp
Weerasak Sriwongyang
Java Web programming Using Eclipse
Java Web programming Using Eclipse
Software Park Thailand
Java Web Programming (JSP/Servlet) Using Eclipse and Tomcat
Java Web Programming (JSP/Servlet) Using Eclipse and Tomcat
IMC Institute
1236363
1236363
Naynoyjolii
Ch17
Ch17
burin rujjanapan
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์2
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์2
fulk123
โจทย์ปัญหา Pbl 3
โจทย์ปัญหา Pbl 3
siriyaporn20099
โจทย์ปัญหา Pbl 3
โจทย์ปัญหา Pbl 3
siriyaporn20099
โจทย์ปัญหา Pbl3
โจทย์ปัญหา Pbl3
siriyaporn20099
ประวัติความเป็นมาภาษาซี
ประวัติความเป็นมาภาษาซี
เทวัญ ภูพานทอง
Pbl 3
Pbl 3
nattapon Arsapanom
โจทย์ปัญหา PBL 3 เรื่อง ขั้นตอนการพัฒนาโปรแกรม
โจทย์ปัญหา PBL 3 เรื่อง ขั้นตอนการพัฒนาโปรแกรม
nattapon Arsapanom
Pbl 3
Pbl 3
nattapon Arsapanom
Java 7&12 6 2
Java 7&12 6 2
Mook Sasivimon
Exe2[1]
Exe2[1]
Parnaza CartoonClub
Smart industry Vol.33/2561
Smart industry Vol.33/2561
Software Park Thailand
Softwarepark news Vol.7/2561
Softwarepark news Vol.7/2561
Software Park Thailand
More Related Content
Similar to EJB Programming Using Eclipse & 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
IMC Institute
Eclipse
Eclipse
gzxc
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Software Park Thailand
Hand on Exercises Java Web Services and SOA using GlassFish ESB and NetBeans
Hand on Exercises Java Web Services and SOA using GlassFish ESB and NetBeans
IMC Institute
ใบความรู้ที่ 3.2
ใบความรู้ที่ 3.2
ณัฐพล บัวพันธ์
webprogramming eclipse-jsp
webprogramming eclipse-jsp
Weerasak Sriwongyang
Java Web programming Using Eclipse
Java Web programming Using Eclipse
Software Park Thailand
Java Web Programming (JSP/Servlet) Using Eclipse and Tomcat
Java Web Programming (JSP/Servlet) Using Eclipse and Tomcat
IMC Institute
1236363
1236363
Naynoyjolii
Ch17
Ch17
burin rujjanapan
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์2
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์2
fulk123
โจทย์ปัญหา Pbl 3
โจทย์ปัญหา Pbl 3
siriyaporn20099
โจทย์ปัญหา Pbl 3
โจทย์ปัญหา Pbl 3
siriyaporn20099
โจทย์ปัญหา Pbl3
โจทย์ปัญหา Pbl3
siriyaporn20099
ประวัติความเป็นมาภาษาซี
ประวัติความเป็นมาภาษาซี
เทวัญ ภูพานทอง
Pbl 3
Pbl 3
nattapon Arsapanom
โจทย์ปัญหา PBL 3 เรื่อง ขั้นตอนการพัฒนาโปรแกรม
โจทย์ปัญหา PBL 3 เรื่อง ขั้นตอนการพัฒนาโปรแกรม
nattapon Arsapanom
Pbl 3
Pbl 3
nattapon Arsapanom
Java 7&12 6 2
Java 7&12 6 2
Mook Sasivimon
Exe2[1]
Exe2[1]
Parnaza CartoonClub
Similar to EJB Programming Using Eclipse & JBoss
(20)
Java EE Programming [EJB 3.0 and JPA] Using Eclipse and JBoss
Java EE Programming [EJB 3.0 and JPA] Using Eclipse and JBoss
Eclipse
Eclipse
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Hand on Exercises Java Web Services and SOA using GlassFish ESB and NetBeans
Hand on Exercises Java Web Services and SOA using GlassFish ESB and NetBeans
ใบความรู้ที่ 3.2
ใบความรู้ที่ 3.2
webprogramming eclipse-jsp
webprogramming eclipse-jsp
Java Web programming Using Eclipse
Java Web programming Using Eclipse
Java Web Programming (JSP/Servlet) Using Eclipse and Tomcat
Java Web Programming (JSP/Servlet) Using Eclipse and Tomcat
1236363
1236363
Ch17
Ch17
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์2
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์2
โจทย์ปัญหา Pbl 3
โจทย์ปัญหา Pbl 3
โจทย์ปัญหา Pbl 3
โจทย์ปัญหา Pbl 3
โจทย์ปัญหา Pbl3
โจทย์ปัญหา Pbl3
ประวัติความเป็นมาภาษาซี
ประวัติความเป็นมาภาษาซี
Pbl 3
Pbl 3
โจทย์ปัญหา PBL 3 เรื่อง ขั้นตอนการพัฒนาโปรแกรม
โจทย์ปัญหา PBL 3 เรื่อง ขั้นตอนการพัฒนาโปรแกรม
Pbl 3
Pbl 3
Java 7&12 6 2
Java 7&12 6 2
Exe2[1]
Exe2[1]
More from Software Park Thailand
Smart industry Vol.33/2561
Smart industry Vol.33/2561
Software Park Thailand
Softwarepark news Vol.7/2561
Softwarepark news Vol.7/2561
Software Park Thailand
Software Park Thailand Newsletter (Thai) Vol2/2556
Software Park Thailand Newsletter (Thai) Vol2/2556
Software Park Thailand
Software Park Newsletter Thai Vol 3/25561
Software Park Newsletter Thai Vol 3/25561
Software Park Thailand
Smart Industry Vol.23
Smart Industry Vol.23
Software Park Thailand
Solfware park Newsletter Vol 3/2013 Eng Version
Solfware park Newsletter Vol 3/2013 Eng Version
Software Park Thailand
Software Park Thailand Newsletter Vol 3/2556
Software Park Thailand Newsletter Vol 3/2556
Software Park Thailand
Software Park Thailand Newsletter (Eng) Vol3/2012
Software Park Thailand Newsletter (Eng) Vol3/2012
Software Park Thailand
Software Park Thailand Newsletter (Eng) Vol5/2013
Software Park Thailand Newsletter (Eng) Vol5/2013
Software Park Thailand
Software Park Thailand Newsletter (Thai) Vol4/2555
Software Park Thailand Newsletter (Thai) Vol4/2555
Software Park Thailand
Thai ICT Trad Mission CommunicAsia 2013 (18-21 June 2013)
Thai ICT Trad Mission CommunicAsia 2013 (18-21 June 2013)
Software Park Thailand
Smart Industry Vo.22/2556"E-transaction กระตุ้นธุรกิจอีคอมเมิร์สโต"
Smart Industry Vo.22/2556"E-transaction กระตุ้นธุรกิจอีคอมเมิร์สโต"
Software Park Thailand
Software newsletter
Software newsletter
Software Park Thailand
Smart industry Vol. 21/2556
Smart industry Vol. 21/2556
Software Park Thailand
Software Park Newsletter 2/2554 "แท็บเล็ต สมาร์ทโพน โมบายแอพพลิเคชั่น ดาวเด่น...
Software Park Newsletter 2/2554 "แท็บเล็ต สมาร์ทโพน โมบายแอพพลิเคชั่น ดาวเด่น...
Software Park Thailand
Software Park Newsletter Vol. 4/2012 English Version
Software Park Newsletter Vol. 4/2012 English Version
Software Park Thailand
Thai IT Delegation to Japan 2012
Thai IT Delegation to Japan 2012
Software Park Thailand
Thai IT Business Develop,emt Delegation to Tokyo, Japan, 2012
Thai IT Business Develop,emt Delegation to Tokyo, Japan, 2012
Software Park Thailand
Thai IT Trade Delegation to Tokyo, Japan 11-16 November 2012
Thai IT Trade Delegation to Tokyo, Japan 11-16 November 2012
Software Park Thailand
Thai IT Business Development Delegation to Tokyo, Japan: November 2012
Thai IT Business Development Delegation to Tokyo, Japan: November 2012
Software Park Thailand
More from Software Park Thailand
(20)
Smart industry Vol.33/2561
Smart industry Vol.33/2561
Softwarepark news Vol.7/2561
Softwarepark news Vol.7/2561
Software Park Thailand Newsletter (Thai) Vol2/2556
Software Park Thailand Newsletter (Thai) Vol2/2556
Software Park Newsletter Thai Vol 3/25561
Software Park Newsletter Thai Vol 3/25561
Smart Industry Vol.23
Smart Industry Vol.23
Solfware park Newsletter Vol 3/2013 Eng Version
Solfware park Newsletter Vol 3/2013 Eng Version
Software Park Thailand Newsletter Vol 3/2556
Software Park Thailand Newsletter Vol 3/2556
Software Park Thailand Newsletter (Eng) Vol3/2012
Software Park Thailand Newsletter (Eng) Vol3/2012
Software Park Thailand Newsletter (Eng) Vol5/2013
Software Park Thailand Newsletter (Eng) Vol5/2013
Software Park Thailand Newsletter (Thai) Vol4/2555
Software Park Thailand Newsletter (Thai) Vol4/2555
Thai ICT Trad Mission CommunicAsia 2013 (18-21 June 2013)
Thai ICT Trad Mission CommunicAsia 2013 (18-21 June 2013)
Smart Industry Vo.22/2556"E-transaction กระตุ้นธุรกิจอีคอมเมิร์สโต"
Smart Industry Vo.22/2556"E-transaction กระตุ้นธุรกิจอีคอมเมิร์สโต"
Software newsletter
Software newsletter
Smart industry Vol. 21/2556
Smart industry Vol. 21/2556
Software Park Newsletter 2/2554 "แท็บเล็ต สมาร์ทโพน โมบายแอพพลิเคชั่น ดาวเด่น...
Software Park Newsletter 2/2554 "แท็บเล็ต สมาร์ทโพน โมบายแอพพลิเคชั่น ดาวเด่น...
Software Park Newsletter Vol. 4/2012 English Version
Software Park Newsletter Vol. 4/2012 English Version
Thai IT Delegation to Japan 2012
Thai IT Delegation to Japan 2012
Thai IT Business Develop,emt Delegation to Tokyo, Japan, 2012
Thai IT Business Develop,emt Delegation to Tokyo, Japan, 2012
Thai IT Trade Delegation to Tokyo, Japan 11-16 November 2012
Thai IT Trade Delegation to Tokyo, Japan 11-16 November 2012
Thai IT Business Development Delegation to Tokyo, Japan: November 2012
Thai IT Business Development Delegation to Tokyo, Japan: November 2012
EJB Programming Using Eclipse & JBoss
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 Mongkut's Institute of Technology Ladkrabang June 2011 การพัฒนฒนาโปรแกรมด้วย Entวย 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 คณะเทคโนโลักสูตร ยสารสนเทศ สถาบนพัฒนระจอมเกลักสูตร าเจาค'ณทหารลักสูตร าด้วย Entกระบง โด้วย Entยมจ'ด้วย Entประสงค(เพัฒน)*อให ,เรยนได้วย Entเขาใจถ.งการพัฒนฒนาโปรแกรม Java Enterprise Application ท*ใช้ในการป Enterprise Java Bean 3.0 แลักสูตร ะ Java Persistence API ทงนแบบ/.กหด้วย Entนอางองกบเคร)*องม)อพัฒนฒนาโปรแกรมจาวา Eclipse แลักสูตร ะ โปรแกรม JBoss Application Server thananum@gmail.com twitter.com/thanachart www.facebook.com/thanachart www.thaijavadev.com มถ'นายน 2554 การพัฒนฒนาโปรแกรมด้วย Entวย 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................................................................................4 Exercise 2 Stateful Session Bean Using EJB 3.0...............................................................................21 Exercise 3 Entity Class (JPA).............................................................................................................26 Exercise 4 การพัฒนาJSPฒนา JSP เพัฒนาJSPอเรยกใช้ EJB EJB 3.0.....................................................................................36 Exercise 5 JPA : Entity Relationships................................................................................................41 Exercise 6 JPA: Inheritance................................................................................................................60 Exercise 7 Message Driven Bean.......................................................................................................70 Exercise 8 EJB Security.....................................................................................................................75 Exercise 9 Using Java Persistence API in Visual Web JSF applications...........................................83 การพัฒนฒนาโปรแกรมด้วย Entวย 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 แบบ/.กหด้วย Entนเป0นการพัฒนฒนาโปรแกรม Enterprise Java Bean (EJB) โด้วย Entยใช้ในการป EJB 3.0 สราง Session Bean แลักสูตร ะแสด้วย Entงตวอย1างการเรยกใช้ในการป Session Bean จาก Web Application โด้วย Entยใช้ในการป Java Servlet แลักสูตร ะจาก Desktop Application โด้วย Entยใช้ในการป Java SE ขนตอนในการพัฒนาโปรฒนาโปรแกรม 1. สราง Enterprise Application Project 2. พัฒนฒนา Session Bean 3. พัฒนฒนา Web Application 4. พัฒนฒนา Desktop Application 1.1 ก รสร ง Enterprise Application Project สราง Project แบบ Enterprise Application ซึ่งมี E.*งม EJB Module แลักสูตร ะ Web Module ภายในตว Project 1. สราง Project โด้วย Entยเลักสูตร )อกเมน File → New → Enterprise Application Project ก4าหนด้วย Ent Project Name เป0น SessionBeanDemo 2. สราง Server ท*จะรน Click ท*ป'1ม New Runtime... ก4าหนด้วย Ent Directory ท*ม JBoss Application Server อย1 3. กด้วย Ent Next กด้วย Entป'1ม New Module... เลักสูตร )อก EJB Module แลักสูตร ะ Web Module กด้วย Ent Finish จนจบ Wizard การพัฒนฒนาโปรแกรมด้วย Entวย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
5.
5
รปที่ 1.1 การสราง Enterprise Application Project การพัฒนฒนาโปรแกรมด้วย Entวย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
6.
6 1.2
ก รพัฒนฒนำ โปรแกรม Session Bean โปรแกรม EJB จะใช้ในการป Session Bean ในการตด้วย Entต1อกบโปรแกรมอ)*นๆ ภายนอก EJB Container โด้วย Entย Session Bean จะประกอบด้วย Entวย Business Method ต1างๆ ในแบบ/.กหด้วย Entจะสราง Session Bean ท*ช้ในการป)*อ BLSession ท*ม Business method สองเมธอด้วย Entค)อ ● String sayHi(String name) ● double currencyConvert(String currency, double amt) โด้วย Entยเราสามารถท*จะพัฒนฒนาโปรแกรมนได้วย Entด้วย Entงน 1. คลักสูตร 7กขวาท* SessionBeanDemoEJB → New → Session Bean(EJB 3.x) 2. ก4าหนด้วย Ent Java package = ejb Class Name = BLSession State Type = Stateless Create Business Interface เลักสูตร )อกทง Remote แลักสูตร ะ Local ด้วย Entงรปท* 1.2 รปที่ 1.2 ไดอะล็อกการสอกการสราง Session Bean การพัฒนฒนาโปรแกรมด้วย Entวย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
7.
7
3. แลักสูตร วกด้วย Ent Finish โปรแกรมจะสรางไฟลักสูตร (ต1างๆ มาใหด้วย Entงรป รปที่ 1.3 โครงสรางของไฟล็อกการสของ 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าหนด้วย Ent Signature Method ใหกบ Interface? ม 2 กรณ ค)อ 1. ,เรยก EJB อย1บน Virtual Machine เด้วย Entยวกนกบ EJB ,เรยกจะใช้ในการปงาน Method ท*ระบ'ใน Interface BLSessionLocal 2. ,เรยกอย1คนลักสูตร ะ Virtual Machine หร)อคนลักสูตร ะเคร)อง * ,เรยกจะใช้ในการปงาน Method ท*ระบ'ใน Interface BLSessionRemote การพัฒนฒนาโปรแกรมด้วย Entวย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
8.
8 Listing 1.1 ประกาศ
Signature Method ท* Interface ทง Local แลักสูตร ะ Remote --- File Local-------------------------------------------------------------- @Local public interface BLSessionLocal { public String sayHi(String name); public double currencyConvert(String currency,double amt); } --- File Remote------------------------------------------------------------- @Remote public interface BLSessionRemote { public String sayHi(String name); public double currencyConvert(String currency,double amt); } 5. จะเห0นว1าม Error เกด้วย Entขนท* BLSession.java (Concrete Class) ใหใช้ในการป mouse วางท* Error . eclipse จะบอกว1าให implement method ท* interface บงคบไว กรณนกด้วย Entเลักสูตร )อกท* บรรทด้วย Entแรก Add Unimplemented Methods ด้วย Entงรป รปที่ 1.4 ที่ !าการ Implement source code ที่ concrete class : BLSession 6. ให Implement source code ส4าหรบ Business Method ทงสองด้วย Entงน 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; } } การพัฒนฒนาโปรแกรมด้วย Entวย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
9.
9 1.3
ก รพัฒนฒนำ โปรแกรม Web Application โปรแกรม EJB จะเป0นส1 วนของ Business Logic เท1านน การพัฒนฒนาส1 วนของ Presentation จะตองใช้ในการป โปรแกรม Web Application หร)อ Java SE ในขนตอนนจะพัฒนฒนาโปรแกรม Web Application เพัฒน)*อเรยกใช้ในการป Business Method ของ BLSession ท*ช้ในการป)*อ sayHi โด้วย Entยก4าหนด้วย Entให,ใช้ในการปส1 งพัฒนารามเตอร( String myName ไป Servlet ท*ช้ในการป)*อ SayHiServlet 1. คลักสูตร 7กขวาท* SessionBeanDemoWeb เลักสูตร )อก New → Servlet 2. ก4าหนด้วย Ent Package = controller Class Name = SayHiServlet รปที่ 1.5 สราง Servlet เพัฒนาโปร#อต$ดต%อกบ EJB3 การพัฒนฒนาโปรแกรมด้วย Entวย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
10.
10
3. Set ให Web Project รจก EJB Project โด้วย Entยคลักสูตร กขวาท* SessionBeanDemoWeb เลักสูตร )อก Build Path → Configure Build Path รปที่ 1.6 ที่ !าให้ Web P Web Project มองเห้ Web Pน EJB Project 4. เพัฒนม Source code ในการเรยก EJB ท* Servlet โด้วย Entย Declare เป0น Instant Variable * public class SayHiServlet extends HttpServlet { @EJB private BLSessionLocal blSession; .......... .......... .......... 5. ใหปรบปร'ง Source code ในเมธอด้วย Ent processRequest ด้วย Entงน 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(); } การพัฒนฒนาโปรแกรมด้วย Entวย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
11.
11 1.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 จะแสด้วย Entงขอความ Hello Thana ออกมา การพัฒนฒนาโปรแกรมด้วย Entวย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
12.
12 1.5
ก รพัฒนฒนำ โปรแกรม Desktop Application ติดต่อกัดติดต่อกัอกบ EJB 3.0 เราสามารถท*จะเขยนโปรแกรม Desktop Application เพัฒน)*อท*จะเรยกใช้ในการป EJB ในขนตอนนจะเป0นการ พัฒนฒนาโปรแกรม Java SE เพัฒน)*อเรยกใช้ในการป Business Method ของ BLSession โด้วย Entยจะท4าการพัฒนฒนาโปรแกรมสอง โปรแกรม โปรแกรมแรกค)อโปรแกรม Main.java จะเรยกเมธอด้วย Entท*ช้ในการป)*อ sayHi จาก command prompt ส1 วน โปรแกรมท*สองค)อโปรแกรม CurrencyConvertor.java จะเรยกเมธอด้วย Entท*ช้ในการป)*อ currencyConvert โด้วย Entยก4าหนด้วย Entให โปรแกรมนม GUI เพัฒน)*อให,ใช้ในการปปอนขอมลักสูตร เพัฒน)*อก4าหนด้วย Entสก'ลักสูตร เงนแลักสูตร ะจ4านวนเงน แลักสูตร ะมขนตอนการพัฒนฒนาด้วย Entงน 1. คลักสูตร กขวาท* SessionBeanDemo เลักสูตร )อก New → Application Client Module ก4าหนด้วย Ent Project Name = SessionBeanDemoClient 2. คลักสูตร กเลักสูตร )อก check box เป0น Add project to an EAR เลักสูตร )อก dropdown ช้ในการป)*อ SessionBeanDemo รปที่ 1.7 การเพัฒนาโปร$ม Enterprise Application Client เขาส% Enterprise Application Project การพัฒนฒนาโปรแกรมด้วย Entวย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
13.
13 1.5.1
แกไข EJB Project (เพัฒน*ม Mapping Name) เพัฒน)*อให Application Client เรยกใช้ในการป SessionBean ของ EJB ได้วย Ent จะตอง Register ช้ในการป)*อของ SessionBean เขาส1 Context หร)อเรยกว1าการ Mapping ไปท* SessionBeanDemoEJB ท* @Stateless ใหเพัฒนม วงเลักสูตร 0บ แลักสูตร วกด้วย Ent Ctrl+Space จะม hint มาให * เลักสูตร )อก mappedName แลักสูตร วใส1 ช้ในการป)*อท*ตองการ รปที่ 1.8 การเพัฒนาโปร$มชื่อของ #อของ Session Bean เขาส% Context ของ JBoss Application Server 1.5.2 การพัฒนฒนาโปรแกรม Main.java Implement Source code ของ Main.java ด้วย Entงน 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 ซึ่งมี E.*งท4าได้วย Entโด้วย Entย double click ท* Server JBoss ด้วย Entงรป การพัฒนฒนาโปรแกรมด้วย Entวย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
14.
14
รปที่ 1.9 การห้ Web Pา JNDI port ของ Server ที่ EJB Project Deploy อยู่t % จากนนท4าการรน Application จะได้วย Ent,ลักสูตร ลักสูตร พัฒนธ(ค)อ Hello Thana print ออกมาท* Console การพัฒนฒนาโปรแกรมด้วย Entวย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
15.
15 1.5.3
การพัฒนฒนาโปรแกรม CurrencyConvertor.java โปรแกรม Desktop Application จะมลักสูตร กษณะด้วย Entงรป โด้วย Entยจะใช้ในการป GUI Designer (Jigloo) ในการพัฒนฒนา รปที่ 1.10 GUI ของโปรแกรม CurrencyConvertor 1. คลักสูตร กขวาท*โหนด้วย Ent SessionBeanDemoClient เลักสูตร )อก appClientModule → New → Other... → GUI Forms → Swing → Jframe จะมได้วย Entอะลักสูตร 0อกข.นมา ก4าหนด้วย Ent Package = swing แลักสูตร ะ Class Name = CurrencyConvertor รปที่ 1.11 สราง Swing GUI การพัฒนฒนาโปรแกรมด้วย Entวย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
16.
16
2. คลักสูตร 7กท* JFrame แลักสูตร วเปลักสูตร *ยน property ท*ช้ในการป)*อ title เป0น Currency Convertor รปที่ 1.12 สราง Swing GUI 3. เพัฒนม JPanel แบบ Form * รปที่ 1.13 สราง Swing GUI 4. การพัฒนฒนาโปรแกรมด้วย Entวย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
17.
17
5. ลักสูตร ากไอคอน Label ใน Swing Controls จาก Table Compoments Drag Drop ไปท*หนาต1าง ด้วย Entงรป แลักสูตร วก4าหนด้วย Entค1า รปที่ 1.14 การวาง Label ใน Components Windows 6. คลักสูตร 7กเลักสูตร )อก jLabel แต1ลักสูตร ะตว แลักสูตร ะเปลักสูตร *ยน property ท*ช้ในการป)*อ text เป0น currency, amount แลักสูตร ะ value 7. ลักสูตร ากไอคอน Combo Box มาในต4าแหน1งทางขวาม)อของ currency จากนนใน property ใหเลักสูตร )อก model โด้วย Entยก4าหนด้วย Ent Item สองรายการใหเป0น baht แลักสูตร ะ euro ด้วย Entงรป รปที่ 1.15 การก!าห้ Web Pนดค%า item ของ ComboBox การพัฒนฒนาโปรแกรมด้วย Entวย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
18.
18
8. ท4าการ implement sourcecode ด้วย Entงรป 9. Implement source code กรณท*มการกด้วย Entป'1ม Calculate โด้วย Entยแกไข source code ด้วย Entงน 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นเด้วย Entยวกบป'1ม Calculate private void jButton2ActionPerformed(ActionEvent evt) { System.out.println(jButton2.actionPerformed, event= + evt); System.exit(0); } 11. ทด้วย Entสอบโปรแกรมโด้วย Entยการเลักสูตร )อกสก'ลักสูตร เงน แลักสูตร ะปอนจ4านวนเงน แลักสูตร วกด้วย Entป'1ม Calculate การพัฒนฒนาโปรแกรมด้วย Entวย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
19.
19 Source Code ท*
Jigloo สรางข.นมา แลักสูตร ะท*เราปรบปร'งทงหมด้วย Ent 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 CloudGarden's 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(); การพัฒนฒนาโปรแกรมด้วย Entวย 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); } } การพัฒนฒนาโปรแกรมด้วย Entวย 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 Pาที่ ตองศึกษาก่อ-กษาก%อน Session Bean Using EJB 3.0 แบบ/.กหด้วย Entในบทนเป0นการพัฒนฒนา Stateful Session Bean ส4าหรบ Shopping Cart โด้วย Entยใช้ในการป EJB 3.0 โด้วย Entยก4าหนด้วย Entให Session Bean มช้ในการป)*อเป0น Cart แลักสูตร ะม Business Methods สามเมธอด้วย Entค)อ ● void putItem(String itemId, int quantity) ● void removeItem(String itemId) ● Hashtable getItems() นอกจากนจะม เมธอด้วย Entเท*ถกเรยกจาก @PostConstruct ค)อ ● void initialize() แลักสูตร ะ Bean Class จะมตวแปรของออปเจ0ค (instance variable) สองตวค)อ ● String customerId ● Hashtable cart ในแบบ/.กหด้วย Entนเราจะเขยน Java Servlet ข.นมาเพัฒน)*อเรยกใช้ในการป Cart Session Bean ท*ช้ในการป)*อ CartManager.java เพัฒน)*อใช้ในการปในการเพัฒน*ม/ลักสูตร บรายการออกจาก Cart แลักสูตร ะ เพัฒน)*อแสด้วย Entงรายการท*อย1ใน Cart โด้วย Entย,ท*เรยก 1 ใช้ในการป CartManager จะตองส1 งพัฒนารามเตอร(ท*ช้ในการป)*อ action มาเพัฒน)อระบ'วาตองการท4าอะไรกบ Cart โด้วย Entยม action ด้วย Entงน ● add เพัฒน)*อเพัฒน*มรายการลักสูตร งใน Cart ● remove เพัฒน)*อลักสูตร บรายการออกจาก Cart ● list เพัฒน)*อแสด้วย Entงรายการใน Cart [หมายเหต' ถาเราสราง Servlet หลักสูตร ายๆไฟลักสูตร (เพัฒน)*อท4าหนาท*ต1างกน เช้ในการป1น AddCartServlet, RemoveCartServlet แลักสูตร ะ ListCartServlet โปรแกรม Stateful Session Bean จะสราง bean instance ส4าหรบ Servlet แต1ลักสูตร ะตวท4าใหใช้ในการป Session ท*ต1างกน] ขนตอนในการพัฒนฒนาโปรแกรม 1. พัฒนฒนา Stateful Session Bean 2. พัฒนฒนาโปรแกรม CartManager.java 3. พัฒนฒนาโปรแกรม CartList.java 2.1 ก รพัฒนฒนำ โปรแกรม Stateful Session Bean แบบ/.กหด้วย Entนจะใช้ในการปโปรเจ0คเด้วย Entม (SessionBeanDemo) ท*สรางในแบบ/.กโปรแกรม Session Bean Using EJB 3.0 ในการสราง Stateful Session Bean โด้วย Entยมขนตอนในการพัฒนฒนาโปรแกรมนได้วย Entด้วย Entงน การพัฒนฒนาโปรแกรมด้วย Entวย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
22.
22
1. คลักสูตร 7กขวาท* SessionBeanDemoEJB → New → Session Bean(EJB 3.x) 2. ก4าหนด้วย Ent Java package = ejb , Class Name = Cart แลักสูตร ะ State Type = Stateful รปที่ 2.1 การก!าห้ Web Pนดค%าของ Cart Stateful Session Bean 3. ท4าการ Add Business Method โด้วย Entยเร*มจากสราง Signature Method ใน Interface CartLocal แลักสูตร ะ CartRemote ด้วย Entงน 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 การพัฒนฒนาโปรแกรมด้วย Entวย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
23.
23
4. จะได้วย Ent 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 แลักสูตร ะ 2.2 Listing 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(); } การพัฒนฒนาโปรแกรมด้วย Entวย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
24.
24
จากนน Fix Error ของ Class Cart.java โด้วย Entย Implement source code ตาม Listing 2.3 ด้วย Entงน 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 ของ Cart Bean ในการเพัฒน*มรายการลักสูตร งใน Cart โด้วย Entยก4าหนด้วย Entให,ใช้ในการปส1 งพัฒนารามเตอร(มายงโปรแกรมด้วย Entงน ● itemId ค)อหมายเลักสูตร ขของรายการสนคา ● quantity ค)อจ4านวนของรายการสนคา ● method ถามค1าเป0น add ค)อเพัฒนมรายการ แลักสูตร ะถามค1าเป0น remove ค)อลักสูตร บรายการ * ช้ในการป'ด้วย Entค4าสงต1างๆ ภายใน CartManager อธบายได้วย Entด้วย Entงน * 1. ประกาศตวแปร cart เป0นช้ในการปนด้วย Ent CartLocal โด้วย Entยใช้ในการป annotation ท*ช้ในการป)*อ @EJB ด้วย Entงน @EJB private CartLocal cart; การพัฒนฒนาโปรแกรมด้วย Entวย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
25.
25
2. ค4าสงอ1านค1าพัฒนารามเตอร(ต1างๆ * โด้วย Entยก4าหนด้วย Entใหมพัฒนารามเตอร(ส1ง,1านมาจาก request ค)อ action, item แลักสูตร ะ quantity โด้วย Entยมค4าสงด้วย Entงน * 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างกนด้วย Entงน * 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. เลักสูตร )อกหนาต1าง Projects แลักสูตร วคลักสูตร 7กขวาท*โหนด้วย Ent SessionBeanDemoWeb จากนนเลักสูตร )อกค4าสง New → Servlet * ก4าหนด้วย Ent Package = controller , Class Name = CartManager 2. ในหนาต1าง Editor ใหเพัฒน*ม Source code ในการเรยก EJB ด้วย Entงน ประกาศ instant variable เป0นช้ในการปนด้วย Ent CartLocal เพัฒนราะเราจะส)*อสารกบ EJB ,1าน Interface CartLocal @EJB private CartLocal cart; 3. Implement source code ของ Method processRequest( ) ด้วย Entงน Listing 2.4 โปรแกรม CartManager.java package 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); } การพัฒนฒนาโปรแกรมด้วย Entวย 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 รายการโด้วย Entยเลักสูตร )อก URL ของ Web Browser เป0น http://localhost:8080/SessionBeanDemoWeb/CartManager?action=additem=125quantity=3 ท4าการใส1 รายการเพัฒน*มเตมโด้วย Entยเลักสูตร )อก URL ของ Web Browser เป0น http://localhost:8080/SessionBeanDemoWeb/CartManager?action=additem=123quantity=2 3. แสด้วย Entงรายการใน Cart โด้วย Entยเลักสูตร )อก URL เป0น http://localhost:8080/SessionBeanDemoWeb/CartManager?action=list 4. ทด้วย Entลักสูตร องลักสูตร บรายการโด้วย Entยเลักสูตร )อก URL ของ Web Browser เป0น http://localhost:8080/SessionBeanDemoWeb/CartManager?action=removeitem=123 5. แสด้วย Entงรายการใน Cart ใหม1โด้วย Entยเลักสูตร )อก URL เป0น http://localhost:8080/SessionBeanDemoWeb/CartManager?action=list การพัฒนฒนาโปรแกรมด้วย Entวย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
27.
27
Exercise 3 Entity Class (JPA) แบบ/.กหด้วย Entในบทนเป0นการพัฒนฒนาโปรแกรม Enterprise Java Bean (EJB) โด้วย Entยจะเป0นการพัฒนฒนา โปรแกรมตด้วย Entต1อกบฐานขอมลักสูตร MySQL โด้วย Entยใช้ในการป EJB3.0 บน JBoss Application Server จะประกอบด้วย Entวย Entity Class ท*เช้ในการป)*อมโยงกบตารางท*ช้ในการป)*อ books แลักสูตร ะ Session Bean เพัฒน)*อใช้ในการปในการจด้วย Entการเพัฒน*ม แกไข แลักสูตร ะลักสูตร บขอมลักสูตร ใน table books ได้วย Ent ขนตอนในการพัฒนาโปรฒนาโปรแกรม 1. สราง Enterprise Application Project 2. พัฒนฒนา Entity Class 3. พัฒนฒนา Session Bean 4. พัฒนฒนา Web Application 3.1 ก รสร ง Enterprise Application Project สราง Enterprise Application Project โด้วย Entยม EJB Module แลักสูตร ะ Web Module อย1ภายใน Project 1. เลักสูตร )อกเมน File → New → Enterprise Application Project ก4าหนด้วย Ent Project Name = BookApp 2. สราง Module ใหม1 รปที่ 3.1 สราง Module EJB แล็อกการสะ Web ใน Enterprise Application การพัฒนฒนาโปรแกรมด้วย Entวย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
28.
28 3.2
ก ร Config ให้ Proje Project ใช้งาน JPง นำ JPA เพัฒนอเช้งาน JPอมติดต่อกัอกบ Database ได Java EE 5 จะใช้ในการปคลักสูตร าสประเภท Entity เพัฒน)*อเป0นออปเจ0คท*สอด้วย Entคลักสูตร องกบตารางในฐานขอมลักสูตร ในท*นเราจะ สราง Entity Class ท*ช้ในการป)*อ Books.java จากตารางท*ช้ในการป)*อ books ซึ่งมี E.*งมการสรางมาก1อนแลักสูตร ว โด้วย Entยมขนตอนการพัฒนฒนา โปรแกรมนมด้วย Entงน 1. Copy EclipseLink , MySQLConnection (.jar file) ไปท* %JBOSS_HOMEcommonlib 2. คลักสูตร กขวาท* BookAppEJB เลักสูตร )อก Build path → Configure Build path... 3. เลักสูตร )อก Project Facets → JPA ท4าการ Config ด้วย Entงรป การพัฒนฒนาโปรแกรมด้วย Entวย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
29.
29 การพัฒนฒนาโปรแกรมด้วย Entวย 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 (คลักสูตร ายกบการเพัฒน*ม file context.xml ใน Tomcat6) เปด้วย Ent Folder $JBOSS_HOMEdocsexamplesjca แลักสูตร ว copy file mysql-ds.xml ไปท* $JBOSS_HOMEserverdefaultdeploy 5. ท4าการ config file mysql-ds.xml ด้วย Entงรป รปที่ 3.3 Config JNDI Context ให้ Web P JBoss การพัฒนฒนาโปรแกรมด้วย Entวย 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 ลักสูตร ง JBoss แลักสูตร ะท4าการ Start JBoss Application Server Monitor ด้วย Ent log ท* Console ตองไม1พัฒนบ ERROR การพัฒนฒนาโปรแกรมด้วย Entวย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
32.
32 3.3
ก รพัฒนฒนำ โปรแกรม Entity Class สราง Entity Classes โด้วย Entย คลักสูตร กขวาท* BookAppEJB → New → Entities from Tables รปที่ 3.6 แสดงการสราง Entity Class จะได้วย Ent Entity Class ช้ในการป)*อ Books.java ท*ม Getter/Setter ของท'ก Field ใน table books เพัฒน*มส1 วนของ statement การ Query ขอมลักสูตร ไปท*บรรทด้วย Entด้วย Entานลักสูตร 1างของ @Table(name = books) ด้วย Entงน @NamedQuery (name = Books.findByIsbn, query = SELECT b FROM Books b WHERE b.isbn = :isbn) การพัฒนฒนาโปรแกรมด้วย Entวย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
33.
33 Listing 3.1 โปรแกรม
Books.java package 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; } } การพัฒนฒนาโปรแกรมด้วย Entวย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
34.
34 3.4
ก รพัฒนฒนำ โปรแกรม Session Bean โปรแกรม EJB จะใช้ในการป Session Bean ในการตด้วย Entต1อกบโปรแกรมอ)*นๆ ภายนอก EJB Container โด้วย Entย โปรแกรมเหลักสูตร 1านนจะตด้วย Entต1อกบ Entity Class โด้วย Entย,1าน Session Bean แบบ/.กหด้วย Entนจะสราง Session Bean ท*ช้ในการป)*อ BooksFacade.java ท*ม Business method ในการ เรยกด้วย Entขอมลักสูตร ของตารางท*ช้ในการป)*อ books โด้วย Entยใช้ในการป Entity Class ช้ในการป)*อ Books.java แลักสูตร ะ EntityManager โด้วย Entยจะมขนตอนการพัฒนฒนาด้วย Entงน 1. คลักสูตร กขวาท*โหนด้วย Ent BookAppEJB เลักสูตร )อก New → SessionBean (EJB 3.x) รปที่ 3.7 แสดงการสราง Session Bean 2. ก4าหนด้วย Ent Package = sb Class name = BookFacade eclipse จะสราง Interface BookFacadeLocal.java ให 3. เพัฒนม Signature method ท* interface ของการคนหาหนงส)อ แลักสูตร ะ รบช้ในการป)*อ String isbn เพัฒน)*อไปประมวลักสูตร ,ลักสูตร * Books find(String isbn); การพัฒนฒนาโปรแกรมด้วย Entวย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
35.
35 Listing 3.2 โปรแกรม
BookLocal.java package sb; import javax.ejb.Local; import entity.Books; @Local public interface BookFacadeLocal { Books find(String isbn); } 4. Fix Error ท* class BookFacade.java implements concrete class โด้วย Entยระบ'ช้ในการป)*อ JPA ท*ใช้ในการปค)อ BookAppEJB แลักสูตร วใช้ในการปงานโด้วย Entยส1 ง Books.class (Books Entity Class) ไปให entity manager → em.find(Books.class, id); Listing 3.3 โปรแกรม BookFacade.java package sb; import javax.ejb.Stateless; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import entity.Books; @Stateless public 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) แบบ/.กหด้วย Entนจะพัฒนฒนาโปรแกรม Web Application เพัฒน)*อให,ใช้ในการป ปอน isbn ของหนงส)อในหนาเว0บ findBook.html แลักสูตร วโปรแกรมจะเรยกโปรแกรม Servlet ท*ช้ในการป)*อ ShowBook.java เพัฒน)*อแสด้วย Entงรายลักสูตร ะเอยด้วย Entของหนงส)อด้วย Entงกลักสูตร 1าวออกมา โด้วย Entยมขนตอนการพัฒนฒนาด้วย Entงน การพัฒนฒนาโปรแกรมด้วย Entวย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
36.
36 3.5.1
การพัฒนฒนาโปรแกรม findBook.html โปรแกรม findBook.html เป0นเว0บเพัฒนจท*ใช้ในการปแสด้วย Entงฟอร(มส4าหรบให,ใช้ในการปปอน isbn ของหนงส)อ โด้วย Entยมขนตอนการพัฒนฒนาด้วย Entงน 1. คลักสูตร กขวาท*โหนด้วย Ent BookAppWeb เลักสูตร )อกค4าสง New → HTML * 2. ก4าหนด้วย Ent HTML File Name: เป0น findBook แลักสูตร วกด้วย Ent Finish 3. เขยน source code ของไฟลักสูตร ( findBook.html ตาม Listing ท* 3.4 Listing 3.4 โปรแกรม findBook.html !DOCTYPE html PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN http://www.w3.org/TR/html4/loose.dtd html head meta http-equiv=Content-Type content=text/html; charset=UTF-8 titleInsert title here/title /head body form action=ShowBook method=POST h2Search Book from ISBN/h2 Enter ISBN input type=text name=isbn / input type=submit value=Find / /form /body /html 3.5.2 การพัฒนฒนาโปรแกรม ShowBook.java โปรแกรม ShowBook.java เป0นโปรแกรม Java Servlet ท*จะอ1านหมายเลักสูตร ข ISBN ท*,ใช้ในการปปอนมาจาก หนา findBook.html แลักสูตร ะจะเรยกเมธอด้วย Ent find() ของ session bean ท*ช้ในการป)*อ BooksFacade เพัฒน)*อแสด้วย Entงรายลักสูตร ะเอยด้วย Ent ของหนงส)อ โด้วย Entยมขนตอนการพัฒนฒนาโปรแกรมด้วย Entงน 1. คลักสูตร กขวาท*โหนด้วย Ent BookAppWeb เลักสูตร )อก 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 การพัฒนฒนาโปรแกรมด้วย Entวย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
37.
37
ใหท4าการเพัฒนม Build path ใหม Library ของ EJB Project โด้วย Entยเลักสูตร )อกท* Fix Project Setup * แลักสูตร ะ set Build path ใหด้วย Entงรป รปที่ 3.8 แสดงการ Fix Project Setup การพัฒนฒนาโปรแกรมด้วย Entวย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
38.
38
ใหปรบปร'ง Source code ในเมธอด้วย Ent processRequest ด้วย Entง Listing ด้วย Entานลักสูตร 1าง 3. Listing 3.5 โปรแกรม ShowBook.java package 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,HttpServletResponse response) 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(); } } การพัฒนฒนาโปรแกรมด้วย Entวย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
39.
39 3.6
ก รทดสอบโปรแกรม 1. Re-Publish JBoss Server 2. เรยก http://localhost:8080/BookAppWeb/findBook.html 3. กรอก isbn ท*มใน table books แลักสูตร วกด้วย Ent Find หนาจอก0จะแสด้วย Entงรายลักสูตร ะเอยด้วย Entของหนงส)อออกมา การพัฒนฒนาโปรแกรมด้วย Entวย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
40.
40
Exercise 4 ก รพัฒนฒนำ JSP เพัฒนอเรยกใช้งาน JP EJB 3.0 เน#อห้ Web Pาที่ ตองศึกษาก่อ-กษาก%อน Entity Class แบบ/.กหด้วย Entนเป0นการพัฒนฒนาโปรแกรม JSP เพัฒน)*อเรยกใช้ในการป Entity Class ท*ช้ในการป)*อ Books แลักสูตร ะ Session Bean ท* ช้ในการป)*อ BooksFacade ซึ่งมี E.*งพัฒนฒนามาจากแบบ/.กหด้วย Entเร)*อง Entity Class แลักสูตร วจะเรยกใช้ในการป Stateful Session Bean ท*ช้ในการป)*อ Cart แลักสูตร ะโปรแกรม Servlet ท*ช้ในการป)*อ CartManager.java ท*พัฒนฒนามาจากแบบ/.กหด้วย Entเร)*อง Stateful Session Bean 1 Using EJB 3.0 เพัฒน)*อใส1 รายช้ในการปอหนงส)อลักสูตร งใน Cart แลักสูตร ะเพัฒน)*อแสด้วย Entงรายการท*อย1ใน Cart โด้วย Entยใช้ในการป Project ท*,านมา )* ช้ในการป)*อ SessionBeanDemoWeb โปรแกรม showBook.jsp เป0นโปรแกรม JSP ท*จะเรยกใช้ในการป Custom Tag ท*ช้ในการป)*อ EJBTags:GetBooks ซึ่งมี E.*งจะเป0น Tag ท*เรยกใช้ในการป เมธอด้วย Ent findAll() ของ BooksFacade Session Bean แลักสูตร วเก0บ List ของหนงส)อทงหมด้วย Ent ไวใน session โปรแกรม showBook.jsp ก0จะแสด้วย Entงรายช้ในการป)*อหนงส)อทงหมด้วย Entมาให,ใช้ในการปเลักสูตร )อกลักสูตร งใน Cart โปรแกรมน ตองพัฒนฒนาไฟลักสูตร (ต1างๆ ค)อ ● Tag Library Descriptor ● Tag Handler ● JSP File โด้วย Entยมขนตอนการพัฒนฒนาด้วย Entงน 4.1.1 สราง Tag Library Descriptor ไฟลักสูตร (นจะใช้ในการปเก0บ รายช้ในการปอ Tag ต1างๆท*มอย1เพัฒน)*อสามารถน4า tag ต1างๆ มาใช้ในการปในโปรแกรม JSP โด้วย Entยใช้ในการปค4าสง )* * %@taglib ...% การสราง Tag Library Descriptor จะมขนตอนด้วย Entงน 1. คลักสูตร กขวาท*โหนด้วย Ent BookAppWeb 2. สรางโฟลักสูตร เด้วย Entอร( Web PagesWEB-INFtlds 3. สรางไฟลักสูตร (ท*ช้ในการป)*อ EJBTags.tld แลักสูตร ะ implements ด้วย Entงน การพัฒนฒนาโปรแกรมด้วย Entวย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
41.
41 Listing 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/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd id=WebApp_ID version=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 /taglib 4.1.2 สรางไฟลักสูตร ( Tag Handler 1 ไฟลักสูตร ( Tag Handler จะเป0นโปรแกรมจาวาท*พัฒนฒนาข.นเพัฒน)*อระบ'วา เม)*อเรยกใช้ในการป tag แลักสูตร วจะตองท4าค4าสง * อย1างไร ในท*นจะก4าหนด้วย Entช้ในการป)*อ Tag เป0น GetBook โด้วย Entยมขนตอนการพัฒนฒนาด้วย Entงน 1. คลักสูตร 7กขวาท* Project BookAppWeb จากนนเลักสูตร )อกค4าสง New → Class * ก4าหนด้วย Ent Package = tags , Class Name = GetBooks เลักสูตร )อก SuperClass = SimpleTagSupport 2. ท4าการ Implement Method ช้ในการป)*อ doTag( ) : Call Enterprise Bean โด้วย Entยใช้ในการป 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 โด้วย Entยการ Implements BooksFacade.java ด้วย Entงน public ListBooks findAll() { CriteriaQuery cq = em.getCriteriaBuilder().createQuery(); cq.select(cq.from(Books.class)); return em.createQuery(cq).getResultList(); } การพัฒนฒนาโปรแกรมด้วย Entวย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
42.
42
5. แกไข Books.java โด้วย Entยลักสูตร บของเด้วย Entมออกแลักสูตร วใส1 ช้ในการป'ด้วย Ent Query statement ลักสูตร งไป @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) }) Listing 4.3 โปรแกรม Books.java package 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; } } การพัฒนฒนาโปรแกรมด้วย Entวย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
43.
43
6. Implement source code ใน class GetBooks.java ท*เมธอด้วย Ent doTag() ด้วย Entงน 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.java package 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()); } } } การพัฒนฒนาโปรแกรมด้วย Entวย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
44.
44 4.1.3
เขยนโปรแกรม showBook.jsp 1. คลักสูตร กขวาท* BookAppWeb จากนนเลักสูตร )อกค4าสง New → JSP* ก4าหนด้วย Ent JSP File Name: เป0น showBook 2. ในหนาต1าง editor ใหแกไข source code ของไฟลักสูตร ( showBook.jsp ใหเป0นไปตาม Listing ท* 4.5 โปรแกรมนจะให,ลักสูตร ลักสูตร พัฒนธ(ด้วย Entงตวอย1างในรปท* 4.1 รปที่ 4.1 ผล็อกการสล็อกการสพัฒนาโปรธ์โปรแกรโปรแกรม showBook.jsp การพัฒนฒนาโปรแกรมด้วย Entวย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
45.
45 Listing 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 /html 4.2 ก รปรบปร งโปรแกรม CartManager.java โปรแกรม CartManager.java เด้วย Entมจะก4าหนด้วย Entใหอ1านขอมลักสูตร การใส1 รายการสนคาลักสูตร ง Cart ท*ลักสูตร ะรายการ เพัฒน)*อใหโปรแกรมสามารถอ1านขอมลักสูตร รายการสนคาท*จะเก0บอย1ในตวแปรอะเรย(ช้ในการปนด้วย Ent String ท*อาจมหลักสูตร ายรายการซึ่งมี E.*ง ถกเลักสูตร )อกมาจาก checkbox ท*อย1ในหนา showBook.jsp ได้วย Ent โด้วย Entยใหแกไข source code ในไฟลักสูตร ( CartManager.java ส1 วน Business Logic ของการเพัฒน*มขอมลักสูตร ด้วย Entงน 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)); } } การพัฒนฒนาโปรแกรมด้วย Entวย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
Download now