Я настраиваю клиента веб-службы spring-ws, тип запроса или ответа - JAXBElemet.Как я могу настроить маршаллер?
Я использую файл .xsd для создания динамического wsdl.Файл .xsd выглядит следующим образом:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:tns="http://com.bytedusk.dev/spring-seed/ws/echo"
targetNamespace="http://com.bytedusk.dev/spring-seed/ws/echo"
elementFormDefault="qualified">
<xs:element name="EchoRequest" type="xs:string"></xs:element>
<xs:element name="EchoResponse" type="xs:string"></xs:element>
Мой код XML:
<bean id="messageFactory" class="org.springframework.ws.soap.saaj.SaajSoapMessageFactory" />
<!-- <bean id="marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
</bean> -->
<bean id="webServiceTemplate" class="org.springframework.ws.client.core.WebServiceTemplate">
<constructor-arg ref="messageFactory" />
<property name="marshaller" ref="marshaller"></property>
<property name="unmarshaller" ref="marshaller"></property>
<property name="messageSender">
<bean class="org.springframework.ws.transport.http.HttpComponentsMessageSender"></bean>
</property>
<property name="defaultUri" value="http://${webservice.ip}:${webservice.port}/${maven.app-name}/ws/echo" />
</bean>
Код моего клиента:
@Controller
public class MainController {
@Autowired
private WebServiceTemplate webServiceTemplate;
@Autowired
private JAXBElement<String> requestWSBean;
@RequestMapping(value="/RequestWS")
@ResponseBody
public String RequestWS() throws JAXBException{
requestWSBean.setValue("Request From SpringWS Template Client");
JAXBElement<String> response = (JAXBElement<String>)
webServiceTemplate.marshalSendAndReceive(requestWSBean);
return response.getValue();
}
}