diff --git a/stockquote/build.gradle b/stockquote/build.gradle
index 5736641..8f1c400 100644
--- a/stockquote/build.gradle
+++ b/stockquote/build.gradle
@@ -1,3 +1,6 @@
+ext.springWsVersion = '2.2.0.BUILD-SNAPSHOT'
+ext.springVersion = '4.0.3.RELEASE'
+
subprojects {
apply plugin: 'java'
apply plugin: 'eclipse'
@@ -5,6 +8,7 @@ subprojects {
repositories {
maven { url 'http://repo.spring.io/libs-release' }
+ maven { url 'http://repo.spring.io/libs-snapshot' }
}
dependencies {
@@ -12,8 +16,4 @@ subprojects {
testCompile("org.easymock:easymock:3.1")
}
-}
-
-task wrapper(type: Wrapper) {
- gradleVersion = '1.8'
-}
+}
\ No newline at end of file
diff --git a/stockquote/client/spring-ws/build.gradle b/stockquote/client/spring-ws/build.gradle
index d41d980..b441968 100644
--- a/stockquote/client/spring-ws/build.gradle
+++ b/stockquote/client/spring-ws/build.gradle
@@ -1,5 +1,3 @@
-ext.springWsVersion = '2.1.4.RELEASE'
-
dependencies {
compile("org.springframework.ws:spring-ws-core:$springWsVersion")
runtime("log4j:log4j:1.2.16")
diff --git a/stockquote/client/spring-ws/src/main/java/org/springframework/ws/samples/stockquote/client/sws/StockClient.java b/stockquote/client/spring-ws/src/main/java/org/springframework/ws/samples/stockquote/client/sws/StockClient.java
index 1f05c2b..fafd272 100644
--- a/stockquote/client/spring-ws/src/main/java/org/springframework/ws/samples/stockquote/client/sws/StockClient.java
+++ b/stockquote/client/spring-ws/src/main/java/org/springframework/ws/samples/stockquote/client/sws/StockClient.java
@@ -20,8 +20,7 @@ import java.io.IOException;
import java.net.URI;
import javax.xml.transform.Source;
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.support.ClassPathXmlApplicationContext;
+import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.ws.client.core.support.WebServiceGatewaySupport;
import org.springframework.ws.soap.addressing.client.ActionCallback;
@@ -51,10 +50,12 @@ public class StockClient extends WebServiceGatewaySupport {
System.out.println();
}
- public static void main(String[] args) throws IOException {
- ApplicationContext applicationContext =
- new ClassPathXmlApplicationContext("applicationContext.xml", StockClient.class);
- StockClient stockClient = (StockClient) applicationContext.getBean("stockClient");
+ public static void main(String[] args) throws Exception {
+ StockClient stockClient = new StockClient();
+ stockClient.setDefaultUri("http://localhost:8080/StockService");
+ stockClient.setRequest(new ClassPathResource("/org/springframework/ws/samples/stockquote/client/sws/quotesRequest.xml"));
+ stockClient.setAction(new URI("http://www.springframework.org/spring-ws/samples/stockquote/StockService/GetQuote"));
+
stockClient.quotes();
}
diff --git a/stockquote/client/spring-ws/src/main/resources/org/springframework/ws/samples/stockquote/client/sws/applicationContext.xml b/stockquote/client/spring-ws/src/main/resources/org/springframework/ws/samples/stockquote/client/sws/applicationContext.xml
deleted file mode 100644
index 83cbb81..0000000
--- a/stockquote/client/spring-ws/src/main/resources/org/springframework/ws/samples/stockquote/client/sws/applicationContext.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/stockquote/server/build.gradle b/stockquote/server/build.gradle
index 31b6013..38c3e36 100644
--- a/stockquote/server/build.gradle
+++ b/stockquote/server/build.gradle
@@ -2,9 +2,6 @@ configurations {
jaxb
}
-ext.springVersion = '3.2.4.RELEASE'
-ext.springWsVersion = '2.1.4.RELEASE'
-
task genJaxb {
ext.sourcesDir = "${buildDir}/generated-sources/jaxb"
ext.classesDir = "${buildDir}/classes/jaxb"
diff --git a/stockquote/server/src/main/java/org/springframework/ws/samples/stockquote/Driver.java b/stockquote/server/src/main/java/org/springframework/ws/samples/stockquote/Driver.java
index 75bac39..d938957 100644
--- a/stockquote/server/src/main/java/org/springframework/ws/samples/stockquote/Driver.java
+++ b/stockquote/server/src/main/java/org/springframework/ws/samples/stockquote/Driver.java
@@ -17,18 +17,32 @@
package org.springframework.ws.samples.stockquote;
import java.io.IOException;
+import java.net.InetSocketAddress;
-import org.springframework.context.support.ClassPathXmlApplicationContext;
+import com.sun.net.httpserver.HttpServer;
+
+import org.springframework.context.annotation.AnnotationConfigApplicationContext;
+import org.springframework.ws.samples.stockquote.ws.StockServiceConfiguration;
+import org.springframework.ws.transport.http.WebServiceMessageReceiverHttpHandler;
+import org.springframework.ws.transport.http.WsdlDefinitionHttpHandler;
public class Driver {
public static void main(String[] args) throws IOException {
- ClassPathXmlApplicationContext applicationContext =
- new ClassPathXmlApplicationContext("applicationContext.xml", Driver.class);
+ AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(
+ StockServiceConfiguration.class);
+
+ HttpServer httpServer = HttpServer.create(new InetSocketAddress(8080), -1);
+ httpServer.createContext("/StockService", applicationContext.getBean(
+ WebServiceMessageReceiverHttpHandler.class));
+ httpServer.createContext("/StockService.wsdl", applicationContext.getBean(
+ WsdlDefinitionHttpHandler.class));
+
+ httpServer.start();
System.out.println();
System.out.println("Press [Enter] to shut down...");
System.in.read();
- applicationContext.close();
+ httpServer.stop(0);
}
}
diff --git a/stockquote/server/src/main/java/org/springframework/ws/samples/stockquote/ws/StockService.java b/stockquote/server/src/main/java/org/springframework/ws/samples/stockquote/ws/StockService.java
index 64eed48..7f09ae4 100644
--- a/stockquote/server/src/main/java/org/springframework/ws/samples/stockquote/ws/StockService.java
+++ b/stockquote/server/src/main/java/org/springframework/ws/samples/stockquote/ws/StockService.java
@@ -25,12 +25,13 @@ import org.springframework.ws.samples.stockquote.schema.StockQuote;
import org.springframework.ws.samples.stockquote.schema.StockQuoteRequest;
import org.springframework.ws.samples.stockquote.schema.StockQuoteResponse;
import org.springframework.ws.server.endpoint.annotation.Endpoint;
+import org.springframework.ws.server.endpoint.annotation.RequestPayload;
+import org.springframework.ws.server.endpoint.annotation.ResponsePayload;
import org.springframework.ws.soap.addressing.server.annotation.Action;
import org.springframework.ws.soap.addressing.server.annotation.Address;
@Endpoint
-@Address("http://localhost:8080/StockService")
-// optional
+@Address("http://localhost:8080/StockService") // optional
public class StockService {
private DatatypeFactory datatypeFactory;
@@ -41,7 +42,8 @@ public class StockService {
@Action(value = "http://www.springframework.org/spring-ws/samples/stockquote/StockService/GetQuote",
output = "http://www.springframework.org/spring-ws/samples/stockquote/StockService/Quotes")
- public StockQuoteResponse getStockQuotes(StockQuoteRequest request) {
+ @ResponsePayload
+ public StockQuoteResponse getStockQuotes(@RequestPayload StockQuoteRequest request) {
StockQuoteResponse response = new StockQuoteResponse();
XMLGregorianCalendar now = datatypeFactory.newXMLGregorianCalendar(new GregorianCalendar());
diff --git a/stockquote/server/src/main/java/org/springframework/ws/samples/stockquote/ws/StockServiceConfiguration.java b/stockquote/server/src/main/java/org/springframework/ws/samples/stockquote/ws/StockServiceConfiguration.java
new file mode 100644
index 0000000..5d9f0dd
--- /dev/null
+++ b/stockquote/server/src/main/java/org/springframework/ws/samples/stockquote/ws/StockServiceConfiguration.java
@@ -0,0 +1,81 @@
+package org.springframework.ws.samples.stockquote.ws;
+
+import java.util.Collections;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.core.io.ClassPathResource;
+import org.springframework.ws.server.EndpointAdapter;
+import org.springframework.ws.server.EndpointInterceptor;
+import org.springframework.ws.server.EndpointMapping;
+import org.springframework.ws.server.endpoint.adapter.DefaultMethodEndpointAdapter;
+import org.springframework.ws.soap.addressing.server.AnnotationActionEndpointMapping;
+import org.springframework.ws.soap.saaj.SaajSoapMessageFactory;
+import org.springframework.ws.soap.server.SoapMessageDispatcher;
+import org.springframework.ws.soap.server.endpoint.interceptor.SoapEnvelopeLoggingInterceptor;
+import org.springframework.ws.transport.http.HttpUrlConnectionMessageSender;
+import org.springframework.ws.transport.http.WebServiceMessageReceiverHttpHandler;
+import org.springframework.ws.transport.http.WsdlDefinitionHttpHandler;
+import org.springframework.ws.wsdl.wsdl11.SimpleWsdl11Definition;
+
+/**
+ * @author Arjen Poutsma
+ */
+@Configuration
+@ComponentScan("org.springframework.ws.samples.stockquote.ws")
+public class StockServiceConfiguration {
+
+ @Bean
+ public WebServiceMessageReceiverHttpHandler soapHandler() {
+ WebServiceMessageReceiverHttpHandler soapHandler = new WebServiceMessageReceiverHttpHandler();
+ soapHandler.setMessageFactory(messageFactory());
+ soapHandler.setMessageReceiver(messageReceiver());
+ return soapHandler;
+ }
+
+ @Bean
+ public SaajSoapMessageFactory messageFactory() {
+ return new SaajSoapMessageFactory();
+ }
+
+ @Bean
+ public SoapMessageDispatcher messageReceiver() {
+ SoapMessageDispatcher messageReceiver = new SoapMessageDispatcher();
+ messageReceiver.setEndpointAdapters(
+ Collections.singletonList(endpointAdapter()));
+ messageReceiver.setEndpointMappings(
+ Collections.singletonList(endpointMapping()));
+ return messageReceiver;
+ }
+
+ @Bean
+ public DefaultMethodEndpointAdapter endpointAdapter() {
+ return new DefaultMethodEndpointAdapter();
+ }
+
+ @Bean
+ public AnnotationActionEndpointMapping endpointMapping() {
+ AnnotationActionEndpointMapping endpointMapping = new AnnotationActionEndpointMapping();
+ endpointMapping.setMessageSender(messageSender());
+ endpointMapping.setPreInterceptors(new EndpointInterceptor[] { new SoapEnvelopeLoggingInterceptor()});
+ return endpointMapping;
+ }
+
+ @Bean
+ public HttpUrlConnectionMessageSender messageSender() {
+ return new HttpUrlConnectionMessageSender();
+ }
+
+ @Bean
+ public WsdlDefinitionHttpHandler wsdlHandler() {
+ return new WsdlDefinitionHttpHandler(wsdlDefinition());
+ }
+
+ @Bean
+ public SimpleWsdl11Definition wsdlDefinition() {
+ return new SimpleWsdl11Definition(new ClassPathResource("/org/springframework/ws/samples/stockquote/ws/stockquote.wsdl"));
+ }
+
+
+}
diff --git a/stockquote/server/src/main/resources/org/springframework/ws/samples/stockquote/applicationContext.xml b/stockquote/server/src/main/resources/org/springframework/ws/samples/stockquote/applicationContext.xml
deleted file mode 100644
index 8f53e13..0000000
--- a/stockquote/server/src/main/resources/org/springframework/ws/samples/stockquote/applicationContext.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/stockquote/server/src/main/resources/org/springframework/ws/samples/stockquote/ws/applicationContext-ws.xml b/stockquote/server/src/main/resources/org/springframework/ws/samples/stockquote/ws/applicationContext-ws.xml
deleted file mode 100644
index ca23b94..0000000
--- a/stockquote/server/src/main/resources/org/springframework/ws/samples/stockquote/ws/applicationContext-ws.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file