Wie man eine @WebService-Frühling bewusst
Ich habe ein Web-Service, die ich bin versucht zu Autowire eine variable in. Hier ist die Klasse:
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);
}
}
Jedoch, wenn ich versuche, Zugriff auf den web service, den ich bin immer die Fail-version zurückgegeben, was bedeutet, dass upgradeController nicht autowired. Hier ist meine Datei 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>
Wie mache ich es so, dass die @WebService-Klasse ist der Frühling bewusst und autowiring passiert
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie wollen autowiring passieren, ProductRulesWebService Bedürfnisse zu erweitern SpringBeanAutowiringSupport
Erweitern, die Klasse erlaubt UpgradeController werden autowired
Verwenden einen stack, wie CXF, unterstützt Frühjahr nativ, dann können Sie im Grunde tun Sie etwas wie dieses:
Je nach container-version oder auch das Frühjahr, nachfolgend haben Sie eine einfache Lösung, um setzen Sie Ihre WSDL, Nutzung: