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

3,104 views

Published on

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
3,104
On SlideShare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
298
Comments
1
Likes
3
Embeds 0
No embeds

No notes for slide

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

  1. 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. 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. 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. 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. 5 รปที่ 1.1 การสราง Enterprise Application Projectการพัฒนฒนาโปรแกรมด้วย Enterprise วย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  6. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 29การพัฒนฒนาโปรแกรมด้วย Enterprise วย Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  30. 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. 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. 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. 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. 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. 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. 36. 363.5.1 การพัฒนฒนาโปรแกรม findBook.html โปรแกรม findBook.html เป0นเว0บเพัฒนจท*ใช้ในการประกอแสด้วย Enterprise งฟอร(มส4าหรบให,ใช้ในการประกอปอน isbn ของหนงส)อโด้วย Enterprise à

×