2011-02-18 15 views
7

मेरे पास एक वेब सेवा है जिसे मैं एक चर को स्वचालित करने की कोशिश कर रहा हूं। जब मैं वेब सेवा मैं असफल संस्करण लौटे हो रही है, जिसका अर्थ है कि upgradeController autowired नहीं की जा रही है तक पहुँचने का प्रयास,@WebService वसंत को कैसे जागरूक करें

package com.xetius.isales.pr7.service; 

import java.util.Arrays; 
import java.util.List; 

import javax.jws.WebService; 

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

import com.xetius.isales.pr7.domain.PR7Product; 
import com.xetius.isales.pr7.domain.PR7Upgrade; 
import com.xetius.isales.pr7.logic.UpgradeControllerInterface; 

@WebService(serviceName="ProductRulesService", 
      portName="ProductRulesPort", 
      endpointInterface="com.xetius.isales.pr7.service.ProductRulesWebService", 
      targetNamespace="http://pr7.isales.xetius.com") 
public class ProductRulesWebService implements ProductRulesWebServiceInterface { 

    @Autowired 
    private UpgradeControllerInterface upgradeController; 

    @Override 
    public List<PR7Product> getProducts() { 
     if (upgradeController == null) { 
      return Arrays.asList(new PR7Product("Fail")); 
     } 
     return upgradeController.getProducts(); 
    } 

    @Override 
    public List<PR7Upgrade> getUpgrades() { 
     if (upgradeController == null) { 
      return Arrays.asList(new PR7Upgrade("Fail")); 
     } 
     return upgradeController.getUpgrades(); 
    } 

    @Override 
    public List<PR7Product> getProductsForUpgradeWithName(String upgradeName) { 
     if (upgradeController == null) { 
      return Arrays.asList(new PR7Product("Fail")); 
     } 
     return getProductsForUpgradeWithName(upgradeName); 
    } 

} 

हालांकि: यहाँ वर्ग है। यहाँ मेरी applicationContext है:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
         http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
         http://www.springframework.org/schema/context 
         http://www.springframework.org/schema/context/spring-context-3.0.xsd"> 
    <context:component-scan base-package="com.xetius.isales.pr7" /> 
    <context:annotation-config /> 

    <bean id="upgradeController" class="com.xetius.isales.pr7.logic.UpgradeController" /> 

</beans> 

मैं इसे कैसे ताकि @WebService वर्ग वसंत बारे में पता है बनाते हैं और autowiring होता CXF, जो Spring natively का समर्थन करता है की तरह एक ढेर

उत्तर

11

आप क्या होने autowiring चाहते हैं, ProductRulesWebService जरूरत का विस्तार करने के SpringBeanAutowiringSupport

उस वर्ग का विस्तार अनुमति देगा UpgradeController

3

का प्रयोग करें, तो आप अनिवार्य रूप से की तरह कुछ कर सकते हैं इस:

<bean id="aService" class="com.xetius.isales.pr7.service.ProductRulesWebService " /> 

<jaxws:endpoint id="aServiceEndpoint" implementor="#aService" address="/aService" /> 
+0

यह कर सकते हैं जर्सी के साथ भी किया जा सकता है: http://stackoverflow.com/questions/21104567/springjersey-transactional-annotation –

1

autowired जा करने के लिए कंटेनर वर्शन या यहाँ तक कि वसंत के आधार पर, बाद में आप अपने डबल्यूएसडीएल का पर्दाफाश करने के लिए एक आसान समाधान होगा, उपयोग:

@PostConstruct 
SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this); 
संबंधित मुद्दे