Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in / Register
Toggle navigation
S
spring-boot
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
DEMO
spring-boot
Commits
f561d9d9
Commit
f561d9d9
authored
Apr 15, 2016
by
Stephane Nicoll
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Polish auto-configuration for Spring Web Services
Closes gh-5645
parent
a7b3a913
Changes
8
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
68 additions
and
62 deletions
+68
-62
WsAutoConfiguration.java
...gframework/boot/autoconfigure/ws/WsAutoConfiguration.java
+7
-6
WsProperties.java
...g/springframework/boot/autoconfigure/ws/WsProperties.java
+15
-13
WsAutoConfigurationTests.java
...ework/boot/autoconfigure/ws/WsAutoConfigurationTests.java
+16
-30
pom.xml
spring-boot-docs/pom.xml
+1
-0
appendix-application-properties.adoc
...cs/src/main/asciidoc/appendix-application-properties.adoc
+5
-0
index.adoc
spring-boot-docs/src/main/asciidoc/index.adoc
+1
-0
spring-boot-features.adoc
spring-boot-docs/src/main/asciidoc/spring-boot-features.adoc
+22
-12
WebServiceConfig.java
...t-sample-ws/src/main/java/sample/ws/WebServiceConfig.java
+1
-1
No files found.
spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/ws/WsAutoConfiguration.java
View file @
f561d9d9
...
...
@@ -29,8 +29,7 @@ import org.springframework.boot.context.properties.EnableConfigurationProperties
import
org.springframework.context.ApplicationContext
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Import
;
import
org.springframework.ws.config.annotation.DelegatingWsConfiguration
;
import
org.springframework.ws.config.annotation.EnableWs
;
import
org.springframework.ws.config.annotation.WsConfigurationSupport
;
import
org.springframework.ws.transport.http.MessageDispatcherServlet
;
...
...
@@ -38,6 +37,7 @@ import org.springframework.ws.transport.http.MessageDispatcherServlet;
* {@link EnableAutoConfiguration Auto-configuration} for Spring Web Services.
*
* @author Vedran Pavic
* @author Stephane Nicoll
* @since 1.4.0
*/
@Configuration
...
...
@@ -48,7 +48,7 @@ import org.springframework.ws.transport.http.MessageDispatcherServlet;
@AutoConfigureAfter
(
EmbeddedServletContainerAutoConfiguration
.
class
)
public
class
WsAutoConfiguration
{
private
WsProperties
properties
;
private
final
WsProperties
properties
;
public
WsAutoConfiguration
(
WsProperties
properties
)
{
this
.
properties
=
properties
;
...
...
@@ -63,15 +63,16 @@ public class WsAutoConfiguration {
String
urlMapping
=
(
path
.
endsWith
(
"/"
)
?
path
+
"*"
:
path
+
"/*"
);
ServletRegistrationBean
registration
=
new
ServletRegistrationBean
(
servlet
,
urlMapping
);
registration
.
setLoadOnStartup
(
this
.
properties
.
getServlet
().
getLoadOnStartup
());
for
(
Map
.
Entry
<
String
,
String
>
entry
:
this
.
properties
.
getInit
().
entrySet
())
{
WsProperties
.
Servlet
servletProperties
=
this
.
properties
.
getServlet
();
registration
.
setLoadOnStartup
(
servletProperties
.
getLoadOnStartup
());
for
(
Map
.
Entry
<
String
,
String
>
entry
:
servletProperties
.
getInit
().
entrySet
())
{
registration
.
addInitParameter
(
entry
.
getKey
(),
entry
.
getValue
());
}
return
registration
;
}
@Configuration
@
Import
(
DelegatingWsConfiguration
.
class
)
@
EnableWs
protected
static
class
WsConfiguration
{
}
...
...
spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/ws/WsProperties.java
View file @
f561d9d9
...
...
@@ -28,6 +28,7 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
* {@link ConfigurationProperties} for Spring Web Services.
*
* @author Vedran Pavic
* @author Stephane Nicoll
* @since 1.4.0
*/
@ConfigurationProperties
(
"spring.ws"
)
...
...
@@ -40,11 +41,6 @@ public class WsProperties {
@Pattern
(
regexp
=
"/[^?#]*"
,
message
=
"Path must start with /"
)
private
String
path
=
"/services"
;
/**
* Init parameters to pass to Spring Web Services via the servlet.
*/
private
Map
<
String
,
String
>
init
=
new
HashMap
<
String
,
String
>();
private
final
Servlet
servlet
=
new
Servlet
();
public
String
getPath
()
{
...
...
@@ -55,25 +51,31 @@ public class WsProperties {
this
.
path
=
path
;
}
public
Map
<
String
,
String
>
getInit
()
{
return
this
.
init
;
}
public
void
setInit
(
Map
<
String
,
String
>
init
)
{
this
.
init
=
init
;
}
public
Servlet
getServlet
()
{
return
this
.
servlet
;
}
public
static
class
Servlet
{
/**
* Servlet init parameters to pass to Spring Web Services.
*/
private
Map
<
String
,
String
>
init
=
new
HashMap
<
String
,
String
>();
/**
* Load on startup priority of the Spring Web Services servlet.
*/
private
int
loadOnStartup
=
-
1
;
public
Map
<
String
,
String
>
getInit
()
{
return
this
.
init
;
}
public
void
setInit
(
Map
<
String
,
String
>
init
)
{
this
.
init
=
init
;
}
public
int
getLoadOnStartup
()
{
return
this
.
loadOnStartup
;
}
...
...
spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/ws/WsAutoConfigurationTests.java
View file @
f561d9d9
...
...
@@ -17,7 +17,6 @@
package
org
.
springframework
.
boot
.
autoconfigure
.
ws
;
import
org.junit.After
;
import
org.junit.Before
;
import
org.junit.Rule
;
import
org.junit.Test
;
import
org.junit.rules.ExpectedException
;
...
...
@@ -35,18 +34,14 @@ import static org.assertj.core.api.Assertions.assertThat;
* Tests for {@link WsAutoConfiguration}.
*
* @author Vedran Pavic
* @author Stephane Nicoll
*/
public
class
WsAutoConfigurationTests
{
private
AnnotationConfigWebApplicationContext
context
=
new
AnnotationConfigWebApplicationContext
();
@Rule
public
ExpectedException
thrown
=
ExpectedException
.
none
();
@Before
public
void
setupContext
()
{
this
.
context
.
setServletContext
(
new
MockServletContext
());
}
private
AnnotationConfigWebApplicationContext
context
;
@After
public
void
close
()
{
...
...
@@ -57,7 +52,7 @@ public class WsAutoConfigurationTests {
@Test
public
void
defaultConfiguration
()
{
registerAndRefresh
(
WsAutoConfiguration
.
class
);
load
(
WsAutoConfiguration
.
class
);
assertThat
(
this
.
context
.
getBeansOfType
(
ServletRegistrationBean
.
class
)).
hasSize
(
1
);
}
...
...
@@ -66,27 +61,19 @@ public class WsAutoConfigurationTests {
public
void
customPathMustBeginWithASlash
()
{
this
.
thrown
.
expect
(
BeanCreationException
.
class
);
this
.
thrown
.
expectMessage
(
"Path must start with /"
);
EnvironmentTestUtils
.
addEnvironment
(
this
.
context
,
"spring.ws.path=invalid"
);
registerAndRefresh
(
WsAutoConfiguration
.
class
);
load
(
WsAutoConfiguration
.
class
,
"spring.ws.path=invalid"
);
}
@Test
public
void
customPathWithTrailingSlash
()
{
EnvironmentTestUtils
.
addEnvironment
(
this
.
context
,
"spring.ws.path=/valid/"
);
registerAndRefresh
(
WsAutoConfiguration
.
class
);
load
(
WsAutoConfiguration
.
class
,
"spring.ws.path=/valid/"
);
assertThat
(
this
.
context
.
getBean
(
ServletRegistrationBean
.
class
).
getUrlMappings
())
.
contains
(
"/valid/*"
);
}
@Test
public
void
customPath
()
{
EnvironmentTestUtils
.
addEnvironment
(
this
.
context
,
"spring.ws.path=/valid"
);
registerAndRefresh
(
WsAutoConfiguration
.
class
);
load
(
WsAutoConfiguration
.
class
,
"spring.ws.path=/valid"
);
assertThat
(
this
.
context
.
getBeansOfType
(
ServletRegistrationBean
.
class
)).
hasSize
(
1
);
assertThat
(
this
.
context
.
getBean
(
ServletRegistrationBean
.
class
).
getUrlMappings
())
.
contains
(
"/valid/*"
);
...
...
@@ -94,10 +81,7 @@ public class WsAutoConfigurationTests {
@Test
public
void
customLoadOnStartup
()
{
EnvironmentTestUtils
.
addEnvironment
(
this
.
context
,
"spring.ws.servlet.load-on-startup=1"
);
registerAndRefresh
(
WsAutoConfiguration
.
class
);
load
(
WsAutoConfiguration
.
class
,
"spring.ws.servlet.load-on-startup=1"
);
ServletRegistrationBean
registrationBean
=
this
.
context
.
getBean
(
ServletRegistrationBean
.
class
);
assertThat
(
ReflectionTestUtils
.
getField
(
registrationBean
,
"loadOnStartup"
))
...
...
@@ -106,19 +90,21 @@ public class WsAutoConfigurationTests {
@Test
public
void
customInitParameters
()
{
EnvironmentTestUtils
.
addEnvironment
(
this
.
context
,
"spring.ws.init.key1=value1"
,
"spring.ws.init.key2=value2"
);
registerAndRefresh
(
WsAutoConfiguration
.
class
);
load
(
WsAutoConfiguration
.
class
,
"spring.ws.servlet.init.key1=value1"
,
"spring.ws.servlet.init.key2=value2"
);
ServletRegistrationBean
registrationBean
=
this
.
context
.
getBean
(
ServletRegistrationBean
.
class
);
assertThat
(
registrationBean
.
getInitParameters
()).
containsEntry
(
"key1"
,
"value1"
);
assertThat
(
registrationBean
.
getInitParameters
()).
containsEntry
(
"key2"
,
"value2"
);
}
private
void
registerAndRefresh
(
Class
<?>...
annotatedClasses
)
{
this
.
context
.
register
(
annotatedClasses
);
this
.
context
.
refresh
();
private
void
load
(
Class
<?>
config
,
String
...
environment
)
{
AnnotationConfigWebApplicationContext
ctx
=
new
AnnotationConfigWebApplicationContext
();
ctx
.
setServletContext
(
new
MockServletContext
());
EnvironmentTestUtils
.
addEnvironment
(
ctx
,
environment
);
ctx
.
register
(
config
);
ctx
.
refresh
();
this
.
context
=
ctx
;
}
}
spring-boot-docs/pom.xml
View file @
f561d9d9
...
...
@@ -843,6 +843,7 @@
<spring-boot-repo>
${spring-boot-repo}
</spring-boot-repo>
<spring-docs-version>
${spring.version}
</spring-docs-version>
<spring-security-docs-version>
${spring-security.version}
</spring-security-docs-version>
<spring-ws-docs-version>
${spring-ws.version}
</spring-ws-docs-version>
<github-tag>
${github-tag}
</github-tag>
</attributes>
</configuration>
...
...
spring-boot-docs/src/main/asciidoc/appendix-application-properties.adoc
View file @
f561d9d9
...
...
@@ -406,6 +406,11 @@ content into your application; rather pick only the properties that you need.
spring.velocity.toolbox-config-location= # Velocity Toolbox config location. For instance `/WEB-INF/toolbox.xml`
spring.velocity.view-names= # White list of view names that can be resolved.
# WEB SERVICES ({sc-spring-boot-autoconfigure}/ws/WsProperties.{sc-ext}[WsProperties])
spring.ws.path=/services # Path that serves as the base URI for the services.
spring.ws.servlet.init= # Servlet init parameters to pass to Spring Web Services.
spring.ws.servlet.load-on-startup=-1 # Load on startup priority of the Spring Web Services servlet.
[[common-application-properties-security]]
# ----------------------------------------
...
...
spring-boot-docs/src/main/asciidoc/index.adoc
View file @
f561d9d9
...
...
@@ -37,6 +37,7 @@ Phillip Webb; Dave Syer; Josh Long; Stéphane Nicoll; Rob Winch; Andy Wilkinson;
:spring-boot-maven-plugin-site: http://docs.spring.io/spring-boot/docs/{spring-boot-docs-version}/maven-plugin
:spring-reference: http://docs.spring.io/spring/docs/{spring-docs-version}/spring-framework-reference/htmlsingle
:spring-security-reference: http://docs.spring.io/spring-security/site/docs/{spring-security-docs-version}/reference/htmlsingle
:spring-ws-reference: http://docs.spring.io/spring-ws/docs/{spring-ws-docs-version}/reference/htmlsingle
:spring-javadoc: http://docs.spring.io/spring/docs/{spring-docs-version}/javadoc-api/org/springframework
:spring-amqp-javadoc: http://docs.spring.io/spring-amqp/docs/current/api/org/springframework/amqp
:spring-data-javadoc: http://docs.spring.io/spring-data/jpa/docs/current/api/org/springframework/data/jpa
...
...
spring-boot-docs/src/main/asciidoc/spring-boot-features.adoc
View file @
f561d9d9
...
...
@@ -4990,6 +4990,28 @@ public class MyTest {
[[boot-features-websockets]]
== WebSockets
Spring Boot provides WebSockets auto-configuration for embedded Tomcat (8 and 7), Jetty 9
and Undertow. If you're deploying a war file to a standalone container, Spring Boot
assumes that the container will be responsible for the configuration of its WebSocket
support.
Spring Framework provides {spring-reference}/#websocket[rich WebSocket support] that can
be easily accessed via the `spring-boot-starter-websocket` module.
[[boot-features-ws]]
== Web Services
Spring Boot provides Web Services auto-configuration so that all is required is defining
your `Endpoints`.
The {spring-ws-reference}[Spring Web Services features] can be easily accessed via the
`spring-boot-starter-ws` module.
[[boot-features-developing-auto-configuration]]
== Creating your own auto-configuration
If you work in a company that develops shared libraries, or if you work on an open-source
...
...
@@ -5198,18 +5220,6 @@ library.
[[boot-features-websockets]]
== WebSockets
Spring Boot provides WebSockets auto-configuration for embedded Tomcat (8 and 7), Jetty 9
and Undertow. If you're deploying a war file to a standalone container, Spring Boot
assumes that the container will be responsible for the configuration of its WebSocket
support.
Spring Framework provides {spring-reference}/#websocket[rich WebSocket support] that can
be easily accessed via the `spring-boot-starter-websocket` module.
[[boot-features-whats-next]]
== What to read next
If you want to learn more about any of the classes discussed in this section you can
...
...
spring-boot-samples/spring-boot-sample-ws/src/main/java/sample/ws/WebServiceConfig.java
View file @
f561d9d9
/*
* Copyright 2012-201
4
the original author or authors.
* Copyright 2012-201
6
the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment