ທ່ານມີຊໍແວຂອງທ່ານຢູ່ແລ້ວ, ແຕ່ທ່ານຍັງຕ້ອງການວິທີການທີ່ມີປະສິດທິພາບຫຼາຍຂຶ້ນເພື່ອໃຫ້ຜູ້ໃຊ້ດ້ານວິຊາການຂອງທ່ານຂະຫຍາຍເວທີ.
ເຖິງແມ່ນວ່າ OSGi ເປັນທີ່ຮູ້ຈັກດີສໍາລັບນັກພັດທະນາ Java ສ່ວນໃຫຍ່, ການລວມເອົາມັນເຂົ້າໄປໃນຜະລິດຕະພັນຂອງທ່ານອາດເບິ່ງຄືວ່າເປັນວຽກທີ່ຫນ້າຢ້ານກົວ. ການຂາດຄວາມກະຈ່າງແຈ້ງກ່ຽວກັບການເຮັດວຽກທີ່ຊັດເຈນຂອງ OSGi ຍັງເຮັດໃຫ້ເສັ້ນທາງກ້າວໄປຂ້າງຫນ້າ.
ກົງກັນຂ້າມກັບສິ່ງທີ່ພວກເຂົາຢາກຈະທົດລອງ, OSGi ມີຄວາມຮູ້ສຶກຄືກັບການພະຍາຍາມແລ່ນເຮືອໃນທະເລກວ້າງໄປຫາຜູ້ພັດທະນາ Java ຫຼາຍຄົນ.
ບົດຄວາມນີ້ຈະແນະນໍາໃຫ້ທ່ານກັບ OSGi Felix tutorial ພາກຮຽນ spring ໂດຍນໍາໃຊ້ໂຄງການທີ່ກົງໄປກົງມາແລະໂດຍຜ່ານການ, ຂໍ້ດີຂອງຕົນ, ແລະລາຍລະອຽດທີ່ສໍາຄັນອື່ນໆ.
ດັ່ງນັ້ນ OSGi ແມ່ນຫຍັງ?
ການສ້າງແລະແຈກຢາຍໂມດູນແລະອົງປະກອບແມ່ນເປັນໄປໄດ້ໂດຍກອບຂອງ Java ທີ່ເອີ້ນວ່າ OSGi (Open Service Gateway Initiative).
ມັນເນັ້ນຫນັກເຖິງການຫຸ້ມຫໍ່ຟັງຊັນແລະການ coupling ວ່າງ, ເຊິ່ງສະເຫນີຂໍ້ໄດ້ປຽບຫຼາຍຢ່າງກັບນັກພັດທະນາ, ລວມທັງການເຮັດວຽກແບບໂມດູນທີ່ສາມາດໂອນໄດ້ງ່າຍລະຫວ່າງລະຫັດແຫຼ່ງແລະການທົດສອບທີ່ບໍ່ຕ້ອງການຄວາມເພິ່ງພາອາໄສທີ່ບໍ່ສິ້ນສຸດ.
OSGi ເຮັດວຽກແນວໃດ?
ລະບົບອົງປະກອບແບບເຄື່ອນໄຫວສໍາລັບ Java ແມ່ນຖືກກໍານົດໂດຍຊຸດຂອງສະເພາະທີ່ເອີ້ນວ່າ OSGi. ຂໍ້ມູນຈໍາເພາະເຫຼົ່ານີ້ເຮັດໃຫ້ວິທີການພັດທະນາທີ່ແອັບພລິເຄຊັນຖືກສ້າງຈາກຫຼາຍໆພາກສ່ວນແລະຫຼັງຈາກນັ້ນຖືກຫຸ້ມຫໍ່ເປັນມັດ.
ການບໍລິການທ້ອງຖິ່ນແລະເຄືອຂ່າຍແມ່ນໃຊ້ໂດຍອົງປະກອບເຫຼົ່ານີ້ເພື່ອຕິດຕໍ່ສື່ສານ. ການເຮັດໃຫ້ລະຫັດຫຼັກຂອງໂຄງການມີຄວາມຫນາແຫນ້ນເທົ່າທີ່ເປັນໄປໄດ້ແມ່ນຈຸດປະສົງ. ການສົມທົບສູງລະຫວ່າງລະຫັດນີ້ແລະອົງປະກອບຈໍານວນຫນຶ່ງແມ່ນເປັນໄປໄດ້.
ອົງປະກອບການກໍ່ສ້າງທີ່ສາມາດນໍາໃຊ້ຄືນໄດ້ຂອງຄໍາຮ້ອງສະຫມັກແມ່ນເອີ້ນວ່າອົງປະກອບ. ຄິດກ່ຽວກັບລັກສະນະເຊັ່ນໂຄງຮ່າງການຊື້ເຄື່ອງສໍາລັບເວັບໄຊທ໌ອີຄອມເມີຊຂອງທ່ານຫຼືຄໍາຮ້ອງສະຫມັກການຈ່າຍເງິນສໍາລັບລະບົບການຄຸ້ມຄອງພະນັກງານຂອງທ່ານ.
ອົງປະກອບສາມາດນໍາໃຊ້ OSGi ເພື່ອຊ່ອນການປະຕິບັດຂອງພວກເຂົາຈາກອົງປະກອບອື່ນໆແລະພຽງແຕ່ສະຫນອງຂໍ້ມູນທີ່ຈໍາເປັນໃຫ້ພວກເຂົາຜ່ານການບໍລິການ.
ນີ້ປ້ອງກັນບໍ່ໃຫ້ອົງປະກອບຈາກການປ່ຽນແປງຂໍ້ມູນທີ່ບໍ່ໄດ້ຕັ້ງໃຈທີ່ພວກເຂົາບໍ່ຄວນມີການເຂົ້າເຖິງແລະຈັດການການເພິ່ງພາອາໄສ.
ການເຊື່ອມຕໍ່ທັງໝົດລະຫວ່າງອົງປະກອບໃນແອັບພລິເຄຊັນ OSGi ແມ່ນເຮັດຜ່ານການບໍລິການໃນໂລກທີ່ເໝາະສົມ. ແພັກເກັດ Java ປະກອບມີ API ທີ່ລະບຸໄວ້ສໍາລັບການບໍລິການ.
ການຮ່ວມມືລະຫວ່າງຜູ້ໃຫ້ບໍລິການແລະລູກຄ້າຮຽກຮ້ອງໃຫ້ມີການນໍາໃຊ້ຊັ້ນຮຽນແລະ / ຫຼືການໂຕ້ຕອບ, ເຊິ່ງປະກອບເປັນ API.
ອົງປະກອບ OSGi ທັງໝົດຖືກຫຸ້ມຫໍ່ເຂົ້າກັນເປັນມັດ, ແຕ່ລະອັນປະກອບມີຊັບພະຍາກອນທີ່ເຂົາເຈົ້າຕ້ອງການເພື່ອເຮັດວຽກ. ມັດແມ່ນຂ້ອນຂ້າງຈະແຈ້ງກ່ຽວກັບສິ່ງທີ່ເຂົາເຈົ້າຕ້ອງການຈາກສະພາບແວດລ້ອມແລະສິ່ງທີ່ເຂົາເຈົ້າມີຄວາມສາມາດ.
ຜົນປະໂຫຍດ
- ແອັບພລິເຄຊັນ OSGi ມີການເຂົ້າເຖິງບ່ອນເກັບມ້ຽນມັດພາຍນອກ.
- ໂຄງຮ່າງການອະນຸຍາດໃຫ້ອອກແບບການບໍລິການທີ່ຮັດກຸມໃນລະດັບໂມດູນ.
- ມັນເຮັດໃຫ້ມັນເປັນໄປໄດ້ທີ່ຈະຈັດການສະບັບແລະຄວາມເພິ່ງພາອາໄສຂອງຊຸດແອັບພລິເຄຊັນນອກເຫນືອຈາກການກໍານົດມາດຕະຖານແລະເຮັດໃຫ້ມັນງ່າຍຕໍ່ການເຊື່ອມໂຍງຫ້ອງສະຫມຸດພາກສ່ວນທີສາມ.
- ແອັບພລິເຄຊັ່ນສາມາດປັບຕົວເຂົ້າກັບຄວາມຕ້ອງການທີ່ປ່ຽນແປງໄດ້ຫຼາຍຂື້ນ, ສາມາດພົກພາໄດ້ຫຼາຍຂຶ້ນ, ແລະໄວຂຶ້ນເພື່ອປ່ຽນວິສະວະກອນ.
- A web application ສາມາດຖືກນຳໃຊ້ເປັນກຸ່ມຊຸດ OSGi ລຸ້ນທີ່ມີຊີວິດຊີວາຍ້ອນການລວມຕົວຂອງກອບກັບຕົວແບບການຂຽນໂປຣແກຣມ Java EE.
- ແທນທີ່ຈະຖືກຕິດຕັ້ງເປັນຫ້ອງສະຫມຸດພາກສ່ວນທີສາມເປັນສ່ວນຫນຶ່ງຂອງຄໍາຮ້ອງສະຫມັກ, ກອບສະຫນອງການປະກອບການປະກາດແລະການທົດສອບຫນ່ວຍງານປັບປຸງຂອງ Spring Framework ໃນຮູບແບບມາດຕະຖານທີ່ສະຫນອງໃຫ້ເປັນສ່ວນຫນຶ່ງຂອງ runtime ເຄື່ອງແມ່ຂ່າຍຂອງຄໍາຮ້ອງສະຫມັກ.
- ສໍາລັບຄໍາຮ້ອງສະຫມັກຂອງບໍລິສັດທີ່ປະກອບດ້ວຍຊຸດຫຼາຍຮຸ່ນທີ່ມີວົງຈອນຊີວິດແບບເຄື່ອນໄຫວ, ກອບສະຫນອງການໂດດດ່ຽວ.
- ມັນມີບ່ອນເກັບມ້ຽນມັດປະສົມປະສານທີ່ສາມາດເກັບຮັກສາຊຸດທີ່ແບ່ງປັນທົ່ວໄປແລະສະບັບທີ່ໃຊ້ໂດຍແອັບພລິເຄຊັນຈໍານວນຫນຶ່ງ, ປ້ອງກັນບໍ່ໃຫ້ແຕ່ລະແອັບພລິເຄຊັນນໍາໃຊ້ສໍາເນົາແຍກຕ່າງຫາກຂອງແຕ່ລະຫ້ອງສະຫມຸດທີ່ໃຊ້ຮ່ວມກັນ.
ເລີ່ມຕົ້ນດ້ວຍ OSGi Felix ພາກຮຽນ spring
ໄດ້ຮັບຊັບພະຍາກອນ
ໂດຍການດາວໂຫຼດ Apache Karaf ເວີຊັນຫຼ້າສຸດຈາກ ເວັບໄຊທ໌ນີ້, ພວກເຮົາສາມາດເລີ່ມຕົ້ນການຜະຈົນໄພ OSGi ຂອງພວກເຮົາ.
ອີງໃສ່ Apache Felix, ການປະຕິບັດ Apache ຂອງ OSGi ສະເພາະ, Apache Karaf ສະຫນອງເວທີສໍາລັບຄໍາຮ້ອງສະຫມັກທີ່ໃຊ້ OSGi.
Karaf ສະຫນອງຄຸນສົມບັດທີ່ເປັນປະໂຫຍດຕ່າງໆຢູ່ເທິງສຸດຂອງ Felix ທີ່ຈະຊ່ວຍໃຫ້ພວກເຮົາຄຸ້ນເຄີຍກັບ OSGi, ເຊັ່ນການໂຕ້ຕອບເສັ້ນຄໍາສັ່ງທີ່ຈະຊ່ວຍໃຫ້ພວກເຮົາຕິດຕໍ່ສື່ສານກັບເວທີ.
ຈຸດເຂົ້າສໍາລັບ Bundles
ແອັບພລິເຄຊັນຕ້ອງຖືກຫຸ້ມຫໍ່ເປັນຊຸດ OSGi ກ່ອນທີ່ຈະສາມາດດໍາເນີນການໄດ້ໃນສະພາບແວດລ້ອມ OSGi. ນອກຈາກນັ້ນ, ຈຸດເຂົ້າຄໍາຮ້ອງສະຫມັກຕ້ອງໄດ້ຮັບການກໍານົດ; ມັນບໍ່ແມ່ນມາດຕະຖານສາທາລະນະ static void main(String[] args).
ສະນັ້ນໃຫ້ເລີ່ມຕົ້ນດ້ວຍການສ້າງ "ສະບາຍດີໂລກ” ຄໍາຮ້ອງສະຫມັກໂດຍອີງໃສ່ OSGi.
ພວກເຮົາເລີ່ມຕົ້ນໂດຍການສ້າງຕັ້ງພື້ນຖານ OSGi API ຂຶ້ນກັບ:
ເວລາແລ່ນ OSGi ຈະມີການເຂົ້າເຖິງການເພິ່ງພາອາໄສ, ສະນັ້ນ ມັດຈຶ່ງບໍ່ຈຳເປັນຕ້ອງບັນຈຸມັນ. ດັ່ງນັ້ນ, ມັນຖືກໝາຍວ່າສະໜອງໃຫ້.
ຕອນນີ້ໃຫ້ພວກເຮົາສ້າງຫ້ອງຮຽນ HelloWorld ແບບກົງໄປກົງມາ:
ຫ້ອງຮຽນທີ່ເຮັດໜ້າທີ່ເປັນຈຸດເຂົ້າສຳລັບຊຸດຈະຕ້ອງປະຕິບັດການໂຕ້ຕອບ BundleActivator ທີ່ສະໜອງໃຫ້ OSGi.
ເມື່ອ bundle ທີ່ມີຫ້ອງຮຽນນີ້ຖືກເປີດຕົວ, ແພລະຕະຟອມ OSGi ເອີ້ນຟັງຊັນ start(). ໃນອີກດ້ານຫນຶ່ງ, ບໍ່ດົນກ່ອນທີ່ມັດຈະຖືກຢຸດ, ຫນ້າທີ່ຢຸດ () ຖືກເອີ້ນວ່າ.
ຢ່າລືມວ່າແຕ່ລະ bundle ສາມາດມີ BundleActivator ດຽວເທົ່ານັ້ນ. ທັງສອງວິທີສາມາດສື່ສານກັບ OSGi runtime ໂດຍໃຊ້ວັດຖຸ BundleContext ທີ່ໄດ້ຮັບ.
ການສ້າງຊຸດ
ເຮັດໃຫ້ pom.xml ເປັນມັດ OSGi ທີ່ແທ້ຈິງໂດຍການເຮັດການປ່ຽນແປງທີ່ຈໍາເປັນ.
ພວກເຮົາທໍາອິດຕ້ອງສະແດງອອກຢ່າງຊັດເຈນວ່າເປົ້າຫມາຍຂອງພວກເຮົາແມ່ນການຜະລິດມັດ.
ຫຼັງຈາກນັ້ນ, ພວກເຮົາໃຊ້ maven-bundle-plugin ເພື່ອຫຸ້ມຫໍ່ຊັ້ນຮຽນ HelloWorld ເປັນຊຸດ OSGi, ມາລະຍາດຂອງຊຸມຊົນ Apache Felix:
ຄ່າຂອງສ່ວນຫົວ OSGi ທີ່ພວກເຮົາຕ້ອງການລວມຢູ່ໃນໄຟລ໌ MANIFEST ຂອງມັດແມ່ນໄດ້ລະບຸໄວ້ໃນພາກຄໍາແນະນໍາ.
Bundle-Activator ແທ້ຈິງແລ້ວແມ່ນຊື່ທີ່ມີຄຸນວຸດທິທີ່ຖືກຕ້ອງຂອງການແກ້ໄຂ BundleActivator ທີ່ຈະຖືກຈ້າງເພື່ອເລີ່ມຕົ້ນແລະຢຸດຊຸດ. ມັນເຂົ້າກັນໄດ້ກັບຫ້ອງຮຽນພຽງແຕ່ສ້າງ.
ໃນຂະນະທີ່ມັນບໍ່ແມ່ນສ່ວນຫົວຂອງ OSGi, ສ່ວນຫົວຂອງ Private-Package ຈະສັ່ງໃຫ້ plugin ເພີ່ມຊຸດໃສ່ໃນ bundle ແຕ່ບໍ່ເຮັດໃຫ້ມັນເຂົ້າເຖິງ plugins ອື່ນໆ. ຄໍາສັ່ງການຕິດຕັ້ງ mvn ຄວນຖືກນໍາໃຊ້ເພື່ອສ້າງຊຸດ.
ການຕິດຕັ້ງແລະດໍາເນີນການ Bundle ໄດ້
ໃຫ້ເລີ່ມຕົ້ນ Karaf ໂດຍການແລ່ນຄໍາສັ່ງນີ້:
ບ່ອນທີ່ "KARAF HOME" ຫມາຍເຖິງໂຟນເດີທີ່ Karaf ຖືກຕັ້ງ. ພວກເຮົາສາມາດໃຊ້ຄໍາສັ່ງຕໍ່ໄປນີ້ເພື່ອຕິດຕັ້ງມັດໃນເວລາທີ່ Karaf console prompt ປາກົດ:
ການນໍາໃຊ້ບ່ອນເກັບມ້ຽນ Maven ທ້ອງຖິ່ນແມ່ນວິທີທີ່ Karaf ຖືກບອກໃຫ້ໂຫລດມັດ.
ກັບຄືນ ID ຕົວເລກຂອງມັດ, Karaf ຂຽນມັນອອກ. ID ນີ້ອາດຈະແຕກຕ່າງກັນໂດຍຂຶ້ນກັບຈໍານວນຊຸດທີ່ໄດ້ຖືກຕິດຕັ້ງຜ່ານມາ. ມັດໄດ້ຖືກຕິດຕັ້ງຢ່າງສໍາເລັດຜົນແລ້ວ, ແລະຄໍາສັ່ງທີ່ຈະເປີດຕົວມັນແມ່ນດັ່ງຕໍ່ໄປນີ້:
ໃນປັດຈຸບັນທີ່ທ່ານເປີດຕົວຊຸດ, "ສະບາຍດີໂລກໂດຍ Jay" ສະແດງ. ດຽວນີ້ພວກເຮົາສາມາດຢຸດແລະເອົາຊຸດອອກໂດຍໃຊ້:
ຄອນໂຊນສະແດງ "Goodbye World ໂດຍ Jay."
ສະຫຼຸບ
ນັກພັດທະນາສາມາດເພີ່ມການທໍາງານໃຫມ່ໄດ້ຢ່າງງ່າຍດາຍກັບຄໍາຮ້ອງສະຫມັກເວັບໄຊຕ໌ທີ່ມີຢູ່ແລ້ວໃນຂະນະທີ່ຮັກສາມັນປອດໄພແລະແຍກອອກຈາກອົງປະກອບອື່ນໆຂອງໂຄງການຕົ້ນຕໍໂດຍການນໍາໃຊ້ OSGi.
ພວກເຮົາໄດ້ຮຽນຮູ້ກ່ຽວກັບ OSGi ໃນບົດຂຽນນີ້, ລວມທັງວິທີການເຮັດວຽກ, ຂໍ້ດີຂອງມັນ, ແລະໂຄງການທີ່ກົງໄປກົງມາ. ມັນບໍ່ຍາກທີ່ຈະລວມເອົາ OSGi ເຂົ້າໃນແອັບພລິເຄຊັນຂອງທ່ານເອງ.
ຍິນດີໃສ່ລະຫັດ!
ອອກຈາກ Reply ເປັນ