SlideShare ist ein Scribd-Unternehmen logo
1 von 47
Downloaden Sie, um offline zu lesen
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



āļāļēāļĢāļžāļąāļ’āļ™āļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ”āđ‰āļ§āļĒ Enterprise āļ§āļĒ Enterprise Java Bean 3.0                   Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
2




                                                                                                                                                     āļšāļ—āļ™āļģ

             āđ€āļ­āļāļŠāļēāļĢāļ™āđƒāļŠāđ‰āđƒāļ™āļāļēāļĢāļ›āļĢāļ°āļāļ­āđƒāļ™āļāļēāļĢāļ›āļĢāļ°āļāļ­āļšāļāļēāļĢāļŠāļ­āļ™āļ§āļŠāđ‰āđƒāļ™āļāļēāļĢāļ›āļĢāļ°āļāļ­āļē Java 301 : EJB 3.0 āļ‚āļ­āļ‡āļŦāļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻāļāļŠāļ•āļĢ Mini Master of Java
Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļąāļāļŠāļđāļ•āļĢ 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




āļŠāļēāļĢāļšāļąāļāļ
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 3.0	36x1King  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




āļāļēāļĢāļžāļąāļ’āļ™āļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ”āđ‰āļ§āļĒ Enterprise āļ§āļĒ Enterprise Java Bean 3.0                                             Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
4

                             Exercise 1 Stateless Session Bean Using EJB 3.0

                       āđāļšāļš/.āļāļŦāļ”āđ‰āļ§āļĒ Enterprise āļ™āđ€āļ›0āļ™āļāļēāļĢāļžāļąāļ’āļ™āļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄ Enterprise Java Bean (EJB) āđ‚āļ”āđ‰āļ§āļĒ Enterprise āļĒāđƒāļŠāđ‰āđƒāļ™āļāļēāļĢāļ›āļĢāļ°āļāļ­ EJB 3.0 āļŠāļĢāļēāļ‡ Session
Bean āđāļĨāļąāļāļŠāļđāļ•āļĢ 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 Application

1.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




                                                          āļĢāļ›āļ—āļĩāđˆ  1.1 āļāļēāļĢāļŠāļĢāļēāļ‡ Enterprise Application Project



āļāļēāļĢāļžāļąāļ’āļ™āļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ”āđ‰āļ§āļĒ Enterprise āļ§āļĒ Enterprise Java Bean 3.0                            Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
6


1.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


        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

Listing 1.1 āļ›āļĢāļ°āļāļēāļĻ Signature Method āļ—* Interface āļ—āļ‡ Local āđāļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻāļ° 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 āđ€āļāļ”āđ‰āļ§āļĒ 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

1.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

        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

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 āļˆāļ°āđāļŠāļ”āđ‰āļ§āļĒ Enterprise āļ‡āļ‚āļ­āļ„āļ§āļēāļĄ Hello Thana āļ­āļ­āļāļĄāļē




āļāļēāļĢāļžāļąāļ’āļ™āļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ”āđ‰āļ§āļĒ Enterprise āļ§āļĒ Enterprise Java Bean 3.0   Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
12


1.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


1.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 Server

1.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




                                             āļĢāļ›āļ—āļĩāđˆ  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


1.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

        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

        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

        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

Source 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 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();



āļāļēāļĢāļžāļąāļ’āļ™āļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ”āđ‰āļ§āļĒ Enterprise āļ§āļĒ Enterprise Java Bean 3.0                                                                    Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
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


                              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.java

2.1           āļ āļĢāļžāļąāļ’āļ™āļ’āļ™āļģ āđ‚āļ›āļĢāđāļāļĢāļĄ Stateful Session Bean

       āđāļšāļš/.āļāļŦāļ”āđ‰āļ§āļĒ Enterprise āļ™āļˆāļ°āđƒāļŠāđ‰āđƒāļ™āļāļēāļĢāļ›āļĢāļ°āļāļ­āđ‚āļ›āļĢāđ€āļˆ0āļ„āđ€āļ”āđ‰āļ§āļĒ Enterprise āļĄ (SessionBeanDemo) āļ—*āļŠāļĢāļēāļ‡āđƒāļ™āđāļšāļš/.āļāđ‚āļ›āļĢāđāļāļĢāļĄ Session Bean Using
EJB 3.0 āđƒāļ™āļāļēāļĢāļŠāļĢāļēāļ‡ Stateful Session Bean āđ‚āļ”āđ‰āļ§āļĒ Enterprise āļĒāļĄāļ‚āļ™āļ•āļ­āļ™āđƒāļ™āļāļēāļĢāļžāļąāļ’āļ™āļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ™āđ„āļ”āđ‰āļ§āļĒ Enterprise āļ”āđ‰āļ§āļĒ Enterprise āļ‡āļ™

āļāļēāļĢāļžāļąāļ’āļ™āļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ”āđ‰āļ§āļĒ Enterprise āļ§āļĒ Enterprise Java Bean 3.0                                                                                           Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
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

        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.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();

                }




āļāļēāļĢāļžāļąāļ’āļ™āļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ”āđ‰āļ§āļĒ Enterprise āļ§āļĒ Enterprise Java Bean 3.0                                                              Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
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 āļ‚āļ­āļ‡ Cart
Bean āđƒāļ™āļāļēāļĢāđ€āļžāļąāļ’āļ™*āļĄāļĢāļēāļĒāļāļēāļĢāļĨāļąāļāļŠāļđāļ•āļĢ 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

        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.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); }


āļāļēāļĢāļžāļąāļ’āļ™āļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ”āđ‰āļ§āļĒ Enterprise āļ§āļĒ Enterprise Java Bean 3.0                                                                                       Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
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


                                                                                                  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 Application


3.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

3.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




āļāļēāļĢāļžāļąāļ’āļ™āļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ”āđ‰āļ§āļĒ Enterprise āļ§āļĒ Enterprise Java Bean 3.0   Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
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

        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

3.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

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;
                }

}




āļāļēāļĢāļžāļąāļ’āļ™āļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ”āđ‰āļ§āļĒ Enterprise āļ§āļĒ Enterprise Java Bean 3.0   Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
34

3.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

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
                    āđ‚āļ”āđ‰āļ§āļĒ 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.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) āđāļšāļš/.āļāļŦāļ”āđ‰āļ§āļĒ 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
Java EE Programming [EJB 3.0 and JPA] Using  Eclipse and JBoss
Java EE Programming [EJB 3.0 and JPA] Using  Eclipse and JBoss
Java EE Programming [EJB 3.0 and JPA] Using  Eclipse and JBoss
Java EE Programming [EJB 3.0 and JPA] Using  Eclipse and JBoss
Java EE Programming [EJB 3.0 and JPA] Using  Eclipse and JBoss
Java EE Programming [EJB 3.0 and JPA] Using  Eclipse and JBoss
Java EE Programming [EJB 3.0 and JPA] Using  Eclipse and JBoss
Java EE Programming [EJB 3.0 and JPA] Using  Eclipse and JBoss
Java EE Programming [EJB 3.0 and JPA] Using  Eclipse and JBoss
Java EE Programming [EJB 3.0 and JPA] Using  Eclipse and JBoss
Java EE Programming [EJB 3.0 and JPA] Using  Eclipse and JBoss
Java EE Programming [EJB 3.0 and JPA] Using  Eclipse and JBoss

Weitere ÃĪhnliche Inhalte

Was ist angesagt?

āđ‡Hand-on Exercise: Java Web Services using Eclipse + Tomcat & NetBeans + Glas...
āđ‡Hand-on Exercise: Java Web Services using Eclipse + Tomcat & NetBeans + Glas...āđ‡Hand-on Exercise: Java Web Services using Eclipse + Tomcat & NetBeans + Glas...
āđ‡Hand-on Exercise: Java Web Services using Eclipse + Tomcat & NetBeans + Glas...IMC Institute
 
āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļŠāļ·āđˆāļ­ AR Augmented Reality āļ”āđ‰āļ§āļĒ Unity + Vuforia
āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļŠāļ·āđˆāļ­ AR Augmented Reality āļ”āđ‰āļ§āļĒ Unity + VuforiaāļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļŠāļ·āđˆāļ­ AR Augmented Reality āļ”āđ‰āļ§āļĒ Unity + Vuforia
āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļŠāļ·āđˆāļ­ AR Augmented Reality āļ”āđ‰āļ§āļĒ Unity + VuforiaDr.Kridsanapong Lertbumroongchai
 
āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡ Apps for Android āļ”āđ‰āļ§āļĒ MIT App Inventor
āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡ Apps for Android āļ”āđ‰āļ§āļĒ MIT App InventorāļāļēāļĢāļŠāļĢāđ‰āļēāļ‡ Apps for Android āļ”āđ‰āļ§āļĒ MIT App Inventor
āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡ Apps for Android āļ”āđ‰āļ§āļĒ MIT App InventorSomchart Phaeumnart
 
āļŠāļ­āļ™āļ­āļ­āļ™āđ„āļĨāļ™āđŒāļ”āđ‰āļ§āļĒ OBS Studio
āļŠāļ­āļ™āļ­āļ­āļ™āđ„āļĨāļ™āđŒāļ”āđ‰āļ§āļĒ OBS StudioāļŠāļ­āļ™āļ­āļ­āļ™āđ„āļĨāļ™āđŒāļ”āđ‰āļ§āļĒ OBS Studio
āļŠāļ­āļ™āļ­āļ­āļ™āđ„āļĨāļ™āđŒāļ”āđ‰āļ§āļĒ OBS StudioDr.Kridsanapong Lertbumroongchai
 
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5Thanachart Numnonda
 
āđ€āļ­āļāļŠāļēāļĢāļ›āļĢāļ°āļāļ­āļšāļāļēāļĢāļ­āļšāļĢāļĄ Adroidpdf
āđ€āļ­āļāļŠāļēāļĢāļ›āļĢāļ°āļāļ­āļšāļāļēāļĢāļ­āļšāļĢāļĄ Adroidpdfāđ€āļ­āļāļŠāļēāļĢāļ›āļĢāļ°āļāļ­āļšāļāļēāļĢāļ­āļšāļĢāļĄ Adroidpdf
āđ€āļ­āļāļŠāļēāļĢāļ›āļĢāļ°āļāļ­āļšāļāļēāļĢāļ­āļšāļĢāļĄ AdroidpdfWeerachat Martluplao
 
āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļŠāļĢāļ°āļšāļšāļ™āļģāļŠāļĄāļ”āđ‰āļ§āļĒāđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāđ€āļŠāļĄāļ·āļ­āļ™āļˆāļĢāļīāļ‡ 3D Vista
āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļŠāļĢāļ°āļšāļšāļ™āļģāļŠāļĄāļ”āđ‰āļ§āļĒāđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāđ€āļŠāļĄāļ·āļ­āļ™āļˆāļĢāļīāļ‡ 3D VistaāļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļŠāļĢāļ°āļšāļšāļ™āļģāļŠāļĄāļ”āđ‰āļ§āļĒāđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāđ€āļŠāļĄāļ·āļ­āļ™āļˆāļĢāļīāļ‡ 3D Vista
āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļŠāļĢāļ°āļšāļšāļ™āļģāļŠāļĄāļ”āđ‰āļ§āļĒāđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāđ€āļŠāļĄāļ·āļ­āļ™āļˆāļĢāļīāļ‡ 3D VistaDr.Kridsanapong Lertbumroongchai
 
āļ„āļđāđˆāļĄāļ·āļ­ Courselab
āļ„āļđāđˆāļĄāļ·āļ­ Courselabāļ„āļđāđˆāļĄāļ·āļ­ Courselab
āļ„āļđāđˆāļĄāļ·āļ­ CourselabNorasit Plengrudsamee
 
Course lap
Course lapCourse lap
Course lapkruood
 
āļ‡āļēāļ™āļāļĨāļļāđˆāļĄ āđ€āļĢāļ·āđˆāļ­āļ‡ You tube
āļ‡āļēāļ™āļāļĨāļļāđˆāļĄ āđ€āļĢāļ·āđˆāļ­āļ‡ You tubeāļ‡āļēāļ™āļāļĨāļļāđˆāļĄ āđ€āļĢāļ·āđˆāļ­āļ‡ You tube
āļ‡āļēāļ™āļāļĨāļļāđˆāļĄ āđ€āļĢāļ·āđˆāļ­āļ‡ You tubeGuDream Saicheua
 
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeansJava Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeansSoftware Park Thailand
 
āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļ§āļīāļ”āļĩāđ‚āļ­āļŠāļ­āļ™āļ­āļ­āļ™āđ„āļĨāļ™āđŒāļ”āđ‰āļ§āļĒ Camtasia āđāļĨāļ°āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļŠāđˆāļ­āļ‡ YouTube
āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļ§āļīāļ”āļĩāđ‚āļ­āļŠāļ­āļ™āļ­āļ­āļ™āđ„āļĨāļ™āđŒāļ”āđ‰āļ§āļĒ Camtasia āđāļĨāļ°āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļŠāđˆāļ­āļ‡ YouTubeāļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļ§āļīāļ”āļĩāđ‚āļ­āļŠāļ­āļ™āļ­āļ­āļ™āđ„āļĨāļ™āđŒāļ”āđ‰āļ§āļĒ Camtasia āđāļĨāļ°āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļŠāđˆāļ­āļ‡ YouTube
āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļ§āļīāļ”āļĩāđ‚āļ­āļŠāļ­āļ™āļ­āļ­āļ™āđ„āļĨāļ™āđŒāļ”āđ‰āļ§āļĒ Camtasia āđāļĨāļ°āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļŠāđˆāļ­āļ‡ YouTubeDr.Kridsanapong Lertbumroongchai
 
āļŦāļ™āļąāļ‡āļŠāļ·āļ­ Yii Framework Application Workshop āđ€āļĨāđˆāļĄ 1
āļŦāļ™āļąāļ‡āļŠāļ·āļ­ Yii Framework Application Workshop āđ€āļĨāđˆāļĄ 1āļŦāļ™āļąāļ‡āļŠāļ·āļ­ Yii Framework Application Workshop āđ€āļĨāđˆāļĄ 1
āļŦāļ™āļąāļ‡āļŠāļ·āļ­ Yii Framework Application Workshop āđ€āļĨāđˆāļĄ 1Manop Kongoon
 
āđƒāļšāļ„āļ§āļēāļĄāļĢāļđāđ‰āļ—āļĩāđˆ 4 āđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™āļŠāļĢāđ‰āļēāļ‡āđāļ­āļžāļĨāļīāđ€āļ„āļŠāļąāļ™āļ”āđ‰āļ§āļĒ mit app inventor
āđƒāļšāļ„āļ§āļēāļĄāļĢāļđāđ‰āļ—āļĩāđˆ 4 āđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™āļŠāļĢāđ‰āļēāļ‡āđāļ­āļžāļĨāļīāđ€āļ„āļŠāļąāļ™āļ”āđ‰āļ§āļĒ mit app inventorāđƒāļšāļ„āļ§āļēāļĄāļĢāļđāđ‰āļ—āļĩāđˆ 4 āđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™āļŠāļĢāđ‰āļēāļ‡āđāļ­āļžāļĨāļīāđ€āļ„āļŠāļąāļ™āļ”āđ‰āļ§āļĒ mit app inventor
āđƒāļšāļ„āļ§āļēāļĄāļĢāļđāđ‰āļ—āļĩāđˆ 4 āđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™āļŠāļĢāđ‰āļēāļ‡āđāļ­āļžāļĨāļīāđ€āļ„āļŠāļąāļ™āļ”āđ‰āļ§āļĒ mit app inventorNattapon
 

Was ist angesagt? (16)

āđ‡Hand-on Exercise: Java Web Services using Eclipse + Tomcat & NetBeans + Glas...
āđ‡Hand-on Exercise: Java Web Services using Eclipse + Tomcat & NetBeans + Glas...āđ‡Hand-on Exercise: Java Web Services using Eclipse + Tomcat & NetBeans + Glas...
āđ‡Hand-on Exercise: Java Web Services using Eclipse + Tomcat & NetBeans + Glas...
 
āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļŠāļ·āđˆāļ­ AR Augmented Reality āļ”āđ‰āļ§āļĒ Unity + Vuforia
āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļŠāļ·āđˆāļ­ AR Augmented Reality āļ”āđ‰āļ§āļĒ Unity + VuforiaāļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļŠāļ·āđˆāļ­ AR Augmented Reality āļ”āđ‰āļ§āļĒ Unity + Vuforia
āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļŠāļ·āđˆāļ­ AR Augmented Reality āļ”āđ‰āļ§āļĒ Unity + Vuforia
 
āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡ Apps for Android āļ”āđ‰āļ§āļĒ MIT App Inventor
āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡ Apps for Android āļ”āđ‰āļ§āļĒ MIT App InventorāļāļēāļĢāļŠāļĢāđ‰āļēāļ‡ Apps for Android āļ”āđ‰āļ§āļĒ MIT App Inventor
āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡ Apps for Android āļ”āđ‰āļ§āļĒ MIT App Inventor
 
āļŠāļ­āļ™āļ­āļ­āļ™āđ„āļĨāļ™āđŒāļ”āđ‰āļ§āļĒ OBS Studio
āļŠāļ­āļ™āļ­āļ­āļ™āđ„āļĨāļ™āđŒāļ”āđ‰āļ§āļĒ OBS StudioāļŠāļ­āļ™āļ­āļ­āļ™āđ„āļĨāļ™āđŒāļ”āđ‰āļ§āļĒ OBS Studio
āļŠāļ­āļ™āļ­āļ­āļ™āđ„āļĨāļ™āđŒāļ”āđ‰āļ§āļĒ OBS Studio
 
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
 
āļĄ.6 05 āđāļœāļ™āļāļēāļĢāļˆāļąāļ”āļāļēāļĢāđ€āļĢāļĩāļĒāļ™āļĢāļđāđ‰āļ—āļĩāđˆ 18 23
āļĄ.6  05 āđāļœāļ™āļāļēāļĢāļˆāļąāļ”āļāļēāļĢāđ€āļĢāļĩāļĒāļ™āļĢāļđāđ‰āļ—āļĩāđˆ 18 23āļĄ.6  05 āđāļœāļ™āļāļēāļĢāļˆāļąāļ”āļāļēāļĢāđ€āļĢāļĩāļĒāļ™āļĢāļđāđ‰āļ—āļĩāđˆ 18 23
āļĄ.6 05 āđāļœāļ™āļāļēāļĢāļˆāļąāļ”āļāļēāļĢāđ€āļĢāļĩāļĒāļ™āļĢāļđāđ‰āļ—āļĩāđˆ 18 23
 
āđ€āļ­āļāļŠāļēāļĢāļ›āļĢāļ°āļāļ­āļšāļāļēāļĢāļ­āļšāļĢāļĄ Adroidpdf
āđ€āļ­āļāļŠāļēāļĢāļ›āļĢāļ°āļāļ­āļšāļāļēāļĢāļ­āļšāļĢāļĄ Adroidpdfāđ€āļ­āļāļŠāļēāļĢāļ›āļĢāļ°āļāļ­āļšāļāļēāļĢāļ­āļšāļĢāļĄ Adroidpdf
āđ€āļ­āļāļŠāļēāļĢāļ›āļĢāļ°āļāļ­āļšāļāļēāļĢāļ­āļšāļĢāļĄ Adroidpdf
 
āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļŠāļĢāļ°āļšāļšāļ™āļģāļŠāļĄāļ”āđ‰āļ§āļĒāđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāđ€āļŠāļĄāļ·āļ­āļ™āļˆāļĢāļīāļ‡ 3D Vista
āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļŠāļĢāļ°āļšāļšāļ™āļģāļŠāļĄāļ”āđ‰āļ§āļĒāđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāđ€āļŠāļĄāļ·āļ­āļ™āļˆāļĢāļīāļ‡ 3D VistaāļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļŠāļĢāļ°āļšāļšāļ™āļģāļŠāļĄāļ”āđ‰āļ§āļĒāđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāđ€āļŠāļĄāļ·āļ­āļ™āļˆāļĢāļīāļ‡ 3D Vista
āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļŠāļĢāļ°āļšāļšāļ™āļģāļŠāļĄāļ”āđ‰āļ§āļĒāđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāđ€āļŠāļĄāļ·āļ­āļ™āļˆāļĢāļīāļ‡ 3D Vista
 
āļ„āļđāđˆāļĄāļ·āļ­ Courselab
āļ„āļđāđˆāļĄāļ·āļ­ Courselabāļ„āļđāđˆāļĄāļ·āļ­ Courselab
āļ„āļđāđˆāļĄāļ·āļ­ Courselab
 
Course lap
Course lapCourse lap
Course lap
 
āļ„āļđāđˆāļĄāļ·āļ­āļāļēāļĢāđƒāļŠāđ‰āļ‡āļēāļ™āđ‚āļ›āļĢāđāļāļĢāļĄ CourseLab
āļ„āļđāđˆāļĄāļ·āļ­āļāļēāļĢāđƒāļŠāđ‰āļ‡āļēāļ™āđ‚āļ›āļĢāđāļāļĢāļĄ CourseLabāļ„āļđāđˆāļĄāļ·āļ­āļāļēāļĢāđƒāļŠāđ‰āļ‡āļēāļ™āđ‚āļ›āļĢāđāļāļĢāļĄ CourseLab
āļ„āļđāđˆāļĄāļ·āļ­āļāļēāļĢāđƒāļŠāđ‰āļ‡āļēāļ™āđ‚āļ›āļĢāđāļāļĢāļĄ CourseLab
 
āļ‡āļēāļ™āļāļĨāļļāđˆāļĄ āđ€āļĢāļ·āđˆāļ­āļ‡ You tube
āļ‡āļēāļ™āļāļĨāļļāđˆāļĄ āđ€āļĢāļ·āđˆāļ­āļ‡ You tubeāļ‡āļēāļ™āļāļĨāļļāđˆāļĄ āđ€āļĢāļ·āđˆāļ­āļ‡ You tube
āļ‡āļēāļ™āļāļĨāļļāđˆāļĄ āđ€āļĢāļ·āđˆāļ­āļ‡ You tube
 
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeansJava Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
 
āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļ§āļīāļ”āļĩāđ‚āļ­āļŠāļ­āļ™āļ­āļ­āļ™āđ„āļĨāļ™āđŒāļ”āđ‰āļ§āļĒ Camtasia āđāļĨāļ°āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļŠāđˆāļ­āļ‡ YouTube
āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļ§āļīāļ”āļĩāđ‚āļ­āļŠāļ­āļ™āļ­āļ­āļ™āđ„āļĨāļ™āđŒāļ”āđ‰āļ§āļĒ Camtasia āđāļĨāļ°āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļŠāđˆāļ­āļ‡ YouTubeāļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļ§āļīāļ”āļĩāđ‚āļ­āļŠāļ­āļ™āļ­āļ­āļ™āđ„āļĨāļ™āđŒāļ”āđ‰āļ§āļĒ Camtasia āđāļĨāļ°āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļŠāđˆāļ­āļ‡ YouTube
āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļ§āļīāļ”āļĩāđ‚āļ­āļŠāļ­āļ™āļ­āļ­āļ™āđ„āļĨāļ™āđŒāļ”āđ‰āļ§āļĒ Camtasia āđāļĨāļ°āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļŠāđˆāļ­āļ‡ YouTube
 
āļŦāļ™āļąāļ‡āļŠāļ·āļ­ Yii Framework Application Workshop āđ€āļĨāđˆāļĄ 1
āļŦāļ™āļąāļ‡āļŠāļ·āļ­ Yii Framework Application Workshop āđ€āļĨāđˆāļĄ 1āļŦāļ™āļąāļ‡āļŠāļ·āļ­ Yii Framework Application Workshop āđ€āļĨāđˆāļĄ 1
āļŦāļ™āļąāļ‡āļŠāļ·āļ­ Yii Framework Application Workshop āđ€āļĨāđˆāļĄ 1
 
āđƒāļšāļ„āļ§āļēāļĄāļĢāļđāđ‰āļ—āļĩāđˆ 4 āđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™āļŠāļĢāđ‰āļēāļ‡āđāļ­āļžāļĨāļīāđ€āļ„āļŠāļąāļ™āļ”āđ‰āļ§āļĒ mit app inventor
āđƒāļšāļ„āļ§āļēāļĄāļĢāļđāđ‰āļ—āļĩāđˆ 4 āđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™āļŠāļĢāđ‰āļēāļ‡āđāļ­āļžāļĨāļīāđ€āļ„āļŠāļąāļ™āļ”āđ‰āļ§āļĒ mit app inventorāđƒāļšāļ„āļ§āļēāļĄāļĢāļđāđ‰āļ—āļĩāđˆ 4 āđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™āļŠāļĢāđ‰āļēāļ‡āđāļ­āļžāļĨāļīāđ€āļ„āļŠāļąāļ™āļ”āđ‰āļ§āļĒ mit app inventor
āđƒāļšāļ„āļ§āļēāļĄāļĢāļđāđ‰āļ—āļĩāđˆ 4 āđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™āļŠāļĢāđ‰āļēāļ‡āđāļ­āļžāļĨāļīāđ€āļ„āļŠāļąāļ™āļ”āđ‰āļ§āļĒ mit app inventor
 

Andere mochten auch

ATCI : 25th Anniversary: Ever Onward; Dinner Talk 18 September 2014
ATCI : 25th Anniversary: Ever Onward; Dinner Talk 18 September 2014ATCI : 25th Anniversary: Ever Onward; Dinner Talk 18 September 2014
ATCI : 25th Anniversary: Ever Onward; Dinner Talk 18 September 2014IMC Institute
 
āđ‹Java Web Programming on Cloud Computing using Google App Engine
āđ‹Java Web Programming on Cloud Computing using Google App Engineāđ‹Java Web Programming on Cloud Computing using Google App Engine
āđ‹Java Web Programming on Cloud Computing using Google App EngineIMC Institute
 
Java Web Programming (JSP/Servlet) Using Eclipse and Tomcat
Java Web Programming (JSP/Servlet) Using  Eclipse and TomcatJava Web Programming (JSP/Servlet) Using  Eclipse and Tomcat
Java Web Programming (JSP/Servlet) Using Eclipse and TomcatIMC Institute
 
JEE Programming - 08 Enterprise Application Deployment
JEE Programming - 08 Enterprise Application DeploymentJEE Programming - 08 Enterprise Application Deployment
JEE Programming - 08 Enterprise Application DeploymentDanairat Thanabodithammachari
 
JEE Programming - 06 Web Application Deployment
JEE Programming - 06 Web Application DeploymentJEE Programming - 06 Web Application Deployment
JEE Programming - 06 Web Application DeploymentDanairat Thanabodithammachari
 
50 EJB 3 Best Practices in 50 Minutes - JavaOne 2014
50 EJB 3 Best Practices in 50 Minutes - JavaOne 201450 EJB 3 Best Practices in 50 Minutes - JavaOne 2014
50 EJB 3 Best Practices in 50 Minutes - JavaOne 2014Ryan Cuprak
 

Andere mochten auch (12)

ATCI : 25th Anniversary: Ever Onward; Dinner Talk 18 September 2014
ATCI : 25th Anniversary: Ever Onward; Dinner Talk 18 September 2014ATCI : 25th Anniversary: Ever Onward; Dinner Talk 18 September 2014
ATCI : 25th Anniversary: Ever Onward; Dinner Talk 18 September 2014
 
āđ‹Java Web Programming on Cloud Computing using Google App Engine
āđ‹Java Web Programming on Cloud Computing using Google App Engineāđ‹Java Web Programming on Cloud Computing using Google App Engine
āđ‹Java Web Programming on Cloud Computing using Google App Engine
 
Java Web Programming (JSP/Servlet) Using Eclipse and Tomcat
Java Web Programming (JSP/Servlet) Using  Eclipse and TomcatJava Web Programming (JSP/Servlet) Using  Eclipse and Tomcat
Java Web Programming (JSP/Servlet) Using Eclipse and Tomcat
 
JEE Programming - 05 JSP
JEE Programming - 05 JSPJEE Programming - 05 JSP
JEE Programming - 05 JSP
 
JEE Programming - 01 Introduction
JEE Programming - 01 IntroductionJEE Programming - 01 Introduction
JEE Programming - 01 Introduction
 
JEE Programming - 08 Enterprise Application Deployment
JEE Programming - 08 Enterprise Application DeploymentJEE Programming - 08 Enterprise Application Deployment
JEE Programming - 08 Enterprise Application Deployment
 
JEE Programming - 02 The Containers
JEE Programming - 02 The ContainersJEE Programming - 02 The Containers
JEE Programming - 02 The Containers
 
JEE Programming - 06 Web Application Deployment
JEE Programming - 06 Web Application DeploymentJEE Programming - 06 Web Application Deployment
JEE Programming - 06 Web Application Deployment
 
JEE Programming - 04 Java Servlets
JEE Programming - 04 Java ServletsJEE Programming - 04 Java Servlets
JEE Programming - 04 Java Servlets
 
JEE Programming - 07 EJB Programming
JEE Programming - 07 EJB ProgrammingJEE Programming - 07 EJB Programming
JEE Programming - 07 EJB Programming
 
JEE Programming - 03 Model View Controller
JEE Programming - 03 Model View ControllerJEE Programming - 03 Model View Controller
JEE Programming - 03 Model View Controller
 
50 EJB 3 Best Practices in 50 Minutes - JavaOne 2014
50 EJB 3 Best Practices in 50 Minutes - JavaOne 201450 EJB 3 Best Practices in 50 Minutes - JavaOne 2014
50 EJB 3 Best Practices in 50 Minutes - JavaOne 2014
 

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

āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢāđŒ āđ€āļœāļĒāđāļžāļĢāđˆāļ„āļ§āļēāļĄāļĢāļđāđ‰āļ­āļ­āļ™āđ„āļĨāļ™āđŒ2
āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢāđŒ āđ€āļœāļĒāđāļžāļĢāđˆāļ„āļ§āļēāļĄāļĢāļđāđ‰āļ­āļ­āļ™āđ„āļĨāļ™āđŒ2āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢāđŒ āđ€āļœāļĒāđāļžāļĢāđˆāļ„āļ§āļēāļĄāļĢāļđāđ‰āļ­āļ­āļ™āđ„āļĨāļ™āđŒ2
āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢāđŒ āđ€āļœāļĒāđāļžāļĢāđˆāļ„āļ§āļēāļĄāļĢāļđāđ‰āļ­āļ­āļ™āđ„āļĨāļ™āđŒ2fulk123
 
āđƒāļšāļ‡āļēāļ™āļ—āļĩāđˆ 8 āđ€āļĢāļ·āđˆāļ­āļ‡ āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ›āļĢāļ°āđ€āļ āļ— “āļāļēāļĢāļžāļąāļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ›āļĢāļ°āļĒāļļāļāļ•āđŒâ€
āđƒāļšāļ‡āļēāļ™āļ—āļĩāđˆ 8 āđ€āļĢāļ·āđˆāļ­āļ‡ āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ›āļĢāļ°āđ€āļ āļ— “āļāļēāļĢāļžāļąāļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ›āļĢāļ°āļĒāļļāļāļ•āđŒâ€āđƒāļšāļ‡āļēāļ™āļ—āļĩāđˆ 8 āđ€āļĢāļ·āđˆāļ­āļ‡ āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ›āļĢāļ°āđ€āļ āļ— “āļāļēāļĢāļžāļąāļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ›āļĢāļ°āļĒāļļāļāļ•āđŒâ€
āđƒāļšāļ‡āļēāļ™āļ—āļĩāđˆ 8 āđ€āļĢāļ·āđˆāļ­āļ‡ āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ›āļĢāļ°āđ€āļ āļ— “āļāļēāļĢāļžāļąāļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ›āļĢāļ°āļĒāļļāļāļ•āđŒâ€Justice MengKing
 
āļœāļĨāļ‡āļēāļ™āļ™āļąāļāļĻāļķāļāļĐāļēāļ§āļīāļŠāļēāđ‚āļ„āļĢāļ‡āļ‡āļēāļ™
āļœāļĨāļ‡āļēāļ™āļ™āļąāļāļĻāļķāļāļĐāļēāļ§āļīāļŠāļēāđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļœāļĨāļ‡āļēāļ™āļ™āļąāļāļĻāļķāļāļĐāļēāļ§āļīāļŠāļēāđ‚āļ„āļĢāļ‡āļ‡āļēāļ™
āļœāļĨāļ‡āļēāļ™āļ™āļąāļāļĻāļķāļāļĐāļēāļ§āļīāļŠāļēāđ‚āļ„āļĢāļ‡āļ‡āļēāļ™AjBenny Pong
 
āđƒāļšāļ‡āļēāļ™āļ—āļĩāđˆ 8 āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ›āļĢāļ°āđ€āļ āļ— āļāļēāļĢāļžāļąāļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ›āļĢāļ°āļĒāļļāļāļ•āđŒ
āđƒāļšāļ‡āļēāļ™āļ—āļĩāđˆ 8 āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ›āļĢāļ°āđ€āļ āļ— āļāļēāļĢāļžāļąāļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ›āļĢāļ°āļĒāļļāļāļ•āđŒāđƒāļšāļ‡āļēāļ™āļ—āļĩāđˆ 8 āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ›āļĢāļ°āđ€āļ āļ— āļāļēāļĢāļžāļąāļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ›āļĢāļ°āļĒāļļāļāļ•āđŒ
āđƒāļšāļ‡āļēāļ™āļ—āļĩāđˆ 8 āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ›āļĢāļ°āđ€āļ āļ— āļāļēāļĢāļžāļąāļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ›āļĢāļ°āļĒāļļāļāļ•āđŒMintra Pudprom
 
āđƒāļšāļ‡āļēāļ™āļ—āļĩāđˆ 8 āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ›āļĢāļ°āđ€āļ āļ— āļāļēāļĢāļžāļąāļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ›āļĢāļ°āļĒāļļāļāļ•āđŒ
āđƒāļšāļ‡āļēāļ™āļ—āļĩāđˆ 8 āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ›āļĢāļ°āđ€āļ āļ— āļāļēāļĢāļžāļąāļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ›āļĢāļ°āļĒāļļāļāļ•āđŒāđƒāļšāļ‡āļēāļ™āļ—āļĩāđˆ 8 āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ›āļĢāļ°āđ€āļ āļ— āļāļēāļĢāļžāļąāļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ›āļĢāļ°āļĒāļļāļāļ•āđŒ
āđƒāļšāļ‡āļēāļ™āļ—āļĩāđˆ 8 āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ›āļĢāļ°āđ€āļ āļ— āļāļēāļĢāļžāļąāļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ›āļĢāļ°āļĒāļļāļāļ•āđŒKaRn Tik Tok
 
āđƒāļšāļ‡āļēāļ™āļ—āļĩāđˆ 8 āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ›āļĢāļ°āđ€āļ āļ— āļāļēāļĢāļžāļąāļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ›āļĢāļ°āļĒāļļāļāļ•āđŒ
āđƒāļšāļ‡āļēāļ™āļ—āļĩāđˆ 8 āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ›āļĢāļ°āđ€āļ āļ— āļāļēāļĢāļžāļąāļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ›āļĢāļ°āļĒāļļāļāļ•āđŒāđƒāļšāļ‡āļēāļ™āļ—āļĩāđˆ 8 āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ›āļĢāļ°āđ€āļ āļ— āļāļēāļĢāļžāļąāļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ›āļĢāļ°āļĒāļļāļāļ•āđŒ
āđƒāļšāļ‡āļēāļ™āļ—āļĩāđˆ 8 āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ›āļĢāļ°āđ€āļ āļ— āļāļēāļĢāļžāļąāļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ›āļĢāļ°āļĒāļļāļāļ•āđŒSoldic Kalayanee
 
āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™
āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™
āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™I'Dear Na-Dear
 
āđ‚āļ„āļĢāļ‡āļĢāđˆāļēāļ‡āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ„āļ­āļĄ āđ€āļĢāļ·āđˆāļ­āļ‡ āļāļ§āđˆāļēāļˆāļ°āđ€āļ›āđ‡āļ™ Apple inc.
āđ‚āļ„āļĢāļ‡āļĢāđˆāļēāļ‡āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ„āļ­āļĄ āđ€āļĢāļ·āđˆāļ­āļ‡ āļāļ§āđˆāļēāļˆāļ°āđ€āļ›āđ‡āļ™ Apple inc. āđ‚āļ„āļĢāļ‡āļĢāđˆāļēāļ‡āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ„āļ­āļĄ āđ€āļĢāļ·āđˆāļ­āļ‡ āļāļ§āđˆāļēāļˆāļ°āđ€āļ›āđ‡āļ™ Apple inc.
āđ‚āļ„āļĢāļ‡āļĢāđˆāļēāļ‡āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ„āļ­āļĄ āđ€āļĢāļ·āđˆāļ­āļ‡ āļāļ§āđˆāļēāļˆāļ°āđ€āļ›āđ‡āļ™ Apple inc. Thanatchaporn Yawichai
 
āļĢāļđāļ›āđ€āļĨāđˆāļĄāļ§āļīāļŠāļēāđ‚āļ„āļĢāļ‡āļ‡āļēāļ™
āļĢāļđāļ›āđ€āļĨāđˆāļĄāļ§āļīāļŠāļēāđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļĢāļđāļ›āđ€āļĨāđˆāļĄāļ§āļīāļŠāļēāđ‚āļ„āļĢāļ‡āļ‡āļēāļ™
āļĢāļđāļ›āđ€āļĨāđˆāļĄāļ§āļīāļŠāļēāđ‚āļ„āļĢāļ‡āļ‡āļēāļ™AjBenny Pong
 
āļĢāļđāļ›āđ€āļĨāđˆāļĄāļ§āļīāļŠāļēāđ‚āļ„āļĢāļ‡āļ‡āļēāļ™
āļĢāļđāļ›āđ€āļĨāđˆāļĄāļ§āļīāļŠāļēāđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļĢāļđāļ›āđ€āļĨāđˆāļĄāļ§āļīāļŠāļēāđ‚āļ„āļĢāļ‡āļ‡āļēāļ™
āļĢāļđāļ›āđ€āļĨāđˆāļĄāļ§āļīāļŠāļēāđ‚āļ„āļĢāļ‡āļ‡āļēāļ™AjBenny Pong
 
āļĢāļđāļ›āđ€āļĨāđˆāļĄāļ§āļīāļŠāļēāđ‚āļ„āļĢāļ‡āļ‡āļēāļ™
āļĢāļđāļ›āđ€āļĨāđˆāļĄāļ§āļīāļŠāļēāđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļĢāļđāļ›āđ€āļĨāđˆāļĄāļ§āļīāļŠāļēāđ‚āļ„āļĢāļ‡āļ‡āļēāļ™
āļĢāļđāļ›āđ€āļĨāđˆāļĄāļ§āļīāļŠāļēāđ‚āļ„āļĢāļ‡āļ‡āļēāļ™AjBenny Pong
 
āđƒāļšāļ‡āļēāļ™āļ—āļĩāđˆ 7 āđ€āļĢāļ·āđˆāļ­āļ‡ āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ›āļĢāļ°āđ€āļ āļ—āļāļēāļĢāļ›āļĢāļ°āļĒāļļāļāļ•āđŒāđƒāļŠāđ‰āļ‡āļēāļ™
āđƒāļšāļ‡āļēāļ™āļ—āļĩāđˆ 7 āđ€āļĢāļ·āđˆāļ­āļ‡ āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ›āļĢāļ°āđ€āļ āļ—āļāļēāļĢāļ›āļĢāļ°āļĒāļļāļāļ•āđŒāđƒāļŠāđ‰āļ‡āļēāļ™āđƒāļšāļ‡āļēāļ™āļ—āļĩāđˆ 7 āđ€āļĢāļ·āđˆāļ­āļ‡ āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ›āļĢāļ°āđ€āļ āļ—āļāļēāļĢāļ›āļĢāļ°āļĒāļļāļāļ•āđŒāđƒāļŠāđ‰āļ‡āļēāļ™
āđƒāļšāļ‡āļēāļ™āļ—āļĩāđˆ 7 āđ€āļĢāļ·āđˆāļ­āļ‡ āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ›āļĢāļ°āđ€āļ āļ—āļāļēāļĢāļ›āļĢāļ°āļĒāļļāļāļ•āđŒāđƒāļŠāđ‰āļ‡āļēāļ™Soldic Kalayanee
 
āđƒāļšāļ‡āļēāļ™āļ—āļĩāđˆ 7 āđ€āļĢāļ·āđˆāļ­āļ‡ āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ›āļĢāļ°āđ€āļ āļ—āļāļēāļĢāļ›āļĢāļ°āļĒāļļāļāļ•āđŒāđƒāļŠāđ‰āļ‡āļēāļ™
āđƒāļšāļ‡āļēāļ™āļ—āļĩāđˆ 7 āđ€āļĢāļ·āđˆāļ­āļ‡ āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ›āļĢāļ°āđ€āļ āļ—āļāļēāļĢāļ›āļĢāļ°āļĒāļļāļāļ•āđŒāđƒāļŠāđ‰āļ‡āļēāļ™āđƒāļšāļ‡āļēāļ™āļ—āļĩāđˆ 7 āđ€āļĢāļ·āđˆāļ­āļ‡ āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ›āļĢāļ°āđ€āļ āļ—āļāļēāļĢāļ›āļĢāļ°āļĒāļļāļāļ•āđŒāđƒāļŠāđ‰āļ‡āļēāļ™
āđƒāļšāļ‡āļēāļ™āļ—āļĩāđˆ 7 āđ€āļĢāļ·āđˆāļ­āļ‡ āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ›āļĢāļ°āđ€āļ āļ—āļāļēāļĢāļ›āļĢāļ°āļĒāļļāļāļ•āđŒāđƒāļŠāđ‰āļ‡āļēāļ™Mintra Pudprom
 
āđƒāļšāļ‡āļēāļ™āļ—āļĩāđˆ 7 āđ€āļĢāļ·āđˆāļ­āļ‡ āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ›āļĢāļ°āđ€āļ āļ—āļāļēāļĢāļ›āļĢāļ°āļĒāļļāļāļ•āđŒāđƒāļŠāđ‰āļ‡āļēāļ™
āđƒāļšāļ‡āļēāļ™āļ—āļĩāđˆ 7 āđ€āļĢāļ·āđˆāļ­āļ‡ āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ›āļĢāļ°āđ€āļ āļ—āļāļēāļĢāļ›āļĢāļ°āļĒāļļāļāļ•āđŒāđƒāļŠāđ‰āļ‡āļēāļ™āđƒāļšāļ‡āļēāļ™āļ—āļĩāđˆ 7 āđ€āļĢāļ·āđˆāļ­āļ‡ āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ›āļĢāļ°āđ€āļ āļ—āļāļēāļĢāļ›āļĢāļ°āļĒāļļāļāļ•āđŒāđƒāļŠāđ‰āļ‡āļēāļ™
āđƒāļšāļ‡āļēāļ™āļ—āļĩāđˆ 7 āđ€āļĢāļ·āđˆāļ­āļ‡ āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ›āļĢāļ°āđ€āļ āļ—āļāļēāļĢāļ›āļĢāļ°āļĒāļļāļāļ•āđŒāđƒāļŠāđ‰āļ‡āļēāļ™KaRn Tik Tok
 
āđ‚āļ„āļĢāļ‡āļāļēāļĢāļ­āļšāļĢāļĄāļāļēāļĢāļœāļĨāļīāļ•āļŠāļ·āđˆāļ­āļ­āļ­āļ™āđ„āļĨāļ™āđŒ
āđ‚āļ„āļĢāļ‡āļāļēāļĢāļ­āļšāļĢāļĄāļāļēāļĢāļœāļĨāļīāļ•āļŠāļ·āđˆāļ­āļ­āļ­āļ™āđ„āļĨāļ™āđŒāđ‚āļ„āļĢāļ‡āļāļēāļĢāļ­āļšāļĢāļĄāļāļēāļĢāļœāļĨāļīāļ•āļŠāļ·āđˆāļ­āļ­āļ­āļ™āđ„āļĨāļ™āđŒ
āđ‚āļ„āļĢāļ‡āļāļēāļĢāļ­āļšāļĢāļĄāļāļēāļĢāļœāļĨāļīāļ•āļŠāļ·āđˆāļ­āļ­āļ­āļ™āđ„āļĨāļ™āđŒtassanee chaicharoen
 

Ähnlich wie Java EE Programming [EJB 3.0 and JPA] Using Eclipse and JBoss (20)

āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢāđŒ āđ€āļœāļĒāđāļžāļĢāđˆāļ„āļ§āļēāļĄāļĢāļđāđ‰āļ­āļ­āļ™āđ„āļĨāļ™āđŒ2
āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢāđŒ āđ€āļœāļĒāđāļžāļĢāđˆāļ„āļ§āļēāļĄāļĢāļđāđ‰āļ­āļ­āļ™āđ„āļĨāļ™āđŒ2āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢāđŒ āđ€āļœāļĒāđāļžāļĢāđˆāļ„āļ§āļēāļĄāļĢāļđāđ‰āļ­āļ­āļ™āđ„āļĨāļ™āđŒ2
āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢāđŒ āđ€āļœāļĒāđāļžāļĢāđˆāļ„āļ§āļēāļĄāļĢāļđāđ‰āļ­āļ­āļ™āđ„āļĨāļ™āđŒ2
 
āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™
āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™
āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™
 
āđƒāļšāļ‡āļēāļ™āļ—āļĩāđˆ 8 āđ€āļĢāļ·āđˆāļ­āļ‡ āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ›āļĢāļ°āđ€āļ āļ— “āļāļēāļĢāļžāļąāļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ›āļĢāļ°āļĒāļļāļāļ•āđŒâ€
āđƒāļšāļ‡āļēāļ™āļ—āļĩāđˆ 8 āđ€āļĢāļ·āđˆāļ­āļ‡ āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ›āļĢāļ°āđ€āļ āļ— “āļāļēāļĢāļžāļąāļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ›āļĢāļ°āļĒāļļāļāļ•āđŒâ€āđƒāļšāļ‡āļēāļ™āļ—āļĩāđˆ 8 āđ€āļĢāļ·āđˆāļ­āļ‡ āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ›āļĢāļ°āđ€āļ āļ— “āļāļēāļĢāļžāļąāļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ›āļĢāļ°āļĒāļļāļāļ•āđŒâ€
āđƒāļšāļ‡āļēāļ™āļ—āļĩāđˆ 8 āđ€āļĢāļ·āđˆāļ­āļ‡ āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ›āļĢāļ°āđ€āļ āļ— “āļāļēāļĢāļžāļąāļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ›āļĢāļ°āļĒāļļāļāļ•āđŒâ€
 
webprogramming eclipse-jsp
webprogramming eclipse-jspwebprogramming eclipse-jsp
webprogramming eclipse-jsp
 
āļœāļĨāļ‡āļēāļ™āļ™āļąāļāļĻāļķāļāļĐāļēāļ§āļīāļŠāļēāđ‚āļ„āļĢāļ‡āļ‡āļēāļ™
āļœāļĨāļ‡āļēāļ™āļ™āļąāļāļĻāļķāļāļĐāļēāļ§āļīāļŠāļēāđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļœāļĨāļ‡āļēāļ™āļ™āļąāļāļĻāļķāļāļĐāļēāļ§āļīāļŠāļēāđ‚āļ„āļĢāļ‡āļ‡āļēāļ™
āļœāļĨāļ‡āļēāļ™āļ™āļąāļāļĻāļķāļāļĐāļēāļ§āļīāļŠāļēāđ‚āļ„āļĢāļ‡āļ‡āļēāļ™
 
āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™
āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™
āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™
 
Book area
Book areaBook area
Book area
 
āđƒāļšāļ‡āļēāļ™āļ—āļĩāđˆ 8 āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ›āļĢāļ°āđ€āļ āļ— āļāļēāļĢāļžāļąāļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ›āļĢāļ°āļĒāļļāļāļ•āđŒ
āđƒāļšāļ‡āļēāļ™āļ—āļĩāđˆ 8 āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ›āļĢāļ°āđ€āļ āļ— āļāļēāļĢāļžāļąāļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ›āļĢāļ°āļĒāļļāļāļ•āđŒāđƒāļšāļ‡āļēāļ™āļ—āļĩāđˆ 8 āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ›āļĢāļ°āđ€āļ āļ— āļāļēāļĢāļžāļąāļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ›āļĢāļ°āļĒāļļāļāļ•āđŒ
āđƒāļšāļ‡āļēāļ™āļ—āļĩāđˆ 8 āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ›āļĢāļ°āđ€āļ āļ— āļāļēāļĢāļžāļąāļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ›āļĢāļ°āļĒāļļāļāļ•āđŒ
 
āđƒāļšāļ‡āļēāļ™āļ—āļĩāđˆ 8 āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ›āļĢāļ°āđ€āļ āļ— āļāļēāļĢāļžāļąāļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ›āļĢāļ°āļĒāļļāļāļ•āđŒ
āđƒāļšāļ‡āļēāļ™āļ—āļĩāđˆ 8 āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ›āļĢāļ°āđ€āļ āļ— āļāļēāļĢāļžāļąāļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ›āļĢāļ°āļĒāļļāļāļ•āđŒāđƒāļšāļ‡āļēāļ™āļ—āļĩāđˆ 8 āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ›āļĢāļ°āđ€āļ āļ— āļāļēāļĢāļžāļąāļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ›āļĢāļ°āļĒāļļāļāļ•āđŒ
āđƒāļšāļ‡āļēāļ™āļ—āļĩāđˆ 8 āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ›āļĢāļ°āđ€āļ āļ— āļāļēāļĢāļžāļąāļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ›āļĢāļ°āļĒāļļāļāļ•āđŒ
 
āđƒāļšāļ‡āļēāļ™āļ—āļĩāđˆ 8 āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ›āļĢāļ°āđ€āļ āļ— āļāļēāļĢāļžāļąāļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ›āļĢāļ°āļĒāļļāļāļ•āđŒ
āđƒāļšāļ‡āļēāļ™āļ—āļĩāđˆ 8 āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ›āļĢāļ°āđ€āļ āļ— āļāļēāļĢāļžāļąāļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ›āļĢāļ°āļĒāļļāļāļ•āđŒāđƒāļšāļ‡āļēāļ™āļ—āļĩāđˆ 8 āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ›āļĢāļ°āđ€āļ āļ— āļāļēāļĢāļžāļąāļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ›āļĢāļ°āļĒāļļāļāļ•āđŒ
āđƒāļšāļ‡āļēāļ™āļ—āļĩāđˆ 8 āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ›āļĢāļ°āđ€āļ āļ— āļāļēāļĢāļžāļąāļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ›āļĢāļ°āļĒāļļāļāļ•āđŒ
 
āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™
āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™
āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™
 
āđ‚āļ„āļĢāļ‡āļĢāđˆāļēāļ‡āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ„āļ­āļĄ āđ€āļĢāļ·āđˆāļ­āļ‡ āļāļ§āđˆāļēāļˆāļ°āđ€āļ›āđ‡āļ™ Apple inc.
āđ‚āļ„āļĢāļ‡āļĢāđˆāļēāļ‡āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ„āļ­āļĄ āđ€āļĢāļ·āđˆāļ­āļ‡ āļāļ§āđˆāļēāļˆāļ°āđ€āļ›āđ‡āļ™ Apple inc. āđ‚āļ„āļĢāļ‡āļĢāđˆāļēāļ‡āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ„āļ­āļĄ āđ€āļĢāļ·āđˆāļ­āļ‡ āļāļ§āđˆāļēāļˆāļ°āđ€āļ›āđ‡āļ™ Apple inc.
āđ‚āļ„āļĢāļ‡āļĢāđˆāļēāļ‡āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ„āļ­āļĄ āđ€āļĢāļ·āđˆāļ­āļ‡ āļāļ§āđˆāļēāļˆāļ°āđ€āļ›āđ‡āļ™ Apple inc.
 
P5202240039
P5202240039P5202240039
P5202240039
 
āļĢāļđāļ›āđ€āļĨāđˆāļĄāļ§āļīāļŠāļēāđ‚āļ„āļĢāļ‡āļ‡āļēāļ™
āļĢāļđāļ›āđ€āļĨāđˆāļĄāļ§āļīāļŠāļēāđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļĢāļđāļ›āđ€āļĨāđˆāļĄāļ§āļīāļŠāļēāđ‚āļ„āļĢāļ‡āļ‡āļēāļ™
āļĢāļđāļ›āđ€āļĨāđˆāļĄāļ§āļīāļŠāļēāđ‚āļ„āļĢāļ‡āļ‡āļēāļ™
 
āļĢāļđāļ›āđ€āļĨāđˆāļĄāļ§āļīāļŠāļēāđ‚āļ„āļĢāļ‡āļ‡āļēāļ™
āļĢāļđāļ›āđ€āļĨāđˆāļĄāļ§āļīāļŠāļēāđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļĢāļđāļ›āđ€āļĨāđˆāļĄāļ§āļīāļŠāļēāđ‚āļ„āļĢāļ‡āļ‡āļēāļ™
āļĢāļđāļ›āđ€āļĨāđˆāļĄāļ§āļīāļŠāļēāđ‚āļ„āļĢāļ‡āļ‡āļēāļ™
 
āļĢāļđāļ›āđ€āļĨāđˆāļĄāļ§āļīāļŠāļēāđ‚āļ„āļĢāļ‡āļ‡āļēāļ™
āļĢāļđāļ›āđ€āļĨāđˆāļĄāļ§āļīāļŠāļēāđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļĢāļđāļ›āđ€āļĨāđˆāļĄāļ§āļīāļŠāļēāđ‚āļ„āļĢāļ‡āļ‡āļēāļ™
āļĢāļđāļ›āđ€āļĨāđˆāļĄāļ§āļīāļŠāļēāđ‚āļ„āļĢāļ‡āļ‡āļēāļ™
 
āđƒāļšāļ‡āļēāļ™āļ—āļĩāđˆ 7 āđ€āļĢāļ·āđˆāļ­āļ‡ āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ›āļĢāļ°āđ€āļ āļ—āļāļēāļĢāļ›āļĢāļ°āļĒāļļāļāļ•āđŒāđƒāļŠāđ‰āļ‡āļēāļ™
āđƒāļšāļ‡āļēāļ™āļ—āļĩāđˆ 7 āđ€āļĢāļ·āđˆāļ­āļ‡ āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ›āļĢāļ°āđ€āļ āļ—āļāļēāļĢāļ›āļĢāļ°āļĒāļļāļāļ•āđŒāđƒāļŠāđ‰āļ‡āļēāļ™āđƒāļšāļ‡āļēāļ™āļ—āļĩāđˆ 7 āđ€āļĢāļ·āđˆāļ­āļ‡ āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ›āļĢāļ°āđ€āļ āļ—āļāļēāļĢāļ›āļĢāļ°āļĒāļļāļāļ•āđŒāđƒāļŠāđ‰āļ‡āļēāļ™
āđƒāļšāļ‡āļēāļ™āļ—āļĩāđˆ 7 āđ€āļĢāļ·āđˆāļ­āļ‡ āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ›āļĢāļ°āđ€āļ āļ—āļāļēāļĢāļ›āļĢāļ°āļĒāļļāļāļ•āđŒāđƒāļŠāđ‰āļ‡āļēāļ™
 
āđƒāļšāļ‡āļēāļ™āļ—āļĩāđˆ 7 āđ€āļĢāļ·āđˆāļ­āļ‡ āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ›āļĢāļ°āđ€āļ āļ—āļāļēāļĢāļ›āļĢāļ°āļĒāļļāļāļ•āđŒāđƒāļŠāđ‰āļ‡āļēāļ™
āđƒāļšāļ‡āļēāļ™āļ—āļĩāđˆ 7 āđ€āļĢāļ·āđˆāļ­āļ‡ āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ›āļĢāļ°āđ€āļ āļ—āļāļēāļĢāļ›āļĢāļ°āļĒāļļāļāļ•āđŒāđƒāļŠāđ‰āļ‡āļēāļ™āđƒāļšāļ‡āļēāļ™āļ—āļĩāđˆ 7 āđ€āļĢāļ·āđˆāļ­āļ‡ āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ›āļĢāļ°āđ€āļ āļ—āļāļēāļĢāļ›āļĢāļ°āļĒāļļāļāļ•āđŒāđƒāļŠāđ‰āļ‡āļēāļ™
āđƒāļšāļ‡āļēāļ™āļ—āļĩāđˆ 7 āđ€āļĢāļ·āđˆāļ­āļ‡ āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ›āļĢāļ°āđ€āļ āļ—āļāļēāļĢāļ›āļĢāļ°āļĒāļļāļāļ•āđŒāđƒāļŠāđ‰āļ‡āļēāļ™
 
āđƒāļšāļ‡āļēāļ™āļ—āļĩāđˆ 7 āđ€āļĢāļ·āđˆāļ­āļ‡ āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ›āļĢāļ°āđ€āļ āļ—āļāļēāļĢāļ›āļĢāļ°āļĒāļļāļāļ•āđŒāđƒāļŠāđ‰āļ‡āļēāļ™
āđƒāļšāļ‡āļēāļ™āļ—āļĩāđˆ 7 āđ€āļĢāļ·āđˆāļ­āļ‡ āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ›āļĢāļ°āđ€āļ āļ—āļāļēāļĢāļ›āļĢāļ°āļĒāļļāļāļ•āđŒāđƒāļŠāđ‰āļ‡āļēāļ™āđƒāļšāļ‡āļēāļ™āļ—āļĩāđˆ 7 āđ€āļĢāļ·āđˆāļ­āļ‡ āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ›āļĢāļ°āđ€āļ āļ—āļāļēāļĢāļ›āļĢāļ°āļĒāļļāļāļ•āđŒāđƒāļŠāđ‰āļ‡āļēāļ™
āđƒāļšāļ‡āļēāļ™āļ—āļĩāđˆ 7 āđ€āļĢāļ·āđˆāļ­āļ‡ āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ›āļĢāļ°āđ€āļ āļ—āļāļēāļĢāļ›āļĢāļ°āļĒāļļāļāļ•āđŒāđƒāļŠāđ‰āļ‡āļēāļ™
 
āđ‚āļ„āļĢāļ‡āļāļēāļĢāļ­āļšāļĢāļĄāļāļēāļĢāļœāļĨāļīāļ•āļŠāļ·āđˆāļ­āļ­āļ­āļ™āđ„āļĨāļ™āđŒ
āđ‚āļ„āļĢāļ‡āļāļēāļĢāļ­āļšāļĢāļĄāļāļēāļĢāļœāļĨāļīāļ•āļŠāļ·āđˆāļ­āļ­āļ­āļ™āđ„āļĨāļ™āđŒāđ‚āļ„āļĢāļ‡āļāļēāļĢāļ­āļšāļĢāļĄāļāļēāļĢāļœāļĨāļīāļ•āļŠāļ·āđˆāļ­āļ­āļ­āļ™āđ„āļĨāļ™āđŒ
āđ‚āļ„āļĢāļ‡āļāļēāļĢāļ­āļšāļĢāļĄāļāļēāļĢāļœāļĨāļīāļ•āļŠāļ·āđˆāļ­āļ­āļ­āļ™āđ„āļĨāļ™āđŒ
 

Mehr von IMC Institute

āļ™āļīāļ•āļĒāļŠāļēāļĢ Digital Trends āļ‰āļšāļąāļšāļ—āļĩāđˆ 14
āļ™āļīāļ•āļĒāļŠāļēāļĢ Digital Trends āļ‰āļšāļąāļšāļ—āļĩāđˆ 14āļ™āļīāļ•āļĒāļŠāļēāļĢ Digital Trends āļ‰āļšāļąāļšāļ—āļĩāđˆ 14
āļ™āļīāļ•āļĒāļŠāļēāļĢ Digital Trends āļ‰āļšāļąāļšāļ—āļĩāđˆ 14IMC Institute
 
Digital trends Vol 4 No. 13 Sep-Dec 2019
Digital trends Vol 4 No. 13  Sep-Dec 2019Digital trends Vol 4 No. 13  Sep-Dec 2019
Digital trends Vol 4 No. 13 Sep-Dec 2019IMC Institute
 
āļšāļ—āļ„āļ§āļēāļĄ The evolution of AI
āļšāļ—āļ„āļ§āļēāļĄ The evolution of AIāļšāļ—āļ„āļ§āļēāļĄ The evolution of AI
āļšāļ—āļ„āļ§āļēāļĄ The evolution of AIIMC Institute
 
IT Trends eMagazine Vol 4. No.12
IT Trends eMagazine  Vol 4. No.12IT Trends eMagazine  Vol 4. No.12
IT Trends eMagazine Vol 4. No.12IMC Institute
 
āđ€āļžāļĢāļēāļ°āđ€āļŦāļ•āļļāđƒāļ” Digitization āđ„āļĄāđˆāļ•āļ­āļšāđ‚āļˆāļ—āļĒāđŒ Digital Transformation
āđ€āļžāļĢāļēāļ°āđ€āļŦāļ•āļļāđƒāļ” Digitization āđ„āļĄāđˆāļ•āļ­āļšāđ‚āļˆāļ—āļĒāđŒ Digital Transformationāđ€āļžāļĢāļēāļ°āđ€āļŦāļ•āļļāđƒāļ” Digitization āđ„āļĄāđˆāļ•āļ­āļšāđ‚āļˆāļ—āļĒāđŒ Digital Transformation
āđ€āļžāļĢāļēāļ°āđ€āļŦāļ•āļļāđƒāļ” Digitization āđ„āļĄāđˆāļ•āļ­āļšāđ‚āļˆāļ—āļĒāđŒ Digital TransformationIMC Institute
 
IT Trends 2019: Putting Digital Transformation to Work
IT Trends 2019: Putting Digital Transformation to WorkIT Trends 2019: Putting Digital Transformation to Work
IT Trends 2019: Putting Digital Transformation to WorkIMC Institute
 
āļĄāļđāļĨāļ„āđˆāļēāļ•āļĨāļēāļ”āļ”āļīāļˆāļīāļ—āļąāļĨāđ„āļ—āļĒ 3 āļ­āļļāļ•āļŠāļēāļŦāļāļĢāļĢāļĄ
āļĄāļđāļĨāļ„āđˆāļēāļ•āļĨāļēāļ”āļ”āļīāļˆāļīāļ—āļąāļĨāđ„āļ—āļĒ 3 āļ­āļļāļ•āļŠāļēāļŦāļāļĢāļĢāļĄāļĄāļđāļĨāļ„āđˆāļēāļ•āļĨāļēāļ”āļ”āļīāļˆāļīāļ—āļąāļĨāđ„āļ—āļĒ 3 āļ­āļļāļ•āļŠāļēāļŦāļāļĢāļĢāļĄ
āļĄāļđāļĨāļ„āđˆāļēāļ•āļĨāļēāļ”āļ”āļīāļˆāļīāļ—āļąāļĨāđ„āļ—āļĒ 3 āļ­āļļāļ•āļŠāļēāļŦāļāļĢāļĢāļĄIMC Institute
 
IT Trends eMagazine Vol 4. No.11
IT Trends eMagazine  Vol 4. No.11IT Trends eMagazine  Vol 4. No.11
IT Trends eMagazine Vol 4. No.11IMC Institute
 
āđāļ™āļ§āļ—āļēāļ‡āļāļēāļĢāļ—āļģ Digital transformation
āđāļ™āļ§āļ—āļēāļ‡āļāļēāļĢāļ—āļģ Digital transformationāđāļ™āļ§āļ—āļēāļ‡āļāļēāļĢāļ—āļģ Digital transformation
āđāļ™āļ§āļ—āļēāļ‡āļāļēāļĢāļ—āļģ Digital transformationIMC Institute
 
āļšāļ—āļ„āļ§āļēāļĄ The New Silicon Valley
āļšāļ—āļ„āļ§āļēāļĄ The New Silicon Valleyāļšāļ—āļ„āļ§āļēāļĄ The New Silicon Valley
āļšāļ—āļ„āļ§āļēāļĄ The New Silicon ValleyIMC Institute
 
āļ™āļīāļ•āļĒāļŠāļēāļĢ IT Trends āļ‚āļ­āļ‡ IMC Institute āļ‰āļšāļąāļšāļ—āļĩāđˆ 10
āļ™āļīāļ•āļĒāļŠāļēāļĢ IT Trends āļ‚āļ­āļ‡  IMC Institute  āļ‰āļšāļąāļšāļ—āļĩāđˆ 10āļ™āļīāļ•āļĒāļŠāļēāļĢ IT Trends āļ‚āļ­āļ‡  IMC Institute  āļ‰āļšāļąāļšāļ—āļĩāđˆ 10
āļ™āļīāļ•āļĒāļŠāļēāļĢ IT Trends āļ‚āļ­āļ‡ IMC Institute āļ‰āļšāļąāļšāļ—āļĩāđˆ 10IMC Institute
 
āđāļ™āļ§āļ—āļēāļ‡āļāļēāļĢāļ—āļģ Digital transformation
āđāļ™āļ§āļ—āļēāļ‡āļāļēāļĢāļ—āļģ Digital transformationāđāļ™āļ§āļ—āļēāļ‡āļāļēāļĢāļ—āļģ Digital transformation
āđāļ™āļ§āļ—āļēāļ‡āļāļēāļĢāļ—āļģ Digital transformationIMC Institute
 
The Power of Big Data for a new economy (Sample)
The Power of Big Data for a new economy (Sample)The Power of Big Data for a new economy (Sample)
The Power of Big Data for a new economy (Sample)IMC Institute
 
āļšāļ—āļ„āļ§āļēāļĄ Robotics āđāļ™āļ§āđ‚āļ™āđ‰āļĄāđƒāļŦāļĄāđˆāļŠāļđāđˆāļšāļĢāļīāļāļēāļĢāđ€āļ‰āļžāļēāļ°āļ—āļēāļ‡
āļšāļ—āļ„āļ§āļēāļĄ Robotics āđāļ™āļ§āđ‚āļ™āđ‰āļĄāđƒāļŦāļĄāđˆāļŠāļđāđˆāļšāļĢāļīāļāļēāļĢāđ€āļ‰āļžāļēāļ°āļ—āļēāļ‡ āļšāļ—āļ„āļ§āļēāļĄ Robotics āđāļ™āļ§āđ‚āļ™āđ‰āļĄāđƒāļŦāļĄāđˆāļŠāļđāđˆāļšāļĢāļīāļāļēāļĢāđ€āļ‰āļžāļēāļ°āļ—āļēāļ‡
āļšāļ—āļ„āļ§āļēāļĄ Robotics āđāļ™āļ§āđ‚āļ™āđ‰āļĄāđƒāļŦāļĄāđˆāļŠāļđāđˆāļšāļĢāļīāļāļēāļĢāđ€āļ‰āļžāļēāļ°āļ—āļēāļ‡ IMC Institute
 
IT Trends eMagazine Vol 3. No.9
IT Trends eMagazine  Vol 3. No.9 IT Trends eMagazine  Vol 3. No.9
IT Trends eMagazine Vol 3. No.9 IMC Institute
 
Thailand software & software market survey 2016
Thailand software & software market survey 2016Thailand software & software market survey 2016
Thailand software & software market survey 2016IMC Institute
 
Developing Business Blockchain Applications on Hyperledger
Developing Business  Blockchain Applications on Hyperledger Developing Business  Blockchain Applications on Hyperledger
Developing Business Blockchain Applications on Hyperledger IMC Institute
 
Digital transformation @thanachart.org
Digital transformation @thanachart.orgDigital transformation @thanachart.org
Digital transformation @thanachart.orgIMC Institute
 
āļšāļ—āļ„āļ§āļēāļĄ Big Data āļˆāļēāļāļšāļĨāđ‡āļ­āļ thanachart.org
āļšāļ—āļ„āļ§āļēāļĄ Big Data āļˆāļēāļāļšāļĨāđ‡āļ­āļ thanachart.orgāļšāļ—āļ„āļ§āļēāļĄ Big Data āļˆāļēāļāļšāļĨāđ‡āļ­āļ thanachart.org
āļšāļ—āļ„āļ§āļēāļĄ Big Data āļˆāļēāļāļšāļĨāđ‡āļ­āļ thanachart.orgIMC Institute
 
āļāļĨāļĒāļļāļ—āļ˜āđŒ 5 āļ”āđ‰āļēāļ™āļāļąāļšāļāļēāļĢāļ—āļģ Digital Transformation
āļāļĨāļĒāļļāļ—āļ˜āđŒ 5 āļ”āđ‰āļēāļ™āļāļąāļšāļāļēāļĢāļ—āļģ Digital TransformationāļāļĨāļĒāļļāļ—āļ˜āđŒ 5 āļ”āđ‰āļēāļ™āļāļąāļšāļāļēāļĢāļ—āļģ Digital Transformation
āļāļĨāļĒāļļāļ—āļ˜āđŒ 5 āļ”āđ‰āļēāļ™āļāļąāļšāļāļēāļĢāļ—āļģ Digital TransformationIMC Institute
 

Mehr von IMC Institute (20)

āļ™āļīāļ•āļĒāļŠāļēāļĢ Digital Trends āļ‰āļšāļąāļšāļ—āļĩāđˆ 14
āļ™āļīāļ•āļĒāļŠāļēāļĢ Digital Trends āļ‰āļšāļąāļšāļ—āļĩāđˆ 14āļ™āļīāļ•āļĒāļŠāļēāļĢ Digital Trends āļ‰āļšāļąāļšāļ—āļĩāđˆ 14
āļ™āļīāļ•āļĒāļŠāļēāļĢ Digital Trends āļ‰āļšāļąāļšāļ—āļĩāđˆ 14
 
Digital trends Vol 4 No. 13 Sep-Dec 2019
Digital trends Vol 4 No. 13  Sep-Dec 2019Digital trends Vol 4 No. 13  Sep-Dec 2019
Digital trends Vol 4 No. 13 Sep-Dec 2019
 
āļšāļ—āļ„āļ§āļēāļĄ The evolution of AI
āļšāļ—āļ„āļ§āļēāļĄ The evolution of AIāļšāļ—āļ„āļ§āļēāļĄ The evolution of AI
āļšāļ—āļ„āļ§āļēāļĄ The evolution of AI
 
IT Trends eMagazine Vol 4. No.12
IT Trends eMagazine  Vol 4. No.12IT Trends eMagazine  Vol 4. No.12
IT Trends eMagazine Vol 4. No.12
 
āđ€āļžāļĢāļēāļ°āđ€āļŦāļ•āļļāđƒāļ” Digitization āđ„āļĄāđˆāļ•āļ­āļšāđ‚āļˆāļ—āļĒāđŒ Digital Transformation
āđ€āļžāļĢāļēāļ°āđ€āļŦāļ•āļļāđƒāļ” Digitization āđ„āļĄāđˆāļ•āļ­āļšāđ‚āļˆāļ—āļĒāđŒ Digital Transformationāđ€āļžāļĢāļēāļ°āđ€āļŦāļ•āļļāđƒāļ” Digitization āđ„āļĄāđˆāļ•āļ­āļšāđ‚āļˆāļ—āļĒāđŒ Digital Transformation
āđ€āļžāļĢāļēāļ°āđ€āļŦāļ•āļļāđƒāļ” Digitization āđ„āļĄāđˆāļ•āļ­āļšāđ‚āļˆāļ—āļĒāđŒ Digital Transformation
 
IT Trends 2019: Putting Digital Transformation to Work
IT Trends 2019: Putting Digital Transformation to WorkIT Trends 2019: Putting Digital Transformation to Work
IT Trends 2019: Putting Digital Transformation to Work
 
āļĄāļđāļĨāļ„āđˆāļēāļ•āļĨāļēāļ”āļ”āļīāļˆāļīāļ—āļąāļĨāđ„āļ—āļĒ 3 āļ­āļļāļ•āļŠāļēāļŦāļāļĢāļĢāļĄ
āļĄāļđāļĨāļ„āđˆāļēāļ•āļĨāļēāļ”āļ”āļīāļˆāļīāļ—āļąāļĨāđ„āļ—āļĒ 3 āļ­āļļāļ•āļŠāļēāļŦāļāļĢāļĢāļĄāļĄāļđāļĨāļ„āđˆāļēāļ•āļĨāļēāļ”āļ”āļīāļˆāļīāļ—āļąāļĨāđ„āļ—āļĒ 3 āļ­āļļāļ•āļŠāļēāļŦāļāļĢāļĢāļĄ
āļĄāļđāļĨāļ„āđˆāļēāļ•āļĨāļēāļ”āļ”āļīāļˆāļīāļ—āļąāļĨāđ„āļ—āļĒ 3 āļ­āļļāļ•āļŠāļēāļŦāļāļĢāļĢāļĄ
 
IT Trends eMagazine Vol 4. No.11
IT Trends eMagazine  Vol 4. No.11IT Trends eMagazine  Vol 4. No.11
IT Trends eMagazine Vol 4. No.11
 
āđāļ™āļ§āļ—āļēāļ‡āļāļēāļĢāļ—āļģ Digital transformation
āđāļ™āļ§āļ—āļēāļ‡āļāļēāļĢāļ—āļģ Digital transformationāđāļ™āļ§āļ—āļēāļ‡āļāļēāļĢāļ—āļģ Digital transformation
āđāļ™āļ§āļ—āļēāļ‡āļāļēāļĢāļ—āļģ Digital transformation
 
āļšāļ—āļ„āļ§āļēāļĄ The New Silicon Valley
āļšāļ—āļ„āļ§āļēāļĄ The New Silicon Valleyāļšāļ—āļ„āļ§āļēāļĄ The New Silicon Valley
āļšāļ—āļ„āļ§āļēāļĄ The New Silicon Valley
 
āļ™āļīāļ•āļĒāļŠāļēāļĢ IT Trends āļ‚āļ­āļ‡ IMC Institute āļ‰āļšāļąāļšāļ—āļĩāđˆ 10
āļ™āļīāļ•āļĒāļŠāļēāļĢ IT Trends āļ‚āļ­āļ‡  IMC Institute  āļ‰āļšāļąāļšāļ—āļĩāđˆ 10āļ™āļīāļ•āļĒāļŠāļēāļĢ IT Trends āļ‚āļ­āļ‡  IMC Institute  āļ‰āļšāļąāļšāļ—āļĩāđˆ 10
āļ™āļīāļ•āļĒāļŠāļēāļĢ IT Trends āļ‚āļ­āļ‡ IMC Institute āļ‰āļšāļąāļšāļ—āļĩāđˆ 10
 
āđāļ™āļ§āļ—āļēāļ‡āļāļēāļĢāļ—āļģ Digital transformation
āđāļ™āļ§āļ—āļēāļ‡āļāļēāļĢāļ—āļģ Digital transformationāđāļ™āļ§āļ—āļēāļ‡āļāļēāļĢāļ—āļģ Digital transformation
āđāļ™āļ§āļ—āļēāļ‡āļāļēāļĢāļ—āļģ Digital transformation
 
The Power of Big Data for a new economy (Sample)
The Power of Big Data for a new economy (Sample)The Power of Big Data for a new economy (Sample)
The Power of Big Data for a new economy (Sample)
 
āļšāļ—āļ„āļ§āļēāļĄ Robotics āđāļ™āļ§āđ‚āļ™āđ‰āļĄāđƒāļŦāļĄāđˆāļŠāļđāđˆāļšāļĢāļīāļāļēāļĢāđ€āļ‰āļžāļēāļ°āļ—āļēāļ‡
āļšāļ—āļ„āļ§āļēāļĄ Robotics āđāļ™āļ§āđ‚āļ™āđ‰āļĄāđƒāļŦāļĄāđˆāļŠāļđāđˆāļšāļĢāļīāļāļēāļĢāđ€āļ‰āļžāļēāļ°āļ—āļēāļ‡ āļšāļ—āļ„āļ§āļēāļĄ Robotics āđāļ™āļ§āđ‚āļ™āđ‰āļĄāđƒāļŦāļĄāđˆāļŠāļđāđˆāļšāļĢāļīāļāļēāļĢāđ€āļ‰āļžāļēāļ°āļ—āļēāļ‡
āļšāļ—āļ„āļ§āļēāļĄ Robotics āđāļ™āļ§āđ‚āļ™āđ‰āļĄāđƒāļŦāļĄāđˆāļŠāļđāđˆāļšāļĢāļīāļāļēāļĢāđ€āļ‰āļžāļēāļ°āļ—āļēāļ‡
 
IT Trends eMagazine Vol 3. No.9
IT Trends eMagazine  Vol 3. No.9 IT Trends eMagazine  Vol 3. No.9
IT Trends eMagazine Vol 3. No.9
 
Thailand software & software market survey 2016
Thailand software & software market survey 2016Thailand software & software market survey 2016
Thailand software & software market survey 2016
 
Developing Business Blockchain Applications on Hyperledger
Developing Business  Blockchain Applications on Hyperledger Developing Business  Blockchain Applications on Hyperledger
Developing Business Blockchain Applications on Hyperledger
 
Digital transformation @thanachart.org
Digital transformation @thanachart.orgDigital transformation @thanachart.org
Digital transformation @thanachart.org
 
āļšāļ—āļ„āļ§āļēāļĄ Big Data āļˆāļēāļāļšāļĨāđ‡āļ­āļ thanachart.org
āļšāļ—āļ„āļ§āļēāļĄ Big Data āļˆāļēāļāļšāļĨāđ‡āļ­āļ thanachart.orgāļšāļ—āļ„āļ§āļēāļĄ Big Data āļˆāļēāļāļšāļĨāđ‡āļ­āļ thanachart.org
āļšāļ—āļ„āļ§āļēāļĄ Big Data āļˆāļēāļāļšāļĨāđ‡āļ­āļ thanachart.org
 
āļāļĨāļĒāļļāļ—āļ˜āđŒ 5 āļ”āđ‰āļēāļ™āļāļąāļšāļāļēāļĢāļ—āļģ Digital Transformation
āļāļĨāļĒāļļāļ—āļ˜āđŒ 5 āļ”āđ‰āļēāļ™āļāļąāļšāļāļēāļĢāļ—āļģ Digital TransformationāļāļĨāļĒāļļāļ—āļ˜āđŒ 5 āļ”āđ‰āļēāļ™āļāļąāļšāļāļēāļĢāļ—āļģ Digital Transformation
āļāļĨāļĒāļļāļ—āļ˜āđŒ 5 āļ”āđ‰āļēāļ™āļāļąāļšāļāļēāļĢāļ—āļģ Digital Transformation
 

Java EE Programming [EJB 3.0 and JPA] Using Eclipse and 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 āļāļēāļĢāļžāļąāļ’āļ™āļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ”āđ‰āļ§āļĒ Enterprise āļ§āļĒ Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 2. 2 āļšāļ—āļ™āļģ āđ€āļ­āļāļŠāļēāļĢāļ™āđƒāļŠāđ‰āđƒāļ™āļāļēāļĢāļ›āļĢāļ°āļāļ­āđƒāļ™āļāļēāļĢāļ›āļĢāļ°āļāļ­āļšāļāļēāļĢāļŠāļ­āļ™āļ§āļŠāđ‰āđƒāļ™āļāļēāļĢāļ›āļĢāļ°āļāļ­āļē Java 301 : EJB 3.0 āļ‚āļ­āļ‡āļŦāļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻāļāļŠāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻāļĒāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻ āļŠāļ–āļēāļšāļ™āļžāļąāļ’āļ™āļĢāļ°āļˆāļ­āļĄāđ€āļāļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻāļēāđ€āļˆāļēāļ„'āļ“āļ—āļŦāļēāļĢāļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻāļēāļ”āđ‰āļ§āļĒ Enterprise āļāļĢāļ°āļšāļ‡ āđ‚āļ”āđ‰āļ§āļĒ Enterprise āļĒāļĄāļˆ'āļ”āđ‰āļ§āļĒ Enterprise āļ›āļĢāļ°āļŠāļ‡āļ„(āđ€āļžāļąāļ’āļ™)*āļ­āđƒāļŦ ,āđ€āļĢāļĒāļ™āđ„āļ”āđ‰āļ§āļĒ Enterprise āđ€āļ‚āļēāđƒāļˆāļ–.āļ‡āļāļēāļĢāļžāļąāļ’āļ™āļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄ Java Enterprise Application āļ—*āđƒāļŠāđ‰āđƒāļ™āļāļēāļĢāļ›āļĢāļ°āļāļ­ Enterprise Java Bean 3.0 āđāļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻāļ° Java Persistence API āļ—āļ‡āļ™āđāļšāļš/.āļāļŦāļ”āđ‰āļ§āļĒ Enterprise āļ™āļ­āļēāļ‡āļ­āļ‡āļāļšāđ€āļ„āļĢ)*āļ­āļ‡āļĄ)āļ­āļžāļąāļ’āļ™āļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļˆāļēāļ§āļē Eclipse āđāļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻāļ° āđ‚āļ›āļĢāđāļāļĢāļĄ JBoss Application Server thananum@gmail.com twitter.com/thanachart www.facebook.com/thanachart www.thaijavadev.com āļĄāļ–'āļ™āļēāļĒāļ™ 2554 āļāļēāļĢāļžāļąāļ’āļ™āļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ”āđ‰āļ§āļĒ Enterprise āļ§āļĒ Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 3. 3 āļŠāļēāļĢāļšāļąāļāļ Exercise 1 Stateless Session Bean Using EJB 3.0................................................................................4 Exercise 2 Stateful Session Bean Using EJB 3.0...............................................................................21 Exercise 3 Entity Class (JPA).............................................................................................................26 Exercise 4 āļāļēāļĢāļžāļąāļ’āļ™āļēJSP āđ€āļžāļ·āđˆāļ­āđ€āļ’āļ™āļē JSP āđ€āļžāļąāļ’āļ™āļēJSP āđ€āļžāļ·āđˆāļ­āđ€āļ­āđ€āļĢāļĒāļāđƒāļŠāđ‰ EJB 3.0 36x1King 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 āļāļēāļĢāļžāļąāļ’āļ™āļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ”āđ‰āļ§āļĒ Enterprise āļ§āļĒ Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 4. 4 Exercise 1 Stateless Session Bean Using EJB 3.0 āđāļšāļš/.āļāļŦāļ”āđ‰āļ§āļĒ Enterprise āļ™āđ€āļ›0āļ™āļāļēāļĢāļžāļąāļ’āļ™āļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄ Enterprise Java Bean (EJB) āđ‚āļ”āđ‰āļ§āļĒ Enterprise āļĒāđƒāļŠāđ‰āđƒāļ™āļāļēāļĢāļ›āļĢāļ°āļāļ­ EJB 3.0 āļŠāļĢāļēāļ‡ Session Bean āđāļĨāļąāļāļŠāļđāļ•āļĢ 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 Application 1.1 āļ āļĢāļŠāļĢ āļ‡ Enterprise Application Project āļŠāļĢāļēāļ‡ Project āđāļšāļš Enterprise Application āļ‹āļķāđˆāļ‡āļĄāļĩ EJB Module āđāļĨāļ° Web Module āļ āļēāļĒāđƒāļ™āļ•āļąāļ§ P.*āļ‡āļĄ EJB Module āđāļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻāļ° Web Module āļ āļēāļĒāđƒāļ™āļ•āļ§ Project 1. āļŠāļĢāļēāļ‡ Project āđ‚āļ”āđ‰āļ§āļĒ Enterprise āļĒāđ€āļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻ)āļ­āļāđ€āļĄāļ™ File → New → Enterprise Application Project āļ4āļēāļŦāļ™āļ”āđ‰āļ§āļĒ Enterprise Project Name āđ€āļ›0āļ™ SessionBeanDemo 2. āļŠāļĢāļēāļ‡ Server āļ—*āļˆāļ°āļĢāļ™ Click āļ—*āļ›'1āļĄ New Runtime... āļ4āļēāļŦāļ™āļ”āđ‰āļ§āļĒ Enterprise Directory āļ—*āļĄ JBoss Application Server āļ­āļĒ1 3. āļāļ”āđ‰āļ§āļĒ Enterprise Next āļāļ”āđ‰āļ§āļĒ Enterprise āļ›'1āļĄ New Module... āđ€āļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻ)āļ­āļ EJB Module āđāļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻāļ° Web Module āļāļ”āđ‰āļ§āļĒ Enterprise Finish āļˆāļ™āļˆāļš Wizard āļāļēāļĢāļžāļąāļ’āļ™āļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ”āđ‰āļ§āļĒ Enterprise āļ§āļĒ Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 5. 5 āļĢāļ›āļ—āļĩāđˆ 1.1 āļāļēāļĢāļŠāļĢāļēāļ‡ Enterprise Application Project āļāļēāļĢāļžāļąāļ’āļ™āļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ”āđ‰āļ§āļĒ Enterprise āļ§āļĒ Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 6. 6 1.2 āļ āļĢāļžāļąāļ’āļ™āļ’āļ™āļģ āđ‚āļ›āļĢāđāļāļĢāļĄ Session Bean āđ‚āļ›āļĢāđāļāļĢāļĄ EJB āļˆāļ°āđƒāļŠāđ‰āđƒāļ™āļāļēāļĢāļ›āļĢāļ°āļāļ­ Session Bean āđƒāļ™āļāļēāļĢāļ•āļ”āđ‰āļ§āļĒ Enterprise āļ•1āļ­āļāļšāđ‚āļ›āļĢāđāļāļĢāļĄāļ­)*āļ™āđ† āļ āļēāļĒāļ™āļ­āļ EJB Container āđ‚āļ”āđ‰āļ§āļĒ Enterprise āļĒ Session Bean āļˆāļ°āļ›āļĢāļ°āļāļ­āļšāļ”āđ‰āļ§āļĒ Enterprise āļ§āļĒ Business Method āļ•1āļēāļ‡āđ† āđƒāļ™āđāļšāļš/.āļāļŦāļ”āđ‰āļ§āļĒ Enterprise āļˆāļ°āļŠāļĢāļēāļ‡ Session Bean āļ—*āļŠāđ‰āđƒāļ™āļāļēāļĢāļ›āļĢāļ°āļāļ­)*āļ­ BLSession āļ—*āļĄ Business method āļŠāļ­āļ‡āđ€āļĄāļ˜āļ­āļ”āđ‰āļ§āļĒ Enterprise āļ„)āļ­ ● String sayHi(String name) ● double currencyConvert(String currency, double amt) āđ‚āļ”āđ‰āļ§āļĒ Enterprise āļĒāđ€āļĢāļēāļŠāļēāļĄāļēāļĢāļ–āļ—*āļˆāļ°āļžāļąāļ’āļ™āļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ™āđ„āļ”āđ‰āļ§āļĒ Enterprise āļ”āđ‰āļ§āļĒ Enterprise āļ‡āļ™ 1. āļ„āļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻ7āļāļ‚āļ§āļēāļ—* SessionBeanDemoEJB → New → Session Bean(EJB 3.x) 2. āļ4āļēāļŦāļ™āļ”āđ‰āļ§āļĒ Enterprise Java package = ejb Class Name = BLSession State Type = Stateless Create Business Interface āđ€āļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻ)āļ­āļāļ—āļ‡ Remote āđāļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻāļ° Local āļ”āđ‰āļ§āļĒ Enterprise āļ‡āļĢāļ›āļ—* 1.2 āļĢāļ›āļ—āļĩāđˆ 1.2 āđ„āļ”āļ­āļ°āļĨāđ‡āļ­āļāļāļēāļĢāļŠāļĢāđ‰āļēāļ‡ Sāļ­āļāļāļēāļĢāļŠāļĢāļēāļ‡ Session Bean āļāļēāļĢāļžāļąāļ’āļ™āļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ”āđ‰āļ§āļĒ Enterprise āļ§āļĒ Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 7. 7 3. āđāļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻāļ§āļāļ”āđ‰āļ§āļĒ Enterprise Finish āđ‚āļ›āļĢāđāļāļĢāļĄāļˆāļ°āļŠāļĢāļēāļ‡āđ„āļŸāļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻ(āļ•1āļēāļ‡āđ† āļĄāļēāđƒāļŦāļ”āđ‰āļ§āļĒ Enterprise āļ‡āļĢāļ› āļĢāļ›āļ—āļĩāđˆ 1.3 āđ‚āļ„āļĢāļ‡āļŠāļĢāļēāļ‡āļ‚āļ­āļ‡āđ„āļŸāļĨāđ‡āļ­āļāļāļēāļĢāļŠāļĢāđ‰āļēāļ‡ Sāļ‚āļ­āļ‡ Session Bean 4. Declare Method Signature 2 methods āļ—* Interface BLSessionLocal , BLSessionRemote Method Name āļŠāđ‰āđƒāļ™āļāļēāļĢāļ›āļĢāļ°āļāļ­)*āļ­ sayHi Return Type : String Input Parameter = name āđ€āļ›0āļ™ String Method Name āļŠāđ‰āđƒāļ™āļāļēāļĢāļ›āļĢāļ°āļāļ­)*āļ­ currencyConvert Return Type : double Input Parameter 1 = currency āđ€āļ›0āļ™ String Input Parameter 2 = amt āđ€āļ›0āļ™ double āļ—4āļēāđ„āļĄāļ•āļ­āļ4āļēāļŦāļ™āļ”āđ‰āļ§āļĒ Enterprise Signature Method āđƒāļŦāļāļš Interface? āļĄ 2 āļāļĢāļ“ āļ„)āļ­ 1. ,āđ€āļĢāļĒāļ EJB āļ­āļĒ1āļšāļ™ Virtual Machine āđ€āļ”āđ‰āļ§āļĒ Enterprise āļĒāļ§āļāļ™āļāļš EJB ,āđ€āļĢāļĒāļāļˆāļ°āđƒāļŠāđ‰āđƒāļ™āļāļēāļĢāļ›āļĢāļ°āļāļ­āļ‡āļēāļ™ Method āļ—*āļĢāļ°āļš'āđƒāļ™ Interface BLSessionLocal 2. ,āđ€āļĢāļĒāļāļ­āļĒ1āļ„āļ™āļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻāļ° Virtual Machine āļŦāļĢ)āļ­āļ„āļ™āļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻāļ°āđ€āļ„āļĢ)āļ­āļ‡ * ,āđ€āļĢāļĒāļāļˆāļ°āđƒāļŠāđ‰āđƒāļ™āļāļēāļĢāļ›āļĢāļ°āļāļ­āļ‡āļēāļ™ Method āļ—*āļĢāļ°āļš'āđƒāļ™ Interface BLSessionRemote āļāļēāļĢāļžāļąāļ’āļ™āļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ”āđ‰āļ§āļĒ Enterprise āļ§āļĒ Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 8. 8 Listing 1.1 āļ›āļĢāļ°āļāļēāļĻ Signature Method āļ—* Interface āļ—āļ‡ Local āđāļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻāļ° 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 āđ€āļāļ”āđ‰āļ§āļĒ 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 1.3 āļ āļĢāļžāļąāļ’āļ™āļ’āļ™āļģ āđ‚āļ›āļĢāđāļāļĢāļĄ Web Application āđ‚āļ›āļĢāđāļāļĢāļĄ EJB āļˆāļ°āđ€āļ›0āļ™āļŠ1 āļ§āļ™āļ‚āļ­āļ‡ Business Logic āđ€āļ—1āļēāļ™āļ™ āļāļēāļĢāļžāļąāļ’āļ™āļ’āļ™āļēāļŠ1 āļ§āļ™āļ‚āļ­āļ‡ Presentation āļˆāļ°āļ•āļ­āļ‡āđƒāļŠāđ‰āđƒāļ™āļāļēāļĢāļ›āļĢāļ°āļāļ­ āđ‚āļ›āļĢāđāļāļĢāļĄ Web Application āļŦāļĢ)āļ­ Java SE āđƒāļ™āļ‚āļ™āļ•āļ­āļ™āļ™āļˆāļ°āļžāļąāļ’āļ™āļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄ Web Application āđ€āļžāļąāļ’āļ™)*āļ­āđ€āļĢāļĒāļāđƒāļŠāđ‰āđƒāļ™āļāļēāļĢāļ›āļĢāļ°āļāļ­ Business Method āļ‚āļ­āļ‡ BLSession āļ—*āļŠāđ‰āđƒāļ™āļāļēāļĢāļ›āļĢāļ°āļāļ­)*āļ­ sayHi āđ‚āļ”āđ‰āļ§āļĒ Enterprise āļĒāļ4āļēāļŦāļ™āļ”āđ‰āļ§āļĒ Enterprise āđƒāļŦ,āđƒāļŠāđ‰āđƒāļ™āļāļēāļĢāļ›āļĢāļ°āļāļ­āļŠ1 āļ‡āļžāļąāļ’āļ™āļēāļĢāļēāļĄāđ€āļ•āļ­āļĢ( String myName āđ„āļ› Servlet āļ—*āļŠāđ‰āđƒāļ™āļāļēāļĢāļ›āļĢāļ°āļāļ­)*āļ­ SayHiServlet 1. āļ„āļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻ7āļāļ‚āļ§āļēāļ—* SessionBeanDemoWeb āđ€āļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻ)āļ­āļ New → Servlet 2. āļ4āļēāļŦāļ™āļ”āđ‰āļ§āļĒ Enterprise Package = controller Class Name = SayHiServlet āļĢāļ›āļ—āļĩāđˆ 1.5 āļŠāļĢāļēāļ‡ Servlet āđ€āļžāļąāļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄ#āļ­āļ•$āļ”āļ•%āļ­āļāļš EJB3 āļāļēāļĢāļžāļąāļ’āļ™āļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ”āđ‰āļ§āļĒ Enterprise āļ§āļĒ Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 10. 10 3. Set āđƒāļŦ Web Project āļĢāļˆāļ EJB Project āđ‚āļ”āđ‰āļ§āļĒ Enterprise āļĒāļ„āļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻāļāļ‚āļ§āļēāļ—* SessionBeanDemoWeb āđ€āļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻ)āļ­āļ Build Path → Configure Build Path āļĢāļ›āļ—āļĩāđˆ 1.6 āļ—āļĩāđˆ !āļēāđƒāļŦāđ‰ Web Projec Web Project āļĄāļ­āļ‡āđ€āļŦāđ‰ Web Projecāļ™ EJB Project 4. āđ€āļžāļąāļ’āļ™āļĄ Source code āđƒāļ™āļāļēāļĢāđ€āļĢāļĒāļ EJB āļ—* Servlet āđ‚āļ”āđ‰āļ§āļĒ Enterprise āļĒ Declare āđ€āļ›0āļ™ Instant Variable * public class SayHiServlet extends HttpServlet { @EJB private BLSessionLocal blSession; .......... .......... .......... 5. āđƒāļŦāļ›āļĢāļšāļ›āļĢ'āļ‡ Source code āđƒāļ™āđ€āļĄāļ˜āļ­āļ”āđ‰āļ§āļĒ Enterprise processRequest āļ”āđ‰āļ§āļĒ Enterprise āļ‡āļ™ protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding(TIS-620); response.setContentType(TIS-620); PrintWriter out = response.getWriter(); out.println(htmlbody); out.println(blSession.sayHi(request.getParameter(myName))); out.println(/body/html); out.close(); } āļāļēāļĢāļžāļąāļ’āļ™āļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ”āđ‰āļ§āļĒ Enterprise āļ§āļĒ Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 11. 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 āļˆāļ°āđāļŠāļ”āđ‰āļ§āļĒ Enterprise āļ‡āļ‚āļ­āļ„āļ§āļēāļĄ Hello Thana āļ­āļ­āļāļĄāļē āļāļēāļĢāļžāļąāļ’āļ™āļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ”āđ‰āļ§āļĒ Enterprise āļ§āļĒ Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 12. 12 1.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 1.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 Server 1.5.2 āļāļēāļĢāļžāļąāļ’āļ™āļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄ Main.java Implement Source code āļ‚āļ­āļ‡ Main.java āļ”āđ‰āļ§āļĒ Enterprise āļ‡āļ™ import java.util.Hashtable; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import ejb.BLSessionRemote; public class Main { public static void main(String[] args) throws NamingException { Context ctx = getJBossNamingContext(); BLSessionRemote sb = (BLSessionRemote)ctx.lookup(SessionBeanForClient); String result = sb.sayHi(Thana); System.out.println(result); } public static Context getJBossNamingContext() throws NamingException{ HashtableString, String env = new HashtableString, String(); env.put(java.naming.factory.initial,org.jboss.naming.NamingContextFactory); env.put(java.naming.provider.url, localhost:1099); return new InitialContext(env); } } āļ—* Method getJBossNamingContext() āļžāļąāļ’āļ™āļšāļ§1āļēāļĄāļāļēāļĢ Config āļ–.āļ‡ host:port āļ‚āļ­āļ‡ Naming Service (āđ€āļ›0āļ™āļ—*āđ†āđ€āļĢāļēāļˆāļ°āđ€āļ‚āļēāđ„āļ›āļ–āļēāļĄāļŦāļē Session Bean āļŠāđ‰āđƒāļ™āļāļēāļĢāļ›āļĢāļ°āļāļ­)*āļ­ “SessionBeanForClient”) āđ€āļĢāļēāļˆāļ°āļ•āļ­āļ‡āļŦāļē port āļ‚āļ­āļ‡ Server āļ—*āļĄ EJB āļ­āļĒ1 āļ‹āļķāđˆāļ‡āļĄāļĩ EJB Module āđāļĨāļ° Web Module āļ āļēāļĒāđƒāļ™āļ•āļąāļ§ P.*āļ‡āļ—4āļēāđ„āļ”āđ‰āļ§āļĒ Enterprise āđ‚āļ”āđ‰āļ§āļĒ Enterprise āļĒ double click āļ—* Server JBoss āļ”āđ‰āļ§āļĒ Enterprise āļ‡āļĢāļ› āļāļēāļĢāļžāļąāļ’āļ™āļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ”āđ‰āļ§āļĒ Enterprise āļ§āļĒ Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 14. 14 āļĢāļ›āļ—āļĩāđˆ 1.9 āļāļēāļĢāļŦāđ‰ Web Projecāļē JNDI port āļ‚āļ­āļ‡ Server āļ—āļĩāđˆ EJB Project Deploy āļ­āļĒāļđāđˆt ˜A HashtableString, String env = new Hashta% āļˆāļēāļāļ™āļ™āļ—4āļēāļāļēāļĢāļĢāļ™ Application āļˆāļ°āđ„āļ”āđ‰āļ§āļĒ Enterprise ,āļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻāļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻāļžāļąāļ’āļ™āļ˜(āļ„)āļ­ Hello Thana print āļ­āļ­āļāļĄāļēāļ—* Console āļāļēāļĢāļžāļąāļ’āļ™āļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ”āđ‰āļ§āļĒ Enterprise āļ§āļĒ Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 15. 15 1.5.3 āļāļēāļĢāļžāļąāļ’āļ™āļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄ CurrencyConvertor.java āđ‚āļ›āļĢāđāļāļĢāļĄ Desktop Application āļˆāļ°āļĄāļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻāļāļĐāļ“āļ°āļ”āđ‰āļ§āļĒ Enterprise āļ‡āļĢāļ› āđ‚āļ”āđ‰āļ§āļĒ Enterprise āļĒāļˆāļ°āđƒāļŠāđ‰āđƒāļ™āļāļēāļĢāļ›āļĢāļ°āļāļ­ GUI Designer (Jigloo) āđƒāļ™āļāļēāļĢāļžāļąāļ’āļ™āļ’āļ™āļē āļĢāļ›āļ—āļĩāđˆ 1.10 GUI āļ‚āļ­āļ‡āđ‚āļ›āļĢāđāļāļĢāļĄ CurrencyConvertor 1. āļ„āļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻāļāļ‚āļ§āļēāļ—*āđ‚āļŦāļ™āļ”āđ‰āļ§āļĒ Enterprise SessionBeanDemoClient āđ€āļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻ)āļ­āļ appClientModule → New → Other... → GUI Forms → Swing → Jframe āļˆāļ°āļĄāđ„āļ”āđ‰āļ§āļĒ Enterprise āļ­āļ°āļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻ0āļ­āļāļ‚.āļ™āļĄāļē āļ4āļēāļŦāļ™āļ”āđ‰āļ§āļĒ Enterprise Package = swing āđāļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻāļ° Class Name = CurrencyConvertor āļĢāļ›āļ—āļĩāđˆ 1.11 āļŠāļĢāļēāļ‡ Swing GUI āļāļēāļĢāļžāļąāļ’āļ™āļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ”āđ‰āļ§āļĒ Enterprise āļ§āļĒ Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 16. 16 2. āļ„āļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻ7āļāļ—* JFrame āđāļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻāļ§āđ€āļ›āļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻ*āļĒāļ™ property āļ—*āļŠāđ‰āđƒāļ™āļāļēāļĢāļ›āļĢāļ°āļāļ­)*āļ­ title āđ€āļ›0āļ™ Currency Convertor āļĢāļ›āļ—āļĩāđˆ 1.12 āļŠāļĢāļēāļ‡ Swing GUI 3. āđ€āļžāļąāļ’āļ™āļĄ JPanel āđāļšāļš Form * āļĢāļ›āļ—āļĩāđˆ 1.13 āļŠāļĢāļēāļ‡ Swing GUI 4. āļāļēāļĢāļžāļąāļ’āļ™āļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ”āđ‰āļ§āļĒ Enterprise āļ§āļĒ Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 17. 17 5. āļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻāļēāļāđ„āļ­āļ„āļ­āļ™ Label āđƒāļ™ Swing Controls āļˆāļēāļ Table Compoments Drag Drop āđ„āļ›āļ—*āļŦāļ™āļēāļ•1āļēāļ‡ āļ”āđ‰āļ§āļĒ Enterprise āļ‡āļĢāļ› āđāļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻāļ§āļ4āļēāļŦāļ™āļ”āđ‰āļ§āļĒ Enterprise āļ„1āļē āļĢāļ›āļ—āļĩāđˆ 1.14 āļāļēāļĢāļ§āļēāļ‡ Label āđƒāļ™ Components Windows 6. āļ„āļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻ7āļāđ€āļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻ)āļ­āļ jLabel āđāļ•1āļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻāļ°āļ•āļ§ āđāļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻāļ°āđ€āļ›āļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻ*āļĒāļ™ property āļ—*āļŠāđ‰āđƒāļ™āļāļēāļĢāļ›āļĢāļ°āļāļ­)*āļ­ text āđ€āļ›0āļ™ currency, amount āđāļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻāļ° value 7. āļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻāļēāļāđ„āļ­āļ„āļ­āļ™ Combo Box āļĄāļēāđƒāļ™āļ•4āļēāđāļŦāļ™1āļ‡āļ—āļēāļ‡āļ‚āļ§āļēāļĄ)āļ­āļ‚āļ­āļ‡ currency āļˆāļēāļāļ™āļ™āđƒāļ™ property āđƒāļŦāđ€āļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻ)āļ­āļ model āđ‚āļ”āđ‰āļ§āļĒ Enterprise āļĒāļ4āļēāļŦāļ™āļ”āđ‰āļ§āļĒ Enterprise Item āļŠāļ­āļ‡āļĢāļēāļĒāļāļēāļĢāđƒāļŦāđ€āļ›0āļ™ baht āđāļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻāļ° euro āļ”āđ‰āļ§āļĒ Enterprise āļ‡āļĢāļ› āļĢāļ›āļ—āļĩāđˆ 1.15 āļāļēāļĢāļ!āļēāļŦāđ‰ Web Projecāļ™āļ”āļ„%āļē item āļ‚āļ­āļ‡ ComboBox āļāļēāļĢāļžāļąāļ’āļ™āļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ”āđ‰āļ§āļĒ Enterprise āļ§āļĒ Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 18. 18 8. āļ—4āļēāļāļēāļĢ implement sourcecode āļ”āđ‰āļ§āļĒ Enterprise āļ‡āļĢāļ› 9. Implement source code āļāļĢāļ“āļ—*āļĄāļāļēāļĢāļāļ”āđ‰āļ§āļĒ Enterprise āļ›'1āļĄ Calculate āđ‚āļ”āđ‰āļ§āļĒ Enterprise āļĒāđāļāđ„āļ‚ source code āļ”āđ‰āļ§āļĒ Enterprise āļ‡āļ™ private void jButton1ActionPerformed(ActionEvent evt) { System.out.println(jButton1.actionPerformed, event=+evt); try { Context ctx = getJBossNamingContext(); BLSessionRemote obj = (BLSessionRemote) ctx.lookup(SessionBeanForClient); int index = jComboBox1.getSelectedIndex(); String currency = (String) jComboBox1.getItemAt(index); String amtStr = jTextField1.getText(); double amt = Double.parseDouble(amtStr); double usDollar = obj.currencyConvertor(currency, amt); jTextField2.setText(usDollar + ); } catch (Exception ex) { ex.printStackTrace(); } } public Context getJBossNamingContext() throws NamingException{ HashtableString, String env = new HashtableString, String(); env.put(java.naming.factory.initial,org.jboss.naming.NamingContextFactory); env.put(java.naming.provider.url, localhost:1099); return new InitialContext(env); } 10. āļ›'1āļĄ Exit āļ—4āļēāđ€āļŠāđ‰āđƒāļ™āļāļēāļĢāļ›āļĢāļ°āļāļ­1āļ™āđ€āļ”āđ‰āļ§āļĒ Enterprise āļĒāļ§āļāļšāļ›'1āļĄ Calculate private void jButton2ActionPerformed(ActionEvent evt) { System.out.println(jButton2.actionPerformed, event= + evt); System.exit(0); } 11. āļ—āļ”āđ‰āļ§āļĒ Enterprise āļŠāļ­āļšāđ‚āļ›āļĢāđāļāļĢāļĄāđ‚āļ”āđ‰āļ§āļĒ Enterprise āļĒāļāļēāļĢāđ€āļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻ)āļ­āļāļŠāļ'āļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻāđ€āļ‡āļ™ āđāļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻāļ°āļ›āļ­āļ™āļˆ4āļēāļ™āļ§āļ™āđ€āļ‡āļ™ āđāļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻāļ§āļāļ”āđ‰āļ§āļĒ Enterprise āļ›'1āļĄ Calculate āļāļēāļĢāļžāļąāļ’āļ™āļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ”āđ‰āļ§āļĒ Enterprise āļ§āļĒ Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 19. 19 Source 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 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(); āļāļēāļĢāļžāļąāļ’āļ™āļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ”āđ‰āļ§āļĒ Enterprise āļ§āļĒ Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 20. 20 jPanel1.add(jTextField2, new CellConstraints( 2, 3, 1, 1, default, default)); } { jButton1 = new JButton(); jPanel1.add(jButton1, new CellConstraints( 1, 4, 1, 1, default, default)); jButton1.setText(Calculate); jButton1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { jButton1ActionPerformed(evt); } }); } { jButton2 = new JButton(); jPanel1.add(jButton2, new CellConstraints( 2, 4, 1, 1, default, default)); jButton2.setText(Exit); jButton2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { jButton2ActionPerformed(evt); } }); } { ComboBoxModel jComboBox1Model = new DefaultComboBoxModel( new String[] { baht, euro }); jComboBox1 = new JComboBox(); jPanel1.add(getJComboBox1(), new CellConstraints(2, 1, 1, 1, default, default)); jComboBox1.setModel(jComboBox1Model); } } pack(); } catch (Exception e) { e.printStackTrace(); } } private void jButton2ActionPerformed(ActionEvent evt) { System.out.println(jButton2.actionPerformed, event= + evt); System.exit(0); } public JComboBox getJComboBox1() { return jComboBox1; } private void jButton1ActionPerformed(ActionEvent evt) { System.out.println(jButton1.actionPerformed, event=+evt); try { Context ctx = getJBossNamingContext(); BLSessionRemote obj = (BLSessionRemote) ctx.lookup(SessionBeanForClient); int index = jComboBox1.getSelectedIndex(); String currency = (String) jComboBox1.getItemAt(index); String amtStr = jTextField1.getText(); double amt = Double.parseDouble(amtStr); double usDollar = obj.currencyConvertor(currency, amt); jTextField2.setText(usDollar + ); } catch (Exception ex) { ex.printStackTrace(); } } public Context getJBossNamingContext() throws NamingException{ HashtableString, String env = new HashtableString, String(); env.put(java.naming.factory.initial,org.jboss.naming.NamingContextFactory); env.put(java.naming.provider.url, localhost:1099); return new InitialContext(env); } } āļāļēāļĢāļžāļąāļ’āļ™āļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ”āđ‰āļ§āļĒ Enterprise āļ§āļĒ Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 21. 21 Exercise 2 Stateful Session Bean Using EJB 3.0 āđ€āļ™#āļ­āļŦāđ‰ Web Projecāļēāļ—āļĩāđˆ āļ•āļ­āļ‡āļĻāļķāļāļĐāļēāļāđˆāļ­āļ™ Ses-āļāļĐāļēāļ%āļ­āļ™ Session Bean Using EJB 3.0 āđāļšāļš/.āļāļŦāļ”āđ‰āļ§āļĒ Enterprise āđƒāļ™āļšāļ—āļ™āđ€āļ›0āļ™āļāļēāļĢāļžāļąāļ’āļ™āļ’āļ™āļē Stateful Session Bean āļŠ4āļēāļŦāļĢāļš Shopping Cart āđ‚āļ”āđ‰āļ§āļĒ Enterprise āļĒāđƒāļŠāđ‰āđƒāļ™āļāļēāļĢāļ›āļĢāļ°āļāļ­ EJB 3.0 āđ‚āļ”āđ‰āļ§āļĒ Enterprise āļĒāļ4āļēāļŦāļ™āļ”āđ‰āļ§āļĒ Enterprise āđƒāļŦ Session Bean āļĄāļŠāđ‰āđƒāļ™āļāļēāļĢāļ›āļĢāļ°āļāļ­)*āļ­āđ€āļ›0āļ™ Cart āđāļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻāļ°āļĄ Business Methods āļŠāļēāļĄāđ€āļĄāļ˜āļ­āļ”āđ‰āļ§āļĒ Enterprise āļ„)āļ­ ● void putItem(String itemId, int quantity) ● void removeItem(String itemId) ● Hashtable getItems() āļ™āļ­āļāļˆāļēāļāļ™āļˆāļ°āļĄ āđ€āļĄāļ˜āļ­āļ”āđ‰āļ§āļĒ Enterprise āđ€āļ—*āļ–āļāđ€āļĢāļĒāļāļˆāļēāļ @PostConstruct āļ„)āļ­ ● void initialize() āđāļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻāļ° Bean Class āļˆāļ°āļĄāļ•āļ§āđāļ›āļĢāļ‚āļ­āļ‡āļ­āļ­āļ›āđ€āļˆ0āļ„ (instance variable) āļŠāļ­āļ‡āļ•āļ§āļ„)āļ­ ● String customerId ● Hashtable cart āđƒāļ™āđāļšāļš/.āļāļŦāļ”āđ‰āļ§āļĒ Enterprise āļ™āđ€āļĢāļēāļˆāļ°āđ€āļ‚āļĒāļ™ Java Servlet āļ‚.āļ™āļĄāļēāđ€āļžāļąāļ’āļ™)*āļ­āđ€āļĢāļĒāļāđƒāļŠāđ‰āđƒāļ™āļāļēāļĢāļ›āļĢāļ°āļāļ­ Cart Session Bean āļ—*āļŠāđ‰āđƒāļ™āļāļēāļĢāļ›āļĢāļ°āļāļ­)*āļ­ CartManager.java āđ€āļžāļąāļ’āļ™)*āļ­āđƒāļŠāđ‰āđƒāļ™āļāļēāļĢāļ›āļĢāļ°āļāļ­āđƒāļ™āļāļēāļĢāđ€āļžāļąāļ’āļ™*āļĄ/āļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻāļšāļĢāļēāļĒāļāļēāļĢāļ­āļ­āļāļˆāļēāļ Cart āđāļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻāļ° āđ€āļžāļąāļ’āļ™)*āļ­āđāļŠāļ”āđ‰āļ§āļĒ Enterprise āļ‡āļĢāļēāļĒāļāļēāļĢāļ—*āļ­āļĒ1āđƒāļ™ Cart āđ‚āļ”āđ‰āļ§āļĒ Enterprise āļĒ,āļ—*āđ€āļĢāļĒāļ 1 āđƒāļŠāđ‰āđƒāļ™āļāļēāļĢāļ›āļĢāļ°āļāļ­ CartManager āļˆāļ°āļ•āļ­āļ‡āļŠ1 āļ‡āļžāļąāļ’āļ™āļēāļĢāļēāļĄāđ€āļ•āļ­āļĢ(āļ—*āļŠāđ‰āđƒāļ™āļāļēāļĢāļ›āļĢāļ°āļāļ­)*āļ­ action āļĄāļēāđ€āļžāļąāļ’āļ™)āļ­āļĢāļ°āļš'āļ§āļēāļ•āļ­āļ‡āļāļēāļĢāļ—4āļēāļ­āļ°āđ„āļĢāļāļš Cart āđ‚āļ”āđ‰āļ§āļĒ Enterprise āļĒāļĄ action āļ”āđ‰āļ§āļĒ Enterprise āļ‡āļ™ ● add āđ€āļžāļąāļ’āļ™)*āļ­āđ€āļžāļąāļ’āļ™*āļĄāļĢāļēāļĒāļāļēāļĢāļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻāļ‡āđƒāļ™ Cart ● remove āđ€āļžāļąāļ’āļ™)*āļ­āļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻāļšāļĢāļēāļĒāļāļēāļĢāļ­āļ­āļāļˆāļēāļ Cart ● list āđ€āļžāļąāļ’āļ™)*āļ­āđāļŠāļ”āđ‰āļ§āļĒ Enterprise āļ‡āļĢāļēāļĒāļāļēāļĢāđƒāļ™ Cart [āļŦāļĄāļēāļĒāđ€āļŦāļ•' āļ–āļēāđ€āļĢāļēāļŠāļĢāļēāļ‡ Servlet āļŦāļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻāļēāļĒāđ†āđ„āļŸāļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻ(āđ€āļžāļąāļ’āļ™)*āļ­āļ—4āļēāļŦāļ™āļēāļ—*āļ•1āļēāļ‡āļāļ™ āđ€āļŠāđ‰āđƒāļ™āļāļēāļĢāļ›āļĢāļ°āļāļ­1āļ™ AddCartServlet, RemoveCartServlet āđāļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻāļ° ListCartServlet āđ‚āļ›āļĢāđāļāļĢāļĄ Stateful Session Bean āļˆāļ°āļŠāļĢāļēāļ‡ bean instance āļŠ4āļēāļŦāļĢāļš Servlet āđāļ•1āļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻāļ°āļ•āļ§āļ—4āļēāđƒāļŦāđƒāļŠāđ‰āđƒāļ™āļāļēāļĢāļ›āļĢāļ°āļāļ­ Session āļ—*āļ•1āļēāļ‡āļāļ™] āļ‚āļ™āļ•āļ­āļ™āđƒāļ™āļāļēāļĢāļžāļąāļ’āļ™āļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄ 1. āļžāļąāļ’āļ™āļ’āļ™āļē Stateful Session Bean 2. āļžāļąāļ’āļ™āļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄ CartManager.java 3. āļžāļąāļ’āļ™āļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄ CartList.java 2.1 āļ āļĢāļžāļąāļ’āļ™āļ’āļ™āļģ āđ‚āļ›āļĢāđāļāļĢāļĄ Stateful Session Bean āđāļšāļš/.āļāļŦāļ”āđ‰āļ§āļĒ Enterprise āļ™āļˆāļ°āđƒāļŠāđ‰āđƒāļ™āļāļēāļĢāļ›āļĢāļ°āļāļ­āđ‚āļ›āļĢāđ€āļˆ0āļ„āđ€āļ”āđ‰āļ§āļĒ Enterprise āļĄ (SessionBeanDemo) āļ—*āļŠāļĢāļēāļ‡āđƒāļ™āđāļšāļš/.āļāđ‚āļ›āļĢāđāļāļĢāļĄ Session Bean Using EJB 3.0 āđƒāļ™āļāļēāļĢāļŠāļĢāļēāļ‡ Stateful Session Bean āđ‚āļ”āđ‰āļ§āļĒ Enterprise āļĒāļĄāļ‚āļ™āļ•āļ­āļ™āđƒāļ™āļāļēāļĢāļžāļąāļ’āļ™āļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ™āđ„āļ”āđ‰āļ§āļĒ Enterprise āļ”āđ‰āļ§āļĒ Enterprise āļ‡āļ™ āļāļēāļĢāļžāļąāļ’āļ™āļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ”āđ‰āļ§āļĒ Enterprise āļ§āļĒ Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 22. 22 1. āļ„āļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻ7āļāļ‚āļ§āļēāļ—* SessionBeanDemoEJB → New → Session Bean(EJB 3.x) 2. āļ4āļēāļŦāļ™āļ”āđ‰āļ§āļĒ Enterprise Java package = ejb , Class Name = Cart āđāļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻāļ° State Type = Stateful āļĢāļ›āļ—āļĩāđˆ 2.1 āļāļēāļĢāļ!āļēāļŦāđ‰ Web Projecāļ™āļ”āļ„%āļēāļ‚āļ­āļ‡ Cart Stateful Session Bean 3. āļ—4āļēāļāļēāļĢ Add Business Method āđ‚āļ”āđ‰āļ§āļĒ Enterprise āļĒāđ€āļĢ*āļĄāļˆāļēāļāļŠāļĢāļēāļ‡ Signature Method āđƒāļ™ Interface CartLocal āđāļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻāļ° CartRemote āļ”āđ‰āļ§āļĒ Enterprise āļ‡āļ™ Declare Method Signature 3 methods āļ—* Interface CartLocal , CartRemote Method Name āļŠāđ‰āđƒāļ™āļāļēāļĢāļ›āļĢāļ°āļāļ­)*āļ­ putItem Input Parameter 1 = itemId āđ€āļ›0āļ™ String Input Parameter 2 = quantity āđ€āļ›0āļ™ int Method Name āļŠāđ‰āđƒāļ™āļāļēāļĢāļ›āļĢāļ°āļāļ­)*āļ­ removeItem Input Parameter = itemId āđ€āļ›0āļ™ String Method Name āļŠāđ‰āđƒāļ™āļāļēāļĢāļ›āļĢāļ°āļāļ­)*āļ­ getItems Return Type : Hashtable āļāļēāļĢāļžāļąāļ’āļ™āļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ”āđ‰āļ§āļĒ Enterprise āļ§āļĒ Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 23. 23 4. āļˆāļ°āđ„āļ”āđ‰āļ§āļĒ Enterprise Business Method āļ­āļĒ1āđƒāļ™ Interface āļ—āļ‡āļŠāļ­āļ‡ (local,remote) 3 Methods āļ„)āļ­ void putItem(String itemId , int quantity); void removeItem(String itemId); Hashtable getItems(); Implement source code āļ•āļēāļĄ Listing 2.1 āđāļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻāļ° 2.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(); } āļāļēāļĢāļžāļąāļ’āļ™āļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ”āđ‰āļ§āļĒ Enterprise āļ§āļĒ Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 24. 24 āļˆāļēāļāļ™āļ™ Fix Error āļ‚āļ­āļ‡ Class Cart.java āđ‚āļ”āđ‰āļ§āļĒ Enterprise āļĒ Implement source code āļ•āļēāļĄ Listing 2.3 āļ”āđ‰āļ§āļĒ Enterprise āļ‡āļ™ 5. Listing 2.3 āđ‚āļ›āļĢāđāļāļĢāļĄ Cart.java package ejb; import java.util.Hashtable; import javax.annotation.PostConstruct; import javax.ejb.Stateful; @Stateful public class Cart implements CartRemote, CartLocal { HashtableString, Integer cart; @PostConstruct public void initialize(){ cart = new HashtableString, Integer(); } @Override public void putItem(String itemId, int quantity) { cart.put(itemId, quantity); } @Override public void removeItem(String itemId) { cart.remove(itemId); } @Override public Hashtable getItems() { return cart; } } 2.2 āļ āļĢāļžāļąāļ’āļ™āļ’āļ™āļģ āđ‚āļ›āļĢāđāļāļĢāļĄ CartManager.java āđ‚āļ›āļĢāđāļāļĢāļĄ CartManager.java āđ€āļ›0āļ™āđ‚āļ›āļĢāđāļāļĢāļĄ Java Servlet āđ€āļžāļąāļ’āļ™)*āļ­āđ€āļĢāļĒāļāđƒāļŠāđ‰āđƒāļ™āļāļēāļĢāļ›āļĢāļ°āļāļ­ Business Method āļ‚āļ­āļ‡ Cart Bean āđƒāļ™āļāļēāļĢāđ€āļžāļąāļ’āļ™*āļĄāļĢāļēāļĒāļāļēāļĢāļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻāļ‡āđƒāļ™ Cart āđ‚āļ”āđ‰āļ§āļĒ Enterprise āļĒāļ4āļēāļŦāļ™āļ”āđ‰āļ§āļĒ Enterprise āđƒāļŦ,āđƒāļŠāđ‰āđƒāļ™āļāļēāļĢāļ›āļĢāļ°āļāļ­āļŠ1 āļ‡āļžāļąāļ’āļ™āļēāļĢāļēāļĄāđ€āļ•āļ­āļĢ(āļĄāļēāļĒāļ‡āđ‚āļ›āļĢāđāļāļĢāļĄāļ”āđ‰āļ§āļĒ Enterprise āļ‡āļ™ ● itemId āļ„)āļ­āļŦāļĄāļēāļĒāđ€āļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻāļ‚āļ‚āļ­āļ‡āļĢāļēāļĒāļāļēāļĢāļŠāļ™āļ„āļē ● quantity āļ„)āļ­āļˆ4āļēāļ™āļ§āļ™āļ‚āļ­āļ‡āļĢāļēāļĒāļāļēāļĢāļŠāļ™āļ„āļē ● method āļ–āļēāļĄāļ„1āļēāđ€āļ›0āļ™ add āļ„)āļ­āđ€āļžāļąāļ’āļ™āļĄāļĢāļēāļĒāļāļēāļĢ āđāļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻāļ°āļ–āļēāļĄāļ„1āļēāđ€āļ›0āļ™ remove āļ„)āļ­āļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻāļšāļĢāļēāļĒāļāļēāļĢ * āļŠāđ‰āđƒāļ™āļāļēāļĢāļ›āļĢāļ°āļāļ­'āļ”āđ‰āļ§āļĒ Enterprise āļ„4āļēāļŠāļ‡āļ•1āļēāļ‡āđ† āļ āļēāļĒāđƒāļ™ CartManager āļ­āļ˜āļšāļēāļĒāđ„āļ”āđ‰āļ§āļĒ Enterprise āļ”āđ‰āļ§āļĒ Enterprise āļ‡āļ™ * 1. āļ›āļĢāļ°āļāļēāļĻāļ•āļ§āđāļ›āļĢ cart āđ€āļ›0āļ™āļŠāđ‰āđƒāļ™āļāļēāļĢāļ›āļĢāļ°āļāļ­āļ™āļ”āđ‰āļ§āļĒ Enterprise CartLocal āđ‚āļ”āđ‰āļ§āļĒ Enterprise āļĒāđƒāļŠāđ‰āđƒāļ™āļāļēāļĢāļ›āļĢāļ°āļāļ­ annotation āļ—*āļŠāđ‰āđƒāļ™āļāļēāļĢāļ›āļĢāļ°āļāļ­)*āļ­ @EJB āļ”āđ‰āļ§āļĒ Enterprise āļ‡āļ™ @EJB private CartLocal cart; āļāļēāļĢāļžāļąāļ’āļ™āļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ”āđ‰āļ§āļĒ Enterprise āļ§āļĒ Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 25. 25 2. āļ„4āļēāļŠāļ‡āļ­1āļēāļ™āļ„1āļēāļžāļąāļ’āļ™āļēāļĢāļēāļĄāđ€āļ•āļ­āļĢ(āļ•1āļēāļ‡āđ† * āđ‚āļ”āđ‰āļ§āļĒ Enterprise āļĒāļ4āļēāļŦāļ™āļ”āđ‰āļ§āļĒ Enterprise āđƒāļŦāļĄāļžāļąāļ’āļ™āļēāļĢāļēāļĄāđ€āļ•āļ­āļĢ(āļŠ1āļ‡,1āļēāļ™āļĄāļēāļˆāļēāļ request āļ„)āļ­ action, item āđāļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻāļ° quantity āđ‚āļ”āđ‰āļ§āļĒ Enterprise āļĒāļĄāļ„4āļēāļŠāļ‡āļ”āđ‰āļ§āļĒ Enterprise āļ‡āļ™ * String action = request.getParameter(action); String item = request.getParameter(item); String quantity = request.getParameter(quantity); cart.putItem(item, Integer.parseInt(quantity)); 3. āļ„4āļēāļŠāļ‡āļāļēāļĢāđ€āļĢāļĒāļ Enterprise Bean āļ•āļēāļĄ action āļ—*āļ•1āļēāļ‡āļāļ™āļ”āđ‰āļ§āļĒ Enterprise āļ‡āļ™ * if (action.equals(add)) { cart.putItem(item, Integer.parseInt(quantity)); } else if (action.equals(remove)) { cart.removeItem(item); } else if (action.equals(list)) { Hashtable items = cart.getItems(); â€Ķâ€Ķâ€Ķ } āļ‚āļ™āļ•āļ­āļ™āļāļēāļĢāļžāļąāļ’āļ™āļ’āļ™āļē Class CartManager 1. āđ€āļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻ)āļ­āļāļŦāļ™āļēāļ•1āļēāļ‡ Projects āđāļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻāļ§āļ„āļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻ7āļāļ‚āļ§āļēāļ—*āđ‚āļŦāļ™āļ”āđ‰āļ§āļĒ Enterprise SessionBeanDemoWeb āļˆāļēāļāļ™āļ™āđ€āļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻ)āļ­āļāļ„4āļēāļŠāļ‡ New → Servlet * āļ4āļēāļŦāļ™āļ”āđ‰āļ§āļĒ Enterprise Package = controller , Class Name = CartManager 2. āđƒāļ™āļŦāļ™āļēāļ•1āļēāļ‡ Editor āđƒāļŦāđ€āļžāļąāļ’āļ™*āļĄ Source code āđƒāļ™āļāļēāļĢāđ€āļĢāļĒāļ EJB āļ”āđ‰āļ§āļĒ Enterprise āļ‡āļ™ āļ›āļĢāļ°āļāļēāļĻ instant variable āđ€āļ›0āļ™āļŠāđ‰āđƒāļ™āļāļēāļĢāļ›āļĢāļ°āļāļ­āļ™āļ”āđ‰āļ§āļĒ Enterprise CartLocal āđ€āļžāļąāļ’āļ™āļĢāļēāļ°āđ€āļĢāļēāļˆāļ°āļŠ)*āļ­āļŠāļēāļĢāļāļš EJB ,1āļēāļ™ Interface CartLocal @EJB private CartLocal cart; 3. Implement source code āļ‚āļ­āļ‡ Method processRequest( ) āļ”āđ‰āļ§āļĒ Enterprise āļ‡āļ™ Listing 2.4 āđ‚āļ›āļĢāđāļāļĢāļĄ CartManager.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); } āļāļēāļĢāļžāļąāļ’āļ™āļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ”āđ‰āļ§āļĒ Enterprise āļ§āļĒ Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 26. 26 @EJB privateCartLocal cart; protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding(TIS-620); response.setContentType(TIS-620); PrintWriter out = response.getWriter(); String action = request.getParameter(action); String item = request.getParameter(item); String quantity = request.getParameter(quantity); out.println(htmlbodyh1Cart Manager/h1); if (action.equals(add)) { cart.putItem(item, Integer.parseInt(quantity)); } else if (action.equals(remove)) { cart.removeItem(item); } else if (action.equals(list)) { Hashtable items = cart.getItems(); Enumeration itemNames = items.keys(); while (itemNames.hasMoreElements()) { String itemId = (String) itemNames.nextElement(); out.println(Item id: + itemId + Quantity : + items.get(itemId)); out.println(BR); } } out.println(/body/html); } } 2.3 āļ āļĢāļ—āļ”āļŠāļ­āļšāđ‚āļ›āļĢāđāļāļĢāļĄ 1. āļ—4āļēāļāļēāļĢ Publish āđ€āļžāļąāļ’āļ™)*āļ­āđƒāļŦāļ—'āļ Project āļ—4āļēāļāļēāļĢ Synchronized āļāļ™ āļĢāļ›āļ—āļĩāđˆ 2.2 āļāļēāļĢ Publish āđ€āļžāļąāļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄ#āļ­ Synchronized Project āđƒāļ™ Enterprise Application 2. āļ—4āļēāļāļēāļĢāđƒāļŠ1 āļĢāļēāļĒāļāļēāļĢāđ‚āļ”āđ‰āļ§āļĒ Enterprise āļĒāđ€āļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻ)āļ­āļ URL āļ‚āļ­āļ‡ Web Browser āđ€āļ›0āļ™ http://localhost:8080/SessionBeanDemoWeb/CartManager?action=additem=125quantity=3 āļ—4āļēāļāļēāļĢāđƒāļŠ1 āļĢāļēāļĒāļāļēāļĢāđ€āļžāļąāļ’āļ™*āļĄāđ€āļ•āļĄāđ‚āļ”āđ‰āļ§āļĒ Enterprise āļĒāđ€āļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻ)āļ­āļ URL āļ‚āļ­āļ‡ Web Browser āđ€āļ›0āļ™ http://localhost:8080/SessionBeanDemoWeb/CartManager?action=additem=123quantity=2 3. āđāļŠāļ”āđ‰āļ§āļĒ Enterprise āļ‡āļĢāļēāļĒāļāļēāļĢāđƒāļ™ Cart āđ‚āļ”āđ‰āļ§āļĒ Enterprise āļĒāđ€āļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻ)āļ­āļ URL āđ€āļ›0āļ™ http://localhost:8080/SessionBeanDemoWeb/CartManager?action=list 4. āļ—āļ”āđ‰āļ§āļĒ Enterprise āļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻāļ­āļ‡āļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻāļšāļĢāļēāļĒāļāļēāļĢāđ‚āļ”āđ‰āļ§āļĒ Enterprise āļĒāđ€āļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻ)āļ­āļ URL āļ‚āļ­āļ‡ Web Browser āđ€āļ›0āļ™ http://localhost:8080/SessionBeanDemoWeb/CartManager?action=removeitem=123 5. āđāļŠāļ”āđ‰āļ§āļĒ Enterprise āļ‡āļĢāļēāļĒāļāļēāļĢāđƒāļ™ Cart āđƒāļŦāļĄ1āđ‚āļ”āđ‰āļ§āļĒ Enterprise āļĒāđ€āļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻ)āļ­āļ URL āđ€āļ›0āļ™ http://localhost:8080/SessionBeanDemoWeb/CartManager?action=list āļāļēāļĢāļžāļąāļ’āļ™āļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ”āđ‰āļ§āļĒ Enterprise āļ§āļĒ Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 27. 27 Exercise 3 Entity Class (JPA) āđāļšāļš/.āļāļŦāļ”āđ‰āļ§āļĒ Enterprise āđƒāļ™āļšāļ—āļ™āđ€āļ›0āļ™āļāļēāļĢāļžāļąāļ’āļ™āļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄ Enterprise Java Bean (EJB) āđ‚āļ”āđ‰āļ§āļĒ Enterprise āļĒāļˆāļ°āđ€āļ›0āļ™āļāļēāļĢāļžāļąāļ’āļ™āļ’āļ™āļē āđ‚āļ›āļĢāđāļāļĢāļĄāļ•āļ”āđ‰āļ§āļĒ Enterprise āļ•1āļ­āļāļšāļāļēāļ™āļ‚āļ­āļĄāļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻ MySQL āđ‚āļ”āđ‰āļ§āļĒ Enterprise āļĒāđƒāļŠāđ‰āđƒāļ™āļāļēāļĢāļ›āļĢāļ°āļāļ­ EJB3.0 āļšāļ™ JBoss Application Server āļˆāļ°āļ›āļĢāļ°āļāļ­āļšāļ”āđ‰āļ§āļĒ Enterprise āļ§āļĒ Entity Class āļ—*āđ€āļŠāđ‰āđƒāļ™āļāļēāļĢāļ›āļĢāļ°āļāļ­)*āļ­āļĄāđ‚āļĒāļ‡āļāļšāļ•āļēāļĢāļēāļ‡āļ—*āļŠāđ‰āđƒāļ™āļāļēāļĢāļ›āļĢāļ°āļāļ­)*āļ­ books āđāļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻāļ° Session Bean āđ€āļžāļąāļ’āļ™)*āļ­āđƒāļŠāđ‰āđƒāļ™āļāļēāļĢāļ›āļĢāļ°āļāļ­āđƒāļ™āļāļēāļĢāļˆāļ”āđ‰āļ§āļĒ Enterprise āļāļēāļĢāđ€āļžāļąāļ’āļ™*āļĄ āđāļāđ„āļ‚ āđāļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻāļ°āļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻāļšāļ‚āļ­āļĄāļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻ āđƒāļ™ table books āđ„āļ”āđ‰āļ§āļĒ Enterprise āļ‚āļ™āļ•āļ­āļ™āđƒāļ™āļāļēāļĢāļžāļąāļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄ 1. āļŠāļĢāļēāļ‡ Enterprise Application Project 2. āļžāļąāļ’āļ™āļ’āļ™āļē Entity Class 3. āļžāļąāļ’āļ™āļ’āļ™āļē Session Bean 4. āļžāļąāļ’āļ™āļ’āļ™āļē Web Application 3.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 3.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
  • 30. 30 āļĢāļ›āļ—āļĩāđˆ 3.2 Configuration āļŠ%āļ§āļ™āļ‚āļ­āļ‡ EclipseLink āđƒāļ™ EJB Project 4. āļŠāļĢāļēāļ‡ JNDI DataSource āđƒāļŦ JBoss (āļ„āļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻāļēāļĒāļāļšāļāļēāļĢāđ€āļžāļąāļ’āļ™*āļĄ file context.xml āđƒāļ™ Tomcat6) āđ€āļ›āļ”āđ‰āļ§āļĒ Enterprise Folder $JBOSS_HOMEdocsexamplesjca āđāļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻāļ§ copy file mysql-ds.xml āđ„āļ›āļ—* $JBOSS_HOMEserverdefaultdeploy 5. āļ—4āļēāļāļēāļĢ config file mysql-ds.xml āļ”āđ‰āļ§āļĒ Enterprise āļ‡āļĢāļ› āļĢāļ›āļ—āļĩāđˆ 3.3 Config JNDI Context āđƒāļŦāđ‰ Web Projec JBoss āļāļēāļĢāļžāļąāļ’āļ™āļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ”āđ‰āļ§āļĒ Enterprise āļ§āļĒ Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 31. 31 6. Config persistence.xml āđƒāļ™ BookAppEJB āđ€āļžāļąāļ’āļ™)*āļ­āđƒāļŦ JPA āđƒāļŠāđ‰āđƒāļ™āļāļēāļĢāļ›āļĢāļ°āļāļ­ Database āļ—*āļĢāļ°āļš' āļĢāļ›āļ—āļĩāđˆ 3.4 Config persistence.xml 7. āļ—4āļēāļāļēāļĢāđ€āļžāļąāļ’āļ™*āļĄ JVM Arguments -Djava.endorsed.dirs=$JBOSS_HOME/lib/endorsed āļĢāļ›āļ—āļĩāđˆ 3.5 Config persistence.xml 8. Add (Deploy) BookApp āļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻāļ‡ JBoss āđāļĨāļąāļāļŠāļđāļ•āļĢ Mini Master of Java Technology āļ„āļ“āļ°āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻāļ°āļ—4āļēāļāļēāļĢ Start JBoss Application Server Monitor āļ”āđ‰āļ§āļĒ Enterprise log āļ—* Console āļ•āļ­āļ‡āđ„āļĄ1āļžāļąāļ’āļ™āļš ERROR āļāļēāļĢāļžāļąāļ’āļ™āļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ”āđ‰āļ§āļĒ Enterprise āļ§āļĒ Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 32. 32 3.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 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; } } āļāļēāļĢāļžāļąāļ’āļ™āļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ”āđ‰āļ§āļĒ Enterprise āļ§āļĒ Enterprise Java Bean 3.0 Assoc.Prof.Dr.Thanachart Numnonda/ Asst Prof.Thanisa Kruawaisayawan
  • 34. 34 3.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 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 āđ‚āļ”āđ‰āļ§āļĒ 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.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) āđāļšāļš/.āļāļŦāļ”āđ‰āļ§āļĒ 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