2013-09-04 58 views
5

Có thể sử dụng Trình xác thực mùa xuân để xác thực dữ liệu từ các yêu cầu Xà phòng dịch vụ Web không? Hoặc nhiều hơn vì vậy tôi nên thay đổi gì về cách tiếp cận dưới đây để làm cho nó có thể?Sử dụng Trình xác thực mùa xuân trên các dịch vụ Web

Bối cảnh chính xác mà tôi có là dưới đây:

Tôi có một kết thúc trước web sử dụng Freemarker và bộ điều khiển mà làm việc tốt với xác nhận ví dụ sử dụng

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

Trong dispatcher-servlet.xml

Sau đó, trong StockController, xác thực xảy ra trên các yêu cầu Đăng.

@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"; 
     } 
    } 

Tuy nhiên dịch vụ web SOAP của tôi được chú giải dựa dây vào các dịch vụ

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; 

này được ánh xạ trong servlet phối như vậy:

<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> 

Xin lỗi Tôi là một nhà phát triển sở thích và nghĩ rằng một nơi nào đó dọc theo con đường tôi đã có một chút bối rối trong cách tốt nhất để tiếp cận thiết lập này. Nếu nó là thích hợp hơn để bắt đầu lại từ đầu cho tôi biết.

Chúc mừng, Rob

Trả lời

2

Tôi chỉ thêm ví dụ về cách sử dụng PayloadValidatingInterceptor được đề xuất của @ Jukka.

Bạn có thể PayloadValidatingInterceptor để chặn các yêu cầu và xác thực nó bằng lược đồ XSD. Ví dụ. (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> 
Các vấn đề liên quan