ساخت firstcup Web Client

January 1, 2008 11:18 AM

براي ساخت Web Client کارهاي زير را بايد انجام دهيد:
• تنظيم firstcup-war به اين منظور که JSF را پشتيباني نمايد.
• ساخت يک Web service client
• ساخت ÙŠÚ© resource bundle براي نگهداري پيغام هايي Ú©Ù‡ توسط صÙ?حات JSP استÙ?اده مي شوند.
• تنظيم resource bundle در Ù?ايل configuration
• ساخت کلاس مديريت DukesBDay
• تنظيم DukesBDay در Ù?ايل configuration
• ساخت صÙ?حه greeting.jsp
• تنظيم قواعد navigation
• ساخت صÙ?حه response.jsp
در ادامه، مراحل بالا يک به يک توضيح داده خواهند شد.

تنظيم firstcup-war جهت پشتيبالي JSF
همه Application هاي JSF بايد شامل ÙŠÚ© map به نمونه FacesServlet در Ù?ايل deployment descriptor باشند. نمونه FacesServlet درخواست ها را درياÙ?ت مي کند Ùˆ براي پردازش به life cycle مي Ù?رستد. همچنين مقداردهي اوليه منابع را انجام مي دهد.

اين mapping بدين صورت انجام مي شود:
1. روي ماژول firstcup-war کليک راست کنيد و properties را انتخاب نماييد.
2. از category ها framework را انتخاب نماييد.
3. روي Add کليک کنيد.
4. از ليست انتخاب ها، JavaServer Faces را انتخاب نماييد و OK را کليک کنيد.
5. Servlet URL mapping را به */firstcupWeb/ تغيير دهيد. اين مسير نمونه FacesServlet است.
6. تيک Validate XML را برداريد.
7. OK را کليک کنيد.

Ù?وروارد صÙ?حه index.jsp به greeting.jsp
مي خواهيم بلاÙ?اصله پس از اجراي اين Web Application به صÙ?حه greeting.jsp برويم. لذا بايد index.jsp را به greeting.jsp Ù?وروارد نماييم. بدين صورت:
1. ماژول firstcup-war را باز کنيد و روي Web Pages دبل کليک نماييد.
2. روي welcomeJSF.jsp کليک راست کرده بوسيله Delete آن را حذÙ? نماييد.
3. روي index.jsp دبل کليک کنيد.
4. هر چيزي Ú©Ù‡ داخل اين صÙ?حه نوشته شده است را پاک کنيد.
5. اين عبارت را در صÙ?حه index.jsp وارد کنيد:
6. Ù?ايل را ذخيره کنيد.

توضيح اينكه صÙ?حه greeting.jsp را بعدا خواهيم ساخت.

ساخت Web Service Client براي وب ماژول firstcup-war
اين ماژول از وب سرويس firstcup-dukes-age استÙ?اده مي نمايد. به اين منظور لازم است ÙŠÚ© Web Service Client در آن ايجاد نماييد. بدين صورت:
1. ماژول firstcup-war را انتخاب کنيد.
2. از منوي File گزينه New File را انتخاب کنيد.
3. از category ها گزينه Web Services را انتخاب کنيد.
4. از انواع Ù?ايل، Web Service Client را ايجاد نماييد.
5. Next را کليک کنيد.
6. WSDL URL را انتخاب کنيد.
7. در قسمت WSDL URL مقدار زير را وارد کنيد:
http://localhost:8080/DukesAgeService/DukesAgeService?WSDL
8. در Ù?يلد package نيز اين مقدار را وارد نماييد:
com.sun.firstcup.webservice
9. Finish را کليک کنيد.

ساخت Resource Bundle
منظور از Resource Bundle Ù?ايلي است از نوع properties كه در آن كليه متون ثابت، شامل پيغام هاي خطا Ùˆ عباراتي كه در صÙ?حه jsp به كار مي روند، تعريÙ? مي شود. نحوه ساخت آن بدين ترتيب است:
1. ماژول firstcup-war را انتخاب نماييد.
2. از منوي Ù?ايل گزينه New File را انتخاب کنيد.
3. category را other Ùˆ نوع Ù?ايل را Properties File انتخاب کنيد Ùˆ Next را کليک کنيد.
4.نام Ù?ايل را WebMessages وارد نماييد.
5. Ù?ولدر را نيز اين مسير وارد کنيد:
src/java/com/sun/firstcup/web
6. Finish را کليک نماييد.
7. پس از اينکه NetBeans Ù?ايل را ايجاد نمود متن زير را در آن کپي نماييد:
Welcome=Hi. My name is Duke. Let us find out who is older -- You or me
DukeIs=Duke is
YearsOldToday=years old today.
Instructions=Enter Your birthday and click submit.
YourBD=Your birthday
Pattern=MM/dd/yyyy
DateError=Please enter the date in the form MM/dd/yyyy.
YouAre=You are
Year=year
Years=years
Older=older than Duke!
Younger=younger than Duke!
SameAge= the same age as Duke!
Submit=Submit
Back=Back
8. Ù?ايل را ذخيره کنيد.
9. در صورت نياز مي توانيد براي هر زباني مانند زبان Ù?ارسي ÙŠÚ© Properties File مشابه بالا تهيه نماييد.
10. توسط گزينه Refresh All Files از منوي File همه Ù?ايل ها را Refresh نماييد.

تنظيم و پيکر بندي Resource Bundle
1. ماژول firstcup-war را باز کنيد. از Ù?ولدر Web Pages Ù?ولدر WEB-INF را باز کنيد.
2. روي faces-config.xml دبل کليک نماييد.
3. قبل از تگ پاياني عنصر faces-config عناصر زير را اضاÙ?Ù‡ نماييد:
<application>
    <resource-bundle>          
            <base-name>com.sun.firstcup.web.WebMessages</base-name>
        <var>bundle</var> 
    </resource-bundle>
    <locale-config>
        <default-locale>en</default-locale>
        <supported-locale>es</supported-locale>
    </locale-config>
</application>
4. Ù?ايل را ذخيره نماييد.

در مطلب بعد ساخت كلاس DukesBDay از اجزاي web client را خواهيم ديد. براي يادآوري اين تصوير را ببينيد.

mahyar_ev | 11:18 AM | Comment(s)(0)

ساخت وب سرويس DukesAge

December 30, 2007 03:23 PM

پياده سازي Application معر�?ي شده در مطلب قبل را آغاز مي كنيم.

ايجاد يک �?ولدر براي پروژه
ابتدا براي قرار دادن كليه �?ايل هاي مربوط به پروژه يك �?ولدر خاص ايجاد مي نماييم. نام اين �?ولدر را myexample بگذاريد.

ايجاد وب سرويس

خروجي اين وب سرويس، برگرداندن سال سن Duke ، است. اين وب سرويس هيچ پارامتر ورودي ندارد.
در اين مرحله يك پروژه براي اين وب سرويس ايجاد مي كنيم. سپس يك كلاس جاوا ساده مي سازيم و تغييرات لازم را براي تبديل آن به يك وب سرويس اعمال مي كنيم و كدهاي لازم را مي نويسيم.
مراحل گام به گام ساخت آن بدين شرح است:

تعري�? پروژه
1. در NetBeans از منوي File منوي New Project را انتخاب نماييد.
2. در category هاي موجود web را انتخاب کنيد.
3. از انواع پروژه ها Web Application را انتخاب نماييد.
4. Next را کليک کنيد.
5. نام پروژه را firstcup-dukes-age قرار دهيد.
6. Location پروژه را همان �?ولدر myexample که ساخته ايد قرار دهيد.
7. App Server را Java System Application Server انتخاب کنيد.
8. Java EE version را Java EE 5 قرار دهيد.
9. Finish را کليک کنيد. اکنون بايد پروژه شما ساخته شده باشد و در پنل Projects در سمت چپ NetBeans قابل رويت باشد.
10. در قسمت web pages از منوي درختي پروژه �?ايل index.jsp را بيابيد. روي آن کليک راست کنيد و سپس با است�?اده از گزينه delete آن را حذ�? کنيد.


ساخت کلاس DukesAge
1. پروژه firstcup-dukes-age را در NetBeans انتخاب کنيد.
2. از منوي File گزينه New File را انتخاب کنيد.
3. از category ها Java Classes را انتخاب کنيد.
4. از انواع �?ايل نيز Java Class را انتخاب کنيد.
5. Next را کليک کنيد.
6. نام کلاس را DukesAge قرار دهيد.
7. در قسمت Package عبارت com.sun.firstcup.webservice را تايپ کنيد.
8. Finish را کليک کنيد. با اين کار �?ايل DukesAge.java در همان Package مشخص شده ايجاد مي شود و براي ويرايش، در ص�?حه باز مي شود.

تعري�? کلاس DukesAge بعنوان يک وب سرويس
براي اين کار عبارت WebService@ را درست قبل از جايي که کلاس، تعري�? شده قرار دهيد. بدين صورت:

@WebService
public class DukesAge {
…
}

حذ�? Constructor پيش ساخته
از آنجا که وب سرويس نياز به constructor ندارد. آن را از کلاس DukesAge حذ�? کنيد.

ا�?زودن متد getDukesAge
متدي به نام getDukesAge با خروجي int در داخل کلاس، ايجاد کنيد و قبل از آن نيز عبارت WebMethod@ را قرار دهيد. بدين صورت:

@WebMethod
public int getDukesAge() {
}

سپس دستورات زير را در بدنه متد کپي کنيد.

Calendar dukesBirthday = new GregorianCalendar(1995,Calendar.MAY,23);
Calendar now = Calendar.getInstance();
int dukesAge = now.get(Calendar.YEAR) - dukesBirthday.get(Calendar.YEAR);
dukesBirthday.add(Calendar.YEAR,dukesAge);

if (now.before(dukesBirthday)){
    dukesAge--;
}
return dukesAge;

ر�?ع مشكل Import
1. روي اديتور كليك راست نماييد .
2. گزينه Fix Imports را انتخاب نماييد.
3. پكيج javax.jws.WebService را براي کلاس WebService انتخاب نماييد.

Build و Deploy نمودن وب سرويس
از پنل پروژه ها firstcup-dukes-age را انتخاب نموده و کليک راست کنيد. سپس گزينه Build Project را انتخاب نماييد. با اين کار پروژه در firstcup-dukes-age.war پکيج مي شود.
پس از پايان build مجددا كليك راست نماييد و اين بار گزينه Deploy Project را انتخاب كنيد.

mahyar_ev | 03:23 PM | Comment(s)(0)

استÙ?اده از Web Service در برنامه

October 1, 2007 12:49 PM

در مطلب قبل چگونگي ايجاد يك Web Service را ديديم. در اين مطلب يك Web Service Client خواهيم ساخت كه از Web Service ساخته شده در قسمت قبل استÙ?اده كند. براي اينكار ما همچنان ازJavaEE 5 Ùˆ NetBeans IDE 5.5 استÙ?اده خواهيم نمود.

مراحل كار:

1- ساخت يك Web Application
همانگونه كه در مطلب قبل نيز توضيح داده شد براي ساخت يك Web Application بايد پس از اجراي NetBeans IDE از منوي File منوي New Project را انتخاب نماييد. با اين كار Ù?رم ديگري باز مي شود. در Ù?رم مذكور از قسمت Web گزينه Web Application را انتخاب كرده، دكمه Next را بÙ?شاريد. در مرحله بعدي، نام پروژه Ùˆ مسير آن را مشخص كنيد Ùˆ دكمه Finish را بزنيد.

نكته: اجباري نيست كه براي استÙ?اده از Web Service حتما يك Web Application داشته باشيد. مي توان Web Service را از داخل هر Application جاوا Ù?راخواني كرد. در اينجا بعنوان نمونه از Web Application براي اين كار استÙ?اده شده است.

2- ساخت يك package
در NetBeans روي پروژه راست كليك كرده، گزينه New Ùˆ سپس Java Package را انتخاب نماييد. در Ù?رمي كه باز مي شود نام package را WSClientPac وارد كنيد. همچنين Ù?يلد location را Source Package قرار دهيد. در انتها دكمه Finish را Ù?شار دهيد.

3- ساخت يك Web Service Client
روي پروژه راست كليك كرده، گزينه New Ùˆ سپس Web Service client را انتخاب نماييد. Ù?رمي باز مي شود. در اين Ù?رم اولا گزينه WSDL URL را انتخاب كنيد Ùˆ مسير Ù?ايل wsdl مربوط به Web Service را در باكس مقابل آن وارد كنيد. همچنين Ù?يلد package را با WSClientPac پر كنيد. دكمه Finish را در پايان Ù?شار دهيد. اگر خطايي رخ ندهد، با اين كار در مسير پروژه Ù?ولدري به نام Web Service Refrences ايجاد مي شود كه مشخصات Web Service Client مربوطه را در خود دارد.

سوال: Ù?ايل wsdl چيست Ùˆ چطور آن را بيابيم؟
wsdl مخÙ?Ù? Web Service Description Language ØŒ Ù?ايلي است به Ù?رمت XML كه مشخصات Web Service را در خود دارد. براي استÙ?اده از Web Service بايد مسير Ù?ايل wsdl آن را بدانيد. همه توليد كنندگان Web Service اين مسير را در اختيار استÙ?اده كنندگان قرار مي دهند.
در مورد Web Service اي كه در قسمت قبل ساختيم، براي پيدا كردن مسير اين Ù?ايل، روي Web Service مربوطه راست كليك كنيد Ùˆ گزينه peoperties را انتخاب كنيد. مسير wsdl در پايين اين صÙ?حه نوشته شده است. اين مسير بايد چنين باشد:

http://localhost:8080/TestWebApplication/TestWebServiceService?wsdl

4- ايجاد يك كلاس براي Ù?راخواني Web Service Ùˆ نوشتن كدهاي لازم
روي پروژه راست كليك كرده Ùˆ New Ùˆ سپس Java Class را انتخاب كنيد. نام كلاس را HelloClient وارد كنيد. همچنين Ù?يلد Package را هم با WSClientPac مقداردهي كنيد. دكمه Finish را بزنيد.
بدين ترتيب Ù?ابل HelloClient.java ساخته مي شود كه حاوي كدهاي اوليه تعريÙ? كلاس است. كدهاي لازم را به اين Ù?ايل اضاÙ?Ù‡ كنيد تا نهايتا محتويات Ù?ايل به اين صورت شود:

package WSClientPac;

import javax.xml.ws.WebServiceRef;
import WSClientPac.TestWebService;
import WSClientPac.TestWebServiceService;

public class HelloClient {
    static TestWebServiceService service = new TestWebServiceService();
   
    public HelloClient() {}
   
    public String getHello(String name){
        String result="";
        try{
            TestWebService port = service.getTestWebServicePort();
            result = port.sayHello(name);
        } catch (Exception e){
             result = e.toString();
        }
       
        return result;
    }
   
}
 

5- Ù?راخواني متد getHello
در قسمت body Ù?ايل index.jsp واقع در Ù?ولدر Web Pages دستورات زير را اضاÙ?Ù‡ نماييد:

<%@ page import="WSClientPac.HelloClient" %>
<% HelloClient hc = new HelloClient(); %>
<p><%= hc.getHello("JavaBorder") %> </p>

6- اجراي برنامه
با F6 برنامه را اجرا كرده Ùˆ نتيجه را در Browser ببينيد. اگر خطايي رخ ندهد، در خروجي بايد پيغام "Hello, JavaBorder" را ببينيد. البته Ù?راموش نكنيد كه قبل از اجراي برنامه Web Service را Deploy نماييد.

mahyar_ev | 12:49 PM | Comment(s)(2)

ايجاد web service در JavaEE 5 توسط NetBeans 5.5

September 24, 2007 10:55 AM

در JavaEE 5 از تكنولوژي JAX-WS براي ساخت و است�?اده از Web Service هاي XML اي است�?اده مي شود. JAX-WS مخ�?�? Java API for XML Web Services مي باشد.
همانگونه كه مي دانيد برقراري ارتباط در Web service ها با پروتوكل SOAP انجام مي شود. اين پروتوكل تبادل اطلاعات را به �?رمت XML بر بستر پروتوكل HTTP �?راهم مي سازد.

ساخت يك Web Service ساده در يك Web Application:

1- ايجاد يك Web Application در NetBeans IDE:
پس از اجراي NetBeans IDE از منوي File منوي New Project را انتخاب نماييد. با اين كار �?رم ديگري باز مي شود. در �?رم مذكور از قسمت Web گزينه Web Application را انتخاب كرده، دكمه Next را ب�?شاريد. در مرحله بعدي، نام پروژه و مسير آن را مشخص كنيد و دكمه Finish را بزنيد. بدين ترتيب يك Web Application خالي ساخته ايد.

2- ايجاد يك Package:
در تب هاي سمت چپ NetBeans تب Projects را انتخاب نماييد و داخل آن روي پروژه اي كه در مرحله قبل ايجاد كرده ايد راست كليك كنيد. از منوي New گزينه Java Packageرا انتخاب كنيد. �?رمي باز مي شود كه در آن نام Package خود را وارد كنيد. در اين مثال نام آن را TesWebServicePac وارد كنيد. همچنين �?يلد location را Source Package قرار دهيد. در انتها دكمه Finish را �?شار دهيد.

3- ا�?زودن يك Web Service:
از همان منوي مرحله قبل يعني راست كليك روي پروژه و انتخاب New وارد شويد اما اين بار گزينه Web Service را انتخاب نماييد. نام Web Service را TestWebService وارد كنيد و TestWebServicePac را بعنوان package آن انتخاب نماييد. سپس دكمه Finish را بزنيد.
با اين كار در �?ولدر Web Services پروژه، آيكوني به نام TestWebService ايجاد مي گردد. روي آن كليك نماييد تا �?ايل TestWebService.java براي ويرايش باز شود.

4-نوشتن كدهاي لازم:
خود NetBeans بخش هايي از كد را مي سازد. اما بدنه كلاس و متدهاي آن را شما بايد خود كدنويسي كنيد. به هر حال در نهايت داخل TestWebService.java اين كدها بايد نوشته شوند:

package TesWebServicePac;

import javax.jws.WebMethod;
import javax.jws.WebService;

@WebService()
public class TestWebService {
    private String message = new String("Hello, ");
   
    public void TestWebService(){}
   
    @WebMethod()
    public String SayHello(String name) {
        return message+name+".";
    }
}
 

عبارت WebService@ مشخص مي كند كه كلاس مربوطه يك Web Service است. عبارت WebMethod@ قبل از متد مشخص مي كند كه اين متد از Operation هاي Web Service است و توسط Web Application هاي ديگر قابل �?راخواني است.
متد SayHello كاركردي بسيار ساده دارد. يك اسم را بعنوان پارامتر ورودي مي گيرد و همان اسم را به علاوه عبارت Hello"" بر مي گرداند.

5- Deploy كردن پروژه:
قبل از تست Web Service لازم است كه Application را Deploy نماييد. به اين منظور Application را انتخاب و روي آن راست كليك كنيد. سپس گزينه Deploy Project را انتخاب نماييد. صبر كنيد تا عمليات Deploy خاتمه يابد.

6- نحوه تست Web Service:
Web Service ها براي تست نياز به يك Web Service Client دارند. اما NetBeans IDE خود، ابزار تست آنها را در اختيار برنامه نويس گذارده است. كا�?ي است، آن Web Service را انتخاب كرده و روي آن راست كليك كنيد. سپس گزينه Test Web Service را انتخاب نماييد. با اين كار در Browser شما ص�?حه اي باز مي شود كه از شما پارامتر مورد نظر را مي گيرد و پس از submit كردن، خروجي متد مربوطه را به همراه ساختار SOAP Request و SOAP Response به �?رمت XML نمايش مي دهد.

mahyar_ev | 10:55 AM | Comment(s)(0)