@Override public void customize(WebServiceTemplate webServiceTemplate) { webServiceTemplate.setCheckConnectionForFault(this.checkConnectionFault); }
@Override public void customize(WebServiceTemplate webServiceTemplate) { webServiceTemplate.setFaultMessageResolver(this.faultMessageResolver); }
@Override public void customize(WebServiceTemplate webServiceTemplate) { webServiceTemplate.setCheckConnectionForError(this.checkConnectionForError); }
public static void main(String[] args) { WebServiceTemplate webServiceTemplate = new WebServiceTemplate(); Jaxb2Marshaller jaxb2Marshaller = new Jaxb2Marshaller(); jaxb2Marshaller.setClassesToBeBound(UserIdRequest.class, UserResponse.class, User.class); webServiceTemplate.setMarshaller(jaxb2Marshaller); webServiceTemplate.setUnmarshaller(jaxb2Marshaller); //构造 SOAP 请求 UserIdRequest userIdRequest = new UserIdRequest(); userIdRequest.setUserId(1L); userIdRequest.setTimestamp(Instant.now().toEpochMilli()); UserResponse userResponse = (UserResponse) webServiceTemplate.marshalSendAndReceive("http://localhost:8080/web-services/user", userIdRequest); System.out.println(userResponse); }
/** * Sets the provided Marshaller and Unmarshaller on this gateway's WebServiceTemplate. * Neither may be null. * @param marshaller The marshaller. * @param unmarshallerArg The unmarshaller. */ private void configureMarshallers(Marshaller marshaller, @Nullable Unmarshaller unmarshallerArg) { Unmarshaller unmarshaller = unmarshallerArg; Assert.notNull(marshaller, "marshaller must not be null"); if (unmarshaller == null) { Assert.isInstanceOf(Unmarshaller.class, marshaller, "Marshaller [" + marshaller + "] does not implement the Unmarshaller interface. " + "Please set an Unmarshaller explicitly by using one of the constructors that accepts " + "both Marshaller and Unmarshaller arguments."); unmarshaller = (Unmarshaller) marshaller; } Assert.notNull(unmarshaller, "unmarshaller must not be null"); getWebServiceTemplate().setMarshaller(marshaller); getWebServiceTemplate().setUnmarshaller(unmarshaller); }
public AbstractWebServiceOutboundGateway(DestinationProvider destinationProvider, WebServiceMessageFactory messageFactory) { Assert.notNull(destinationProvider, "DestinationProvider must not be null"); this.webServiceTemplate = new WebServiceTemplate(messageFactory); this.destinationProvider = destinationProvider; // we always call WebServiceTemplate methods with an explicit URI argument, // but in case the WebServiceTemplate is accessed directly we'll set this: this.webServiceTemplate.setDestinationProvider(destinationProvider); this.uri = null; }
@Override protected Object doHandle(String uri, Message<?> requestMessage, WebServiceMessageCallback requestCallback) { return getWebServiceTemplate() .marshalSendAndReceive(uri, requestMessage.getPayload(), new PassThroughRequestMessageCallback(requestCallback, requestMessage)); }
public AbstractWebServiceOutboundGateway(final String uri, WebServiceMessageFactory messageFactory) { Assert.hasText(uri, "URI must not be empty"); this.webServiceTemplate = new WebServiceTemplate(messageFactory); this.destinationProvider = null; this.uri = uri; }
/** * Configure the provided {@link WebServiceTemplate} instance using this builder. * @param <T> the type of web service template * @param webServiceTemplate the {@link WebServiceTemplate} to configure * @return the web service template instance * @see #build() * @see #build(Class) */ public <T extends WebServiceTemplate> T configure(T webServiceTemplate) { Assert.notNull(webServiceTemplate, "WebServiceTemplate must not be null"); configureMessageSenders(webServiceTemplate); PropertyMapper map = PropertyMapper.get().alwaysApplyingWhenNonNull(); applyCustomizers(webServiceTemplate, this.internalCustomizers); map.from(this.marshaller).to(webServiceTemplate::setMarshaller); map.from(this.unmarshaller).to(webServiceTemplate::setUnmarshaller); map.from(this.destinationProvider).to(webServiceTemplate::setDestinationProvider); map.from(this.transformerFactoryClass) .to(webServiceTemplate::setTransformerFactoryClass); map.from(this.messageFactory).to(webServiceTemplate::setMessageFactory); if (!CollectionUtils.isEmpty(this.interceptors)) { Set<ClientInterceptor> merged = new LinkedHashSet<>(this.interceptors); if (webServiceTemplate.getInterceptors() != null) { merged.addAll(Arrays.asList(webServiceTemplate.getInterceptors())); } webServiceTemplate.setInterceptors(merged.toArray(new ClientInterceptor[0])); } applyCustomizers(webServiceTemplate, this.customizers); return webServiceTemplate; }
public void setMessageSender(WebServiceMessageSender messageSender) { Assert.state(!this.webServiceTemplateExplicitlySet, () -> "'messageSender' must be specified on the provided: " + this.webServiceTemplate); this.webServiceTemplate.setMessageSender(messageSender); }
@Override protected Object doHandle(String uri, final Message<?> requestMessage, final WebServiceMessageCallback requestCallback) { Object requestPayload = requestMessage.getPayload(); Result responseResultInstance = null; if (requestPayload instanceof String) { responseResultInstance = new StringResult(); } else if (requestPayload instanceof Document) { responseResultInstance = new DOMResult(); } return getWebServiceTemplate() .sendAndReceive(uri, new SimpleRequestMessageCallback(requestCallback, requestMessage), new SimpleResponseMessageExtractor(responseResultInstance)); }
public void setInterceptors(ClientInterceptor... interceptors) { Assert.state(!this.webServiceTemplateExplicitlySet, () -> "'interceptors' must be specified on the provided: " + this.webServiceTemplate); this.webServiceTemplate.setInterceptors(interceptors); }
private <T extends WebServiceTemplate> void configureMessageSenders( T webServiceTemplate) { if (this.messageSenders.isOnlyAdditional() && this.detectHttpMessageSender) { Set<WebServiceMessageSender> merged = append( this.messageSenders.getMessageSenders(), new HttpWebServiceMessageSenderBuilder().build()); webServiceTemplate .setMessageSenders(merged.toArray(new WebServiceMessageSender[0])); } else if (!CollectionUtils.isEmpty(this.messageSenders.getMessageSenders())) { webServiceTemplate.setMessageSenders(this.messageSenders.getMessageSenders() .toArray(new WebServiceMessageSender[0])); } }
public void setMessageFactory(WebServiceMessageFactory messageFactory) { Assert.state(!this.webServiceTemplateExplicitlySet, () -> "'messageFactory' must be specified on the provided: " + this.webServiceTemplate); this.webServiceTemplate.setMessageFactory(messageFactory); }
@Test public void testWebServiceRequestAndResponse() { StringResult result = new StringResult(); Source payload = new StringSource( "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + "<echoRequest xmlns=\"http://www.springframework.org/spring-ws/samples/echo\">hello</echoRequest>"); template.sendSourceAndReceiveToResult(WS_URI, payload, result); logger.info("RESULT: " + result.toString()); assertThat(result.toString(), equalTo( "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + "<echoResponse xmlns=\"http://www.springframework.org/spring-ws/samples/echo\">hello</echoResponse>")); } }
@Override public void doWithMessage(WebServiceMessage message) throws IOException, TransformerException { Object payload = this.requestMessage.getPayload(); doWithMessageInternal(message, payload); if (message instanceof SoapMessage) { AbstractWebServiceOutboundGateway.this.headerMapper .fromHeadersToRequest(this.requestMessage.getHeaders(), (SoapMessage) message); } if (this.requestCallback != null) { this.requestCallback.doWithMessage(message); } }
private Source extractSource(Object requestPayload) throws IOException, TransformerException { Source source = null; if (requestPayload instanceof Source) { source = (Source) requestPayload; Object o = SimpleWebServiceOutboundGateway.this.sourceExtractor.extractData(source); Assert.isInstanceOf(Source.class, o); source = (Source) o; } else if (requestPayload instanceof String) { source = new StringSource((String) requestPayload); } else if (requestPayload instanceof Document) { source = new DOMSource((Document) requestPayload); } else if (requestPayload instanceof WebServiceMessage) { source = ((WebServiceMessage) requestPayload).getPayloadSource(); } else { throw new MessagingException("Unsupported payload type '" + requestPayload.getClass() + "'. " + this.getClass().getName() + " only supports 'java.lang.String', '" + Source.class.getName() + "', '" + Document.class.getName() + "' and '" + WebServiceMessage.class.getName() + "'. " + "Consider either using the '" + MarshallingWebServiceOutboundGateway.class.getName() + "' or a Message Transformer."); } return source; }
@Test @SuppressWarnings("unchecked") public void jmsUri() { AbstractEndpoint endpoint = this.context.getBean("gatewayWithJmsUri", AbstractEndpoint.class); assertEquals(EventDrivenConsumer.class, endpoint.getClass()); MessageHandler handler = TestUtils.getPropertyValue(endpoint, "handler", MessageHandler.class); assertNull(TestUtils.getPropertyValue(handler, "destinationProvider")); assertFalse(TestUtils.getPropertyValue(handler, "encodeUri", Boolean.class)); WebServiceTemplate webServiceTemplate = TestUtils.getPropertyValue(handler, "webServiceTemplate", WebServiceTemplate.class); webServiceTemplate = spy(webServiceTemplate); doReturn(null).when(webServiceTemplate).sendAndReceive(anyString(), any(WebServiceMessageCallback.class), ArgumentMatchers.<WebServiceMessageExtractor<Object>>any()); new DirectFieldAccessor(handler).setPropertyValue("webServiceTemplate", webServiceTemplate); handler.handleMessage(new GenericMessage<String>("foo")); verify(webServiceTemplate).sendAndReceive(eq("jms:wsQueue"), any(WebServiceMessageCallback.class), ArgumentMatchers.<WebServiceMessageExtractor<Object>>any()); }
public void setFaultMessageResolver(FaultMessageResolver faultMessageResolver) { Assert.state(!this.webServiceTemplateExplicitlySet, () -> "'faultMessageResolver' must be specified on the provided: " + this.webServiceTemplate); this.webServiceTemplate.setFaultMessageResolver(faultMessageResolver); }
public void setMessageSenders(WebServiceMessageSender... messageSenders) { Assert.state(!this.webServiceTemplateExplicitlySet, () -> "'messageSenders' must be specified on the provided: " + this.webServiceTemplate); this.webServiceTemplate.setMessageSenders(messageSenders); }