2010-05-17 10 views
5

से वेब सेवाओं को कॉल करना मान लें कि आपके पास जेएसएफ में एक प्रस्तुति स्तर है, और यह कि आपके व्यवसाय स्तर को वेब सेवाओं का उपयोग करके एक्सेस किया जाता है। आप जेएसएफ से अपनी वेब सेवाओं को कैसे कॉल करेंगे?अपने जेएसएफ कोड

मैं वेब सेवाओं को कॉल करने के लिए अपने बैकिंग बीन्स रखने पर विचार कर रहा था, लेकिन मैं वेब सेवाओं से कनेक्ट करने के लिए जेएसएफ के साथ अजाक्स का उपयोग कर सकता था। आप क्या चुनेंगे और क्यों? कोई अन्य विकल्प जो आप सिफारिश कर सकते हैं?

संपादित करें: मैं व्यापार स्तर में वसंत का उपयोग कर रहा हूं, शायद वह जानकारी सुझावों के साथ मदद कर सकती है।

धन्यवाद।

उत्तर

10

मैं एक सेवा कक्षा में वेब सेवा कॉल लपेटता हूं, जिसे प्रबंधित बीन के माध्यम से एक्सेस किया जाता है। इस प्रकार सामने वाले अंत को यह नहीं पता होगा कि डेटा कितनी सटीक है - वेब सेवाओं के माध्यम से, या किसी अन्य माध्यम से।

+0

+1 मैं बोझो से सहमत हूं - मुझे सेवा कक्षा में वेब सेवा कॉल रखना पसंद है और भविष्य में होने वाली किसी भी वेब सेवा में से प्रस्तुति परत को अलग रखना है। – elduff

+0

फिर से धन्यवाद Bozho, मैं इस दृष्टिकोण को ले रहा हूँ। –

2

मैं ईजेबी लागू करता हूं और उन्हें एप्लिकेशन के भीतर वेब सेवा (भाषा स्वतंत्रता दूरस्थ पहुंच के लिए) के रूप में उजागर करता हूं, मैं ईजेबी को लुकअप करके एक्सेस करता हूं और उन्हें सीधे कॉल (बेहतर प्रदर्शन के लिए) कॉल करता हूं। दुर्भाग्य से आपने यह नहीं बताया कि आप किस प्लेटफ़ॉर्म का उपयोग कर रहे हैं, इसलिए मैं यह सुनिश्चित नहीं कर सकता कि मेरे सुझाव संभव होंगे या नहीं।

+0

मैं व्यापार स्तर में वसंत का उपयोग कर रहा हूं। –

3

मान लें कि आपके पास जेएसएफ में प्रस्तुति स्तर है, और यह कि आपके व्यवसाय स्तर को वेब सेवाओं का उपयोग करके एक्सेस किया जाता है। आप जेएसएफ से अपनी वेब सेवाओं को कैसे कॉल करेंगे?

"क्लासिक" दृष्टिकोण एक ManagedBean में एक JAX-WS प्रॉक्सी कारखाने वर्ग (WSDL से उत्पन्न) सुई होगा:

public class ItemController { 
    @WebServiceRef(wsdlLocation = "http://localhost:8080/CatalogService/Catalog?wsdl") 
    private CatalogService service; 

    public DataModel getItems() { 
     if (model==null || index != firstItem){ 
      model=getNextItems(); 
     } 
     return this.model; 
    } 
    public DataModel getNextItems() { 
     Catalog port = service.getCatalogPort(); 
     model = new ListDataModel(port.getItems(firstItem,batchSize)); 
     return model; 
    } 
} 

नमूना Sample Application using JAX-WS, JSF, EJB 3.0, and Java से लिया।