Resource နှင့် JNDI Namming
Distributed Application တစ်ခုအတွင်းရှိ Components များသည် အခြားသော Components များနှင့် Resources များအား ဆက်သွယ်အသုံးပြုရန် လိုအပ်ပါသည်။ ဥပမာအားဖြင့် Servlet တစ်ခုသည် အခြားသော Enterprise Bean တစ်ခု၏ Remote Method ကို ခေါ်ယူ၍၊ Database အတွင်းရှိ အချက်အလက်များအား အသုံးပြုနိုင်ရန် လိုအပ်ခြင်း ဖြစ်၏။ Java EE Platform ပေါ်တွင် JNDI Naming Service ကို အသုံးပြု၍ Component တစ်ခုအတွင်း အခြားသော Components များနှင့် Resource များအား ခေါ်ယူ အသုံးပြုနိုင်ရန် အကူအညီပေးနိုင်ပါသည်။
အထက်တွင်ဖော်ပြထားသကဲ့သို့ပင် Resource ဆိုသည်မှာ Program Object တစ်ခုဖြစ်ပြီး အခြားသော Database System ကဲ့သို့သော Systems များအား ဆက်သွယ်အသုံးပြုနိုင်ရန် Connection များအား ပံ့ပိုးပေးပါသည်။ အဆိုပါ Resource Object များအား System တစ်ခုလုံးတွင် တစ်ခုတည်းသာ တည်ရှိသော၊ အသုံးပြုသူအတွက် မှတ်မိလွယ်ကူပြီး နားလည်လွယ်ကူစေသော အမည်ဖြင့် သတ်မှတ်ပေးရန် လိုအပ်ပါသည်။ ထိုအမည်ကို JNDI Name ဟု ခေါ်ဆိုပါသည်။
Administrator တစ်ယောက်သည် JNDI Namespaces အတွင်းတွင် Resources Object များအား တည်ဆောက်ထားနိုင်၏။ Glassfish Server အား အသုံးပြုမည်ဆိုပါက Admin Console မှတဆင့်သော်၎င်း၊ asadmin Command အား အသုံးပြု၍သော်၎င်း Resource များအား တည်ဆောက်နိုင်ပါသည်။ တည်ဆောက်ထားသော Resources များအား JNDI API အား တိုက်ရိုက်အသုံးပြု၍ သော်၎င်း၊ Annotation အား အသုံးပြု၍သော်၎င်း ခေါ်ယူ အသုံးပြုနိုင်ပါသည်။ Annotation သည် Java EE Container များအတွင်းတွင် Manage လုပ်ထားသော Resources များအား Application များအတွင်းသို့ Inject လုပ်ပေးနိုင်၏။ Java EE Container သည် Resource အား Inject လုပ်မည့် Annotation အားတွေ့ရှိပါက၊ JNDI API အား အသုံးပြုကာ Resource များအား ကြိုတင် Create လုပ်ထားပြီး၊ Application အတွင်းမှ Resource အား အသုံးပြုနိုင်အောင် ပြင်ဆင်ထားပါသည်။
Resource တစ်ခုအား Create လုပ်မည်ဆိုပါက JNDI Name နှင့် Resource Object အား ပူးတွဲ၍ JNDI Namespaces အတွင်းတွင် သိမ်းဆည်းပြီး၊ ၎င်း name/object အတွဲအား Naming and Directory Service မှ Manage လုပ်မည် ဖြစ်သည်။ Application တစ်ခုအတွင်းသို့ @Resource Annotation အား အသုံးပြု၍ Resource Object များအား Inject လုပ်နိုင်မည် ဖြစ်ပါသည်။ ဤကဲ့သို့ Object တစ်ခုအတွင်းတွင် အခြားသော Object များအား New လုပ်ရန် မလိုအပ်အောင်စီမံနိုင်ခြင်းအားဖြင့် Object တစ်ခုနှင့် တစ်ခုအကြားရှိ Coupling ဖြစ်ပွားမှု့ကို နည်းပါးစေပြီး Reusable ဖြစ်ပြီး၊ Maintenance လုပ်ရလွယ်ကူသော Component များအား ရေးသားနိုင်ရန် အကူအညီပေးနိုင်ပါသည်။
Application များအတွင်းတွင် ရေးသားထားသော Annotation များ၏ Specification Mapping များနှင့် Resource များအား Override လုပ်လိုပါက Deployment Descriptor များအား ပြုပြင်ရေးသား၍ အသုံးပြုနိုင်သည်။ Deployment Descriptor များအား အသုံးပြုခြင်းအားဖြင့်၊ Source Code များအား ပြန်လည် Compile လုပ်ခြင်း၊ Packaging လုပ်ခြင်းတို့ကို ပြုလုပ်စရာမလိုပဲ Application များအားပြုပြင် ပြောင်းလည်းနိုင်၏။
DataSource Object နှင့် Connection Pools
Application အတော်များများသည် အသုံးပြုနေသော Data များအား စုစည်းသိမ်းဆည်းရန်၊ သိမ်းဆည်းထားသော Data များအား ပြန်လည်ခေါ်ယူ အသုံးပြုရန် အတွက် Relational Database များအား အသုံးပြုကြ၏။ Java EE 7 Components များသည် JDBC API အားအသုံးပြု၍ Relational Database များအား ဆက်သွယ် အသုံးပြုနိုင်၏။
JDBC API အတွင်းတွင် DataSource Object များအား အသုံးပြု၍ Database များအား ဆက်သွယ်နိုင်ပါသည်။ DataSource အတွင်းတွင် Properties Set တစ်ခုကိုပိုင်ဆိုင်ပြီး၊ ၎င်း Properties များဖြင့် Database တစ်ခုအား ဆက်သွယ်ရန် အတွက် လိုအပ်သော အချက်အလက်များကို သတ်မှတ်ရေးသားရန် လိုအပ်ပါသည်။ များသောအားဖြင့် သတ်မှတ်ရန်လိုအပ်သော အချက်အလက်များမှာ အသုံးပြုမည့် Database ၏ တည်နေရာ၊ အမည်၊ Network Protocol၊ User name နှင့် Password တို့ ဖြစ်ကြ၏။ Glassfish Server ပေါ်တွင် DataSource များအား JDBC Resources ဟု ခေါ်ဆိုပါသည်။
Application များသည် Data Source များအား Connection Object များဖြင့် ဆက်သွယ်နိုင်ပြီး၊ DataSource Object များသည် ၎င်း၏ Properties များဖြင့် သတ်မှတ်ထားသော Data Source များအား ဆက်သွယ်နိုင်သည့် Connection များအား ထုတ်လုပ်ပေးနိုင်သည့် Factory အနေဖြင့် အသုံးပြုနိုင်သည်။ DataSource#getConnection အား အသုံးပြုခြင်းအားဖြင့် Connection Object များအား ရယူနိုင်ပါသည်။
DataSource Object များသည် Connection Pool များအား တည်ဆောက်ထားပြီး၊ getConnection Method အား ခေါ်ယူသည့် အခါ ၎င်းက Manage လုပ်ထားသော Pool အတွင်းမှ Connection Object အား ပြန်၍ပေးပါသည်။ အကယ်၍ Application အတွင်းမှ Connection Object အား အသုံးပြုပြီး၍ Close လုပ်သည့်အခါတွင် DataSource Object သည် ၎င်း Connection Object အား ပြန်လည်အသုံးပြုနိုင်သော Connection ဖြစ်အောင်ပြောင်းလည်းပြီး၊ Connection Pool အတွင်းတွင် ပြန်လည်သိမ်းဆည်းထားပါသည်။ Application အတွင်းမှ Connection အား တောင်းယူသည့်ခါ Pool အတွင်းရှိ အသုံးပြုရန် အသင့် ဖြစ်နေသော Connection အား ပြန်ပေးပါသည်။ Connection Pool အား အသုံးပြုခြင်းအားဖြင့် Physical Connection အား အသစ်တည်ဆောက်ရန် မလိုအပ်တော့ပါသဖြင့် Application ၏ Performance အား သိသိသာသာ ကောင်းမွန်လာစေပါသည်။
JPA API အား အသုံးပြုသည့် Application များတွင် persistence.xml ၏ jta-data-source Element တွင် အသုံးပြုမည့် DataSource Object ၏ JNDI Name အား သတ်မှတ်ရေးသားနိုင်၏။
<jta-data-source>jdbc/address_db</jta-data-source>
ဤကဲ့သို့ရေးသားထားခြင်း အားဖြင့် Application အတွင်းတွင် JDBC Object များအား ရေးသားရန်မလိုပဲ၊ Database များအား အသုံးပြု၍ မိမိ၏ Entity များအား ထာဝရအသုံးပြုနိုင်သော Entity များအဖြစ် Manage လုပ်နိုင်မည် ဖြစ်သည်။
Resources များအား Create လုပ်ခြင်း
Java EE Application အား Glassfish Server အပေါ်သို့ Deploy လုပ်၍ အသုံးမချခင် အသုံးပြုမည့် Resource များအား ကြိုတင် Create လုပ်ထားရန် လိုအပ်ပါသည်။ Resource များအား Glassfish Server ၏ Admin Console မှ Create လုပ်၍သော်၎င်း၊ asadmin command အား အသုံးပြု၍ Application တိုင်းအတွက် glassfish-resource.xml အား create လုပ်၍သော်၎င်း အသုံးပြုနိုင်ပါသည်။ အောက်ပါ Command ဖြင့် Resource Configuration file အား Create လုပ်နိုင်ပါသည်။
Command | Remarks |
---|---|
asadmin create-resources glassfish-resource.xml | Resource File အား Create လုပ်ခြင်း |
asadmin create-jms-resource | JMS Resource အား Create လုပ်ခြင်း |
asadmin list-jms-resources | Create လုပ်ထားသော JMS Resources များအား ပြန်ကြည့်ခြင်း |
asadmin delete-jms-resource | JMS Resource အား Delete လုပ်ခြင်း |
ပြီးပါက Glassfish Server အား Start လုပ်၍ Admin Console မှ Configure လုပ်ပါမည်။ Glassfish Server အား Local Host အပေါ်တွင် အသုံးပြုနေပါက http://localhost:4848/ ဖြင့် Admin Console အား ဆက်သွယ်နိုင်ပါသည်။ ထိုမှ တဆင့် Admin Console မှ JDBC Connection Pool အား တည်ဆောက်ပေးရပါမည်။ Admin Console ၏ ဘယ်ဘက် Common Tasks Menu အတွင်းရှိ Resources > JDBC Connection Pools ကို ရွေးချယ်ကာ New Button အား Click လုပ်၍ JDBC Connection Pool အသစ် တစ်ခုအား တည်ဆောက်နိုင်ပါသည်။
ပြီးပါက အောက်ဖော်ပြပါအတိုင်း Pool Name အား နှစ်သက်ရာ အမည်တစ်ခုကို ပေး၍၊ Resource Type တွင် javax.sql.ConnectionPoolDataSource ကိုရွေးချယ်ကာ၊ Database Driver Vender နေရာတွင် MySQL ကို ရွေးချယ်ရပါမည်။ ထို့နောက်တွင် Next Button အား Click လုပ်၍ Properties များအား သတ်မှတ်ပေးရပါမည်။
Property Name | Property Value |
---|---|
User | root |
ServerName | localhost |
DatabaseName | sample_db |
Password | admin |
Url | jdbc:mysql://localhost:3306/sample_db |
URL | jdbc:mysql://localhost:3306/sample_db |
ဆက်လက်၍ JDBC Resource အာ Create လုပ်ရန် လိုအပ်ပါသေးသည်။ Resources > JDBC > JDBC Resource ကို ရွေးချယ်၍ New Button အာ Click လုပ်ပါမည်။
အောက်တွင် ဖော်ပြထားသကဲ့သို့ JNDI Name တွင် နှစ်သက်ရာ အမည်တစ်ခုကို ဖြည့်စွက်၍ Pool Name တွင်၊ အပေါ်တွင် ပြုလုပ်ခဲ့သော JDBC Connection Pool အား ရွေးချယ်ကာ OK Button အား Click လုပ်ပါက JDBC Resource တစ်ခု တည်ဆောက်ပြီး ဖြစ်ပါလိမ့်မည်။
အောက်ပါအတိုင်း JDBC Resources အတွင်းတွင် Create လုပ်ထားသော Resource Name အား တွေ့ရှိပါက၊ အပလီကေးရှင်း အတွင်းမှ ခေါ်ယူ အသုံးပြုနိုင်မည် ဖြစ်ပါသည်။
ဆက်ပါဦးမည်။ လေးစားစွာဖြင့်။
မင်းလွင်
No comments:
Post a Comment