ساخت DukesBDay Managed Bean
January 5, 2008 02:52 PM
ا�?زودن Dependency روي Enterprise Bean Module
ماژول firstcup-war به برخي از کلاس هاي firstcup-ejb وابسته است. شما بايد وجود اين وابستگي را به NetBeans اعلام نماييد. بدين ترتيب:
1. روي ماژول firstcup_war کليک راست نماييد و properties را انتخاب نماييد.
2. از category ها Libraries را انتخاب نماييد.
3. روي Add Project کليک کنيد.
4. مسير myexample/firstcup را انتخاب نماييد.
5. پروژه firstcup-ejb را انتخاب کنيد.
6 دکمه Add Project JAR Files را کليک کنيد.
7. توجه کنيد که Build Required Projects تيک خورده باشد.
8. OK را کليک نماييد.
ساخت كلاس DukesBDay و تعري�? متغيرهاي لازم
DukesBDay ÙŠÚ© Backing Bean است. منظور از Backing BeanØŒ ÙŠÚ© Bean کنترل شده (managed Bean ) توسط JSF است Ú©Ù‡ براي ذخيره سازي داده هاي مربوط به مقادير کامپوننت هاي موجود در ص�?ØÙ‡ JSF به کار مي رود.
DukesBDay در واقع واسط بين ص�?ØØ§Øª JSF Ùˆ Business Tier است. ص�?ØØ§Øª JSF اطلاعات مورد نياز خود را از اين managed Bean دريا�?ت مي كنند Ùˆ به آن نيز تØÙˆÙŠÙ„ مي دهند.
براي ساخت کلاس DukesBDay اين مراØÙ„ را انجام دهيد:
ساخت يک کلاس خالي:
1. روي ماژول firstcup-war کليک راست کنيد.
2. از New گزينه Java Class را انتخاب نماييد.
3. نام کلاس را DukesBDay قرار دهيد.
4. Package را com.sun.firstcup.web وارد کنيد.
5. Finish را کليک کنيد.
ا�?زودن Enterprise Bean Reference:
6. درست بعد از سطر تعري�? کلاس (اولين سطر از بدنه کلاس) متغير private زير را به همراه عبارت EJB@ درج نماييد:
ماژول firstcup-war به برخي از کلاس هاي firstcup-ejb وابسته است. شما بايد وجود اين وابستگي را به NetBeans اعلام نماييد. بدين ترتيب:
1. روي ماژول firstcup_war کليک راست نماييد و properties را انتخاب نماييد.
2. از category ها Libraries را انتخاب نماييد.
3. روي Add Project کليک کنيد.
4. مسير myexample/firstcup را انتخاب نماييد.
5. پروژه firstcup-ejb را انتخاب کنيد.
6 دکمه Add Project JAR Files را کليک کنيد.
7. توجه کنيد که Build Required Projects تيک خورده باشد.
8. OK را کليک نماييد.
ساخت كلاس DukesBDay و تعري�? متغيرهاي لازم
DukesBDay ÙŠÚ© Backing Bean است. منظور از Backing BeanØŒ ÙŠÚ© Bean کنترل شده (managed Bean ) توسط JSF است Ú©Ù‡ براي ذخيره سازي داده هاي مربوط به مقادير کامپوننت هاي موجود در ص�?ØÙ‡ JSF به کار مي رود.
DukesBDay در واقع واسط بين ص�?ØØ§Øª JSF Ùˆ Business Tier است. ص�?ØØ§Øª JSF اطلاعات مورد نياز خود را از اين managed Bean دريا�?ت مي كنند Ùˆ به آن نيز تØÙˆÙŠÙ„ مي دهند.
براي ساخت کلاس DukesBDay اين مراØÙ„ را انجام دهيد:
ساخت يک کلاس خالي:
1. روي ماژول firstcup-war کليک راست کنيد.
2. از New گزينه Java Class را انتخاب نماييد.
3. نام کلاس را DukesBDay قرار دهيد.
4. Package را com.sun.firstcup.web وارد کنيد.
5. Finish را کليک کنيد.
ا�?زودن Enterprise Bean Reference:
6. درست بعد از سطر تعري�? کلاس (اولين سطر از بدنه کلاس) متغير private زير را به همراه عبارت EJB@ درج نماييد:
@EJB
Private DukesBirthdayRemote dukesBirthday;
Private DukesBirthdayRemote dukesBirthday;
ا�?زودن property ها به Bean:
7. پس از تعري�? متغير dukesBirthday متغيرهاي زير را بعد از آن درج نماييد:
7. پس از تعري�? متغير dukesBirthday متغيرهاي زير را بعد از آن درج نماييد:
private int age;
private Date YourBD;
private int ageDiff;
private int absAgeDiff;
private Date YourBD;
private int ageDiff;
private int absAgeDiff;
8. با ا�?زودن کدهاي زير به constructor پيش ساخته، متغيرها را initialize نماييد:
age = -1;
YourBD = null;
ageDiff = -1;
absAgeDiff = -1;
YourBD = null;
ageDiff = -1;
absAgeDiff = -1;
ساخت متدهاي دستيابي (Accessor Methods) براي property ها
در اين مرØÙ„Ù‡ با است�?اده از امكانات refactoring موجود در NetBeans متدهاي get Ùˆ set را ايجاد مي كنيم. بدين ترتيب:
1. روي اديتور کليک راست کنيد.
2. از منوي باز شده گزينه Refactor و سپس Encapsulate Fields را انتخاب نماييد.
3. در �?رمي که باز مي شود، تيک مربوط به getDukesBirthday و setDukesBirthday را برداريد.
4. Next را کليک نماييد.
5. در پنل refactoring روي Do Refactoring کليک کنيد. با اين کار کدهاي مربوط به get و set متغيرها به کلاس اضا�?ه خواهند شد.
ا�?زودن كدهاي لازم جهت دريا�?ت سن Duke
1. ماژول firstcup-war را باز کنيد.
2. قسمت Web Service Refrences را باز کنيد.
3. وارد قسمت زير شويد:
در اين مرØÙ„Ù‡ با است�?اده از امكانات refactoring موجود در NetBeans متدهاي get Ùˆ set را ايجاد مي كنيم. بدين ترتيب:
1. روي اديتور کليک راست کنيد.
2. از منوي باز شده گزينه Refactor و سپس Encapsulate Fields را انتخاب نماييد.
3. در �?رمي که باز مي شود، تيک مربوط به getDukesBirthday و setDukesBirthday را برداريد.
4. Next را کليک نماييد.
5. در پنل refactoring روي Do Refactoring کليک کنيد. با اين کار کدهاي مربوط به get و set متغيرها به کلاس اضا�?ه خواهند شد.
ا�?زودن كدهاي لازم جهت دريا�?ت سن Duke
1. ماژول firstcup-war را باز کنيد.
2. قسمت Web Service Refrences را باز کنيد.
3. وارد قسمت زير شويد:
DukesAgeService->DukesAgeService->DukesAgePort->getDukesAge
4. از اديتور در �?ايل DukesBDay.java متد getAge را بيابيد. سپس getDukesAge را Ú©Ù‡ در مرØÙ„Ù‡ قبل انتخاب نموده ايد به متد getAge قبل از عبارت return age با ماوس drag نماييد. Ù…ØØªÙˆÙŠØ§Øª اين متد پس از انجام اين عمل چنين خواهد شد:
public int getAge() {
try { // Call Web Service Operation
com.sun.firstcup.webservice.DukesAgeService service =
new com.sun.firstcup.webservice.DukesAgeService();
com.sun.firstcup.webservice.DukesAge port = service.getDukesAgePort();
// TODO process result here
int result = port.getDukesAge();
System.out.println("Result = "+result);
} catch (Exception ex) {
// TODO handle custom exceptions here
}
return age;
}
try { // Call Web Service Operation
com.sun.firstcup.webservice.DukesAgeService service =
new com.sun.firstcup.webservice.DukesAgeService();
com.sun.firstcup.webservice.DukesAge port = service.getDukesAgePort();
// TODO process result here
int result = port.getDukesAge();
System.out.println("Result = "+result);
} catch (Exception ex) {
// TODO handle custom exceptions here
}
return age;
}
5. در کدهاي متد getAge خط
int result = port.getDukesAge();
را ØØ°ï¿½? کنيد Ùˆ به جايش عبارت زير را قرار دهيد.
age = port.getDukesAge();
6. خط زير را ØØ°ï¿½? نماييد:
System.out.println("Result = "+result);
ا�?زودن كدهاي دريا�?ت ت�?اوت سن از DukesBirthdayBean
داخل متد getAgeDiff درست قبل از دستور return کدهاي زير را وارد نماييد:
داخل متد getAgeDiff درست قبل از دستور return کدهاي زير را وارد نماييد:
ageDiff = dukesBirthday.getAgeDifference(YourBD);
if (ageDiff < 0) {
setAbsAgeDiff(Math.abs(ageDiff));
} else {
setAbsAgeDiff(ageDiff);
}
if (ageDiff < 0) {
setAbsAgeDiff(Math.abs(ageDiff));
} else {
setAbsAgeDiff(ageDiff);
}
ا�?زودن Imort ها
1. روي اديتور کليک راست کنيد.
2. گزينه Fix Imports را انتخاب کنيد.
3. عبارت java.util.Date را براي کلاس Date انتخاب نماييد.
4. OK را کليک کنيد.
در خاتمه �?ايل را ذخيره نماييد.
تنظيم پيکربندي DukesBDay
تکنولوژي JSF امکان است�?اده از �?ايل هاي Configuration را براي مقداردهي اوليه، پيکربندي و ذخيره سازي managed Bean ها در 3 scope زير مي دهد:
• Request Ú©Ù‡ وقتي کاربر ص�?ØÙ‡ اي را submit مي کند آغاز مي شود Ùˆ پس از ارسال پاسخ پايان مي پذيرد.
• Session Ú©Ù‡ با اولين دسترسي کاربر به ص�?ØÙ‡ آغاز مي شود Ùˆ پس از خاتمه يا�?تن session کاربر ØŒ پايان مي يابد.
• Application که تا زماني که سرور، Application را متوق�? نکرده اعتبار دارد.
Scope در managed Bean مثال ما session است.
به Ù…ØØ¶ اينکه Bean ØŒ پيکربندي شد ÙŠÚ© ص�?ØÙ‡ JSF مي تواند آن را ايجاد کند Ùˆ به آن دسترسي داشته باشد. در اينجا ما پيکربندي DukesBDay managed Bean را انجام مي دهيم:
1. ماژول firstcup-war را باز کنيد.
2. �?ولدر Web Pages و سپس WEB-INF را باز کنيد.
3. روي faces-config.xml دبل کليک نماييد.
4. روي اديتور کليک راست کرده و از JavaServer Faces گزينه Add Managed Bean را انتخاب کنيد.
5. نام Bean را dukesBDay وارد کنيد.
6. کلاس را com.sun.firstcup.web.DukesBDay قرار دهيد.
7. از منوي scope گزينه session را انتخاب کنيد.
8. در قسمت Description نيز عبارت DukesBDay backing bean را وارد کنيد.
9. Add را کليک کنيد. با اينکار عناصر XML مربوطه به �?ايل اضا�?ه مي شوند.
10. �?ايل را ذخيره نماييد.
از Application نمونه اي ما تنها ص�?ØØ§Øª greeting.jsp Ùˆ respone.jsp باقي مانده كه در مطالب آينده آنها را پياده سازي خواهيم نمود. براي يادآوري اين تصوير را دوباره مشاهده كنيد.
1. روي اديتور کليک راست کنيد.
2. گزينه Fix Imports را انتخاب کنيد.
3. عبارت java.util.Date را براي کلاس Date انتخاب نماييد.
4. OK را کليک کنيد.
در خاتمه �?ايل را ذخيره نماييد.
تنظيم پيکربندي DukesBDay
تکنولوژي JSF امکان است�?اده از �?ايل هاي Configuration را براي مقداردهي اوليه، پيکربندي و ذخيره سازي managed Bean ها در 3 scope زير مي دهد:
• Request Ú©Ù‡ وقتي کاربر ص�?ØÙ‡ اي را submit مي کند آغاز مي شود Ùˆ پس از ارسال پاسخ پايان مي پذيرد.
• Session Ú©Ù‡ با اولين دسترسي کاربر به ص�?ØÙ‡ آغاز مي شود Ùˆ پس از خاتمه يا�?تن session کاربر ØŒ پايان مي يابد.
• Application که تا زماني که سرور، Application را متوق�? نکرده اعتبار دارد.
Scope در managed Bean مثال ما session است.
به Ù…ØØ¶ اينکه Bean ØŒ پيکربندي شد ÙŠÚ© ص�?ØÙ‡ JSF مي تواند آن را ايجاد کند Ùˆ به آن دسترسي داشته باشد. در اينجا ما پيکربندي DukesBDay managed Bean را انجام مي دهيم:
1. ماژول firstcup-war را باز کنيد.
2. �?ولدر Web Pages و سپس WEB-INF را باز کنيد.
3. روي faces-config.xml دبل کليک نماييد.
4. روي اديتور کليک راست کرده و از JavaServer Faces گزينه Add Managed Bean را انتخاب کنيد.
5. نام Bean را dukesBDay وارد کنيد.
6. کلاس را com.sun.firstcup.web.DukesBDay قرار دهيد.
7. از منوي scope گزينه session را انتخاب کنيد.
8. در قسمت Description نيز عبارت DukesBDay backing bean را وارد کنيد.
9. Add را کليک کنيد. با اينکار عناصر XML مربوطه به �?ايل اضا�?ه مي شوند.
10. �?ايل را ذخيره نماييد.
از Application نمونه اي ما تنها ص�?ØØ§Øª greeting.jsp Ùˆ respone.jsp باقي مانده كه در مطالب آينده آنها را پياده سازي خواهيم نمود. براي يادآوري اين تصوير را دوباره مشاهده كنيد.