JAXB
- 2. JAXB
JAXB (Java Architecture for XML Binding) เป็ น Library ของ
Java ที่ใช้ เชื่อมโยง ภาษา XML กับ ภาษา JAVA ทาให้ การเชื่อม
เอกสาร XML กับ Object ที่เป็ น Java class ทาได้ ง่ายขึ ้น
- 3. Binding between XML Schema
and Java Classes
• JAXB มีการรองรับวิธีที่สะดวกและรวดเร็วในการเชื่อมโยงระหว่าง
XML Schema กับ Java Class
• มี 2 ขันตอน
้
• แปลงเอกสาร XML ให้ กลายเป็ น Java object (Unmarshalling)
• แปลง Java object กลับมาเป็ นเอกสาร XML(Marshalling)
• JAXB รองรับการสร้ าง XML schema จาก Java object ได้
- 4. JAXB Architecture
Schema Application Code
Generator
XML
Schema Package
Portable JAXB- javax.xml.bind
annotated
XML/Java classes
Schema Annotation-
Customization Complier
Binding driven Binding
Object Framework
Declarations Implementation
Factory
Schema to Java Application
Java to Schema
- 6. Architecture
• Schema compiler
เป็ นส่วนสาคัญที่ทาการแปลงหรื อเชื่อมโยง source schema กับกลุมของ
่
JAXB class ที่เป็ นโปรแกรมภาษา Java
• Schema generator
เป็ นการจับคูกลุมโปรแกรมที่มีอยูเ่ พื่อให้ ได้ schema ออกมา
่ ่
• Binding runtime framework
มีการเตรี ยม unmarshalling และ marshalling เพื่อให้ สามารถเข้ าถึง
จัดการและตรวจสอบเนื ้อหาใน XML ด้ วยการใช้ schema ที่ได้ มาและ
โปรแกรมที่มีอยู่
- 7. JAXB Binding Process
JAXB
Schema bind mapped
classes
follows Instances of
Unmarshal
(validate)
Docume
Objects
nt
marshal
(validate)
- 8. JAXB Binding Process
ขันตอนทัวไปในกระบวนการเชื่อมโยงข้ อมูลของ JAXB คือ
้ ่
1. Generate classes : XML Schema จะถูกนามาใช้ เป็ นตัว Input เพื่อที่จะให้ ตว ั
Complier สร้ าง Class JAXB ที่มาจาก Schema นันๆ ้
2. Compile classes : ทุก Class ที่ถกสร้ างขึ ้น Source File ต่างๆ และ โค้ ดโปรแกรม
ู
จะต้ องถูก Complier ตรงส่วนนี ้
3. Unmarshal : เอกสาร XML ที่เขียนขึ ้นตามข้ อจากัดต่างๆใน the source schema
จะถูก unmarshal โดย JAXB binding framework นอกจากนัน JAXB ยังสนับสนุน
้
การ unmarshal ข้ อมูล XML จากข้ อมูลอื่นๆ เช่น DOM, string buffers, SAX และอื่นๆ
4. Generate content tree : กระบวนการ unmarshal จะสร้ าง content tree ของ
Object ที่ได้ มาจากการสร้ าง JAXB class ต่างๆ ซึง content tree นี ้จะเป็ นตัวแทน
่
โครงสร้ างและหัวข้ อของ เอกสาร XML
- 9. JAXB Binding Process
5. Validate (optional) : อยู่ในขันตอนการ unmarshal ที่เป็ นการตรวจสอบเอกสาร
้
XML ก่อนจะสร้ าง content tree ซึงถ้ ามีการปรับเปลี่ยน content tree ในขันตอนที่ 6
่ ้
ขันต่อไปก็จะสามารถใช้ การดาเนินการแบบ JAXB Validate เพื่อเป็ นเหตุผลในการ
้
เปลี่ยนแปลงก่อนจะ marshal content กลับไปเป็ นเอกสาร XML
6. Process content: Client สามารถเปลี่ยนแปลงข้ อมูล XML ที่ถกแทนด้ วย Java
ู
content tree โดยความหมายของ interface ต่างๆถูกสร้ างโดย binding compiler
7. Marshal: เป็ นขันตอนที่ content tree ถูก marshal ออกมาเป็ นเอกสาร XML เป็ น 1
้
หรื อ มากกว่า 1 เอกสาร
- 10. Marshalling
• Marshalling ได้ เตรี ยม client application ที่สามารถแปลง Java
object ไปเป็ นเอกสาร XML
• โดยปกติแล้ วตอนที่สร้ างเอกสาร XML ตัว Marshal จะใช้ การ
เข้ ารหัสแบบ UTF-8
• นอกจากนี ้ยังมีข้อกาหนดว่า Java content tree จะต้ องถูกต้ อง
เมื่อเทียบกับ Schema เดิม เพื่อจะได้ marshal กลับไปเป็ นข้ อมูล
XML ได้
- 12. Validation
• Validation เป็ นกระบวนการตรวจสอบเอกสาร XML ซึงมีคณสมบัติตรงตาม
่ ุ
ข้ อกาหนดที่แสดงใน Schema
• ใน JAXB เวอร์ ชน 1.0 มีการเตรี ยมให้ มีการตรวจสอบขณะที่ทา unmarshal
ั่
• JAXB เวอร์ ชน 2.0 อนุญาตให้ มีการตรวจสอบขณะทา unmarshal และ
ั่
marshal ได้
• รูปแบบการทางาน Web service มีความหละหลวมในเรื่ องการอ่านข้ อมูลแต่
เข้ มงวดในการเขียนข้ อมูลออกมา เพื่อที่จะตอบสนองการทางานดังกล่าว ใน
ขันตอน validation จึงได้ เพิ่มขึ ้นมาในตอนทา marshal เพื่อที่จะเป็ นการยืนยัน
้
ว่ามันจะไม่ทาให้ เอกสาร XML เกิดความผิดพลาดเมื่อมีการเปลี่ยนแปลง
เอกสารในรูปแบบของ JAXB
- 13. Adventage
• Valid Data ได้ ข้อมูลที่ถกต้ อง : ใน JAXB Application ตามที่อธิบายไว้ ใน schema แล้ ว จะ
ู
ไม่อนุญาตให้ มีการสร้ างข้ อมูล Java object ที่ไม่ถกต้ องเด็ดขาด
ู
• Speed มีความรวดเร็ ว : สามารถทางานได้ รวดเร็ วด้ วยการใช้ วิธี Binding
• Ease of Use ใช้ งานง่าย : มันจะมี JAXB Compiler ที่เป็ นตัวประมวลผลโค้ ด ซึงให้ ความ
่
อิสระแก่นกพัฒนาได้ ลงมือเขียนและแก้ bug โค้ ดด้ วยตัวเอง โดยนักพัฒนาจะสามารถเขียน
ั
Application ในการเข้ าถึงข้ อมูล XML ผ่านทาง Java Interface
• Data Conversion การแปลงข้ อมูล : ข้ อมูลเอกสารใน XML สามารถนามาแปลงเป็ น Data
type ใน Java ได้
• Customization การปรับแต่ง : ตอนทา Binding schema จะสามารถปรับแต่งได้ ตาม
ต้ องการ
• Extensibility ความสามารถในการ Extend : คลาสที่ถกสร้ างขึ ้น จะสามารถนาไป extend
ู
ให้ สามารถเพิ่มฟั งก์ชนการทางานต่อไปได้
ั่