2013-09-04 7 views
5

क्या वेब सेवा साबुन अनुरोधों से डेटा को सत्यापित करने के लिए स्प्रिंग वैलिडेटर्स का उपयोग करना संभव है? या अधिक तो इसे संभव बनाने के लिए नीचे दिए गए दृष्टिकोण के बारे में मुझे क्या बदलना चाहिए?वेब सेवाओं पर स्प्रिंग वैलिडेटर का उपयोग

सटीक संदर्भ मेरे पास है कि नीचे है:

मुझे लगता है कि उदाहरण के लिए मान्यता के साथ ठीक काम करता है Freemarker और नियंत्रकों का उपयोग कर एक वेब सामने अंत

<bean id="stockValidator" class="com.client.validator.StockValidator" /> 

का उपयोग कर डिस्पैचर-servlet.xml

में है

फिर स्टॉककंट्रोलर में सत्यापन अनुरोधों पर सत्यापन होता है।

@RequestMapping(value = "/addStock", method = RequestMethod.POST) 
    public String addStudent(@ModelAttribute Stock stock,BindingResult result, 
    ModelMap model) { 

     StockValidator.validate(stock, result); 
     if (result.hasErrors()) { 
      //model.addAttribute("stock", stock); 
      return "stock"; 
     } else { 
      StockService.save(stock); 
      model.addAttribute("stockId", stock.getStockId()); 
      model.addAttribute("stockCode", stock.getStockCode()); 
      model.addAttribute("stockName", stock.getStockName()); 

      return "result"; 
     } 
    } 

हालांकि मेरी सोप वेब सेवाओं एनोटेशन सेवाओं

import javax.jws.WebService; 

import org.springframework.beans.factory.annotation.Autowired; 

import com.olympus.viewtheworld.server.dao.StockDao; 
import com.olympus.viewtheworld.server.service.StockService; 
import com.olympus.viewtheworld.shared.domain.Stock; 

@WebService(endpointInterface = "com.server.service.StockService") 
public class StockServiceImpl implements StockService{ 

@Autowired 
StockDao stockDao; 

इस तरह के रूप में डिस्पैचर सर्वलेट में मैप किया गया है में वायर्ड आधारित होते हैं:

<jaxws:endpoint id="stockService" 
     implementorClass="com.server.service.Impl.StockServiceImpl" 
     implementor="#stockServiceImpl" 
     address="/SoapService/stock"> 
    <jaxws:serviceFactory> 
     <ref bean="jaxws-and-aegis-service-factory"/> 
    </jaxws:serviceFactory> 
</jaxws:endpoint> 

माफ करना, मैं एक शौक डेवलपर हूँ और ऐसा लगता है कि जिस तरह से मुझे इस सेटअप के साथ सबसे अच्छा तरीका है, इस बारे में थोड़ा उलझन में आया है। यदि स्क्रैच से फिर से शुरू करना अधिक उचित है तो मुझे बताएं।

चीयर्स, रोब

उत्तर

5

आप स्प्रिंग वेब सेवा में देखना चाहते हो सकता है (http://projects.spring.io/spring-ws/)। इसके साथ आप इनकमिंग एसओएपी संदेशों पर एक्सएसडी-आधारित सत्यापन चलाने के लिए PayloadValidatingInterceptor का उपयोग कर सकते हैं।

2

मैं सिर्फ @ जुक्का के सुझाए गए पेलोड वैलिडेटिंग इंटरसेप्टर का उपयोग करने का उदाहरण जोड़ रहा हूं।

आप अनुरोधों को अवरुद्ध करने और XSD स्कीमा के साथ इसे सत्यापित करने के लिए PayloadValidatingInterceptor कर सकते हैं। जैसे (applicationContext.xml):

<sws:interceptors> 
     <!-- Add our validating interceptor --> 
     <ref bean="validatingInterceptor" /> 
    </sws:interceptors> 
<bean id="validatingInterceptor" class="org.springframework.ws.soap.server.endpoint.interceptor.PayloadValidatingInterceptor"> 
     <property name="schema" value="classpath:org/example/myproject/xsd/myprojectws.xsd"/> 
     <property name="validateRequest" value="true"/> 
     <property name="validateResponse" value="true"/> 
    </bean> 
संबंधित मुद्दे