Property injection in xml fails (spring-ws config)

I am using Spring -WS and have the following Spring -ws-servlet.xml file. Injecting defaultURI and marshaller does not work, because when I get the method in the service client, these properties are null. It happens that setters are called with the correct values, but in the getSum () client method these values ​​are zero. What could be wrong?

<?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" xmlns:sws="http://www.springframework.org/schema/web-services" xmlns:oxm="http://www.springframework.org/schema/oxm" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/web-services http://www.springframework.org/schema/web-services/web-services-2.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/oxm http://www.springframework.org/schema/oxm/spring-oxm-3.0.xsd"> <context:component-scan base-package="com.coral.project.endpoints"/> <sws:annotation-driven /> <sws:dynamic-wsdl id="test" portTypeName="TestCase" locationUri="/testService/" targetNamespace="http://www.example.org/schemasDef/test/definitions"> <sws:xsd location="/WEB-INF/schemasDef/test.xsd"/> </sws:dynamic-wsdl> <bean id="springWSClient" class="com.coral.project.endpoints.SpringWSClient"> <property name="defaultUri" value="http://localhost:8080/parking/springServices/testService"/> <property name="marshaller" ref="marshaller" /> <property name="unmarshaller" ref="marshaller" /> </bean> <oxm:jaxb2-marshaller id="marshaller"> <oxm:class-to-be-bound name="com.coral.project.entity.Street"/> </oxm:jaxb2-marshaller> </beans> 

I get an exception:

Exception when calling encodeEnd on a component: {Component-Path: [Class: org.ajax4jsf.component.AjaxViewRoot, ViewId: /appealConversionStatusReport.jsp] [Class: org.apache.myfaces.custom.div.Div, Id: j_id_jsp_14061774 Class: com.exadel.htmLib.components.UITable, Id: j_id_jsp_1406177460_5] [Class: com.exadel.htmLib.components.UITbody, Id: j_id_jsp_1406177460_6] [Class: org.apache.myfaces.component.html.po Id: j_id_jsp_546672833_0]}

Raised: java.lang.IllegalStateException - the marshaller is not registered. Check the configuration of the WebServiceTemplate.

customer:

 package com.coral.project.endpoints; import java.io.IOException; import java.io.StringWriter; import javax.inject.Inject; import javax.xml.soap.SOAPException; import javax.xml.transform.TransformerException; import javax.xml.transform.stream.StreamResult; import org.springframework.ws.client.core.support.WebServiceGatewaySupport; import org.springframework.xml.transform.StringSource; import com.coral.project.dao.ifc.StreetDao; import com.coral.project.entity.Street; import com.coral.utils.SpringUtils; public class SpringWSClient extends WebServiceGatewaySupport { public void getSum() throws SOAPException, IOException, TransformerException { StreetDao streetDao = SpringUtils.getBean(StreetDao.class); Street street = streetDao.findById(1); getWebServiceTemplate().marshalSendAndReceive( "http://localhost:8080/parking/springServices/testService",street); } } 
+2
source share
1 answer

Are you using a new instance of SpringWSClient in your code?

Also, for streetDao you do not need to use SpringUtils.getBean . Instead, it should be a field annotated with @Autowired (or @Resource ).

+4
source

All Articles