Clarify how to apply advanced endpoint configuration

Closes gh-1209
This commit is contained in:
Stéphane Nicoll
2025-04-07 12:59:37 +02:00
parent 352801d761
commit 5d5bd57f79
2 changed files with 65 additions and 37 deletions

View File

@@ -633,14 +633,14 @@ public class EchoConfig {
----
====
To customize the `@EnableWs` configuration, you can implement `WsConfigurer` or, better yet, extend the `WsConfigurerAdapter`:
To customize the `@EnableWs` configuration, you can implement `WsConfigurer` and override individual methods:
====
[source,java]
----
@Configuration
@EnableWs
public class MyConfiguration extends WsConfigurerAdapter {
public class EchoConfig extends WsConfigurerAdapter {
@Override
public void addInterceptors(List<EndpointInterceptor> interceptors) {
@@ -652,7 +652,30 @@ public class MyConfiguration extends WsConfigurerAdapter {
argumentResolvers.add(new MyArgumentResolver());
}
// More overridden methods ...
}
----
====
If `WsConfigurer` does not expose some more advanced setting that needs to be configured, consider removing `@EnableWs` and extending directly from `WsConfigurationSupport` or `DelegatingWsConfiguration`.
====
[source,java]
----
@Configuration
public class EchoConfig extends WsConfigurationSupport {
@Override
public void addInterceptors(List<EndpointInterceptor> interceptors) {
interceptors.add(new MyInterceptor());
}
@Bean
@Override
public PayloadRootAnnotationMethodEndpointMapping payloadRootAnnotationMethodEndpointMapping() {
// Create or delegate to "super" to create and
// customize properties of PayloadRootAnnotationMethodEndpointMapping
}
}
----
====
@@ -942,8 +965,8 @@ The concept of configurable endpoint mappings that can optionally contain interc
A lot of supporting functionality can be built into custom `EndpointMapping` implementations.
For example, a custom endpoint mapping could choose an endpoint based not only on the contents of a message but also on a specific SOAP header (or, indeed, multiple SOAP headers).
Most endpoint mappings inherit from the `AbstractEndpointMapping`, which offers an '`interceptors`' property, which is the list of interceptors to use. `EndpointInterceptors` are discussed in <<server-endpoint-interceptor>>.
Additionally, there is the `defaultEndpoint`, which is the default endpoint to use when this endpoint mapping does not result in a matching endpoint.
Most endpoint mappings inherit from the `AbstractEndpointMapping`, which offers an '`interceptors`' property, which is the list of interceptors to use.
`EndpointInterceptors` are discussed in <<server-endpoint-interceptor>>.
As explained in <<server-endpoints>>, the `@Endpoint` style lets you handle multiple requests in one endpoint class.
This is the responsibility of the `MethodEndpointMapping`.
@@ -957,6 +980,8 @@ Whenever a message comes in with this qualified name for the payload root elemen
Alternatively, the `SoapActionAnnotationMethodEndpointMapping` uses the `@SoapAction` annotation to mark methods with a particular SOAP Action.
Whenever a message comes in with this `SOAPAction` header, the method is invoked.
`AbstractEndpointMapping` implementations provides a `defaultEndpoint` property that configures the endpoint to use when a configured mapping does not result in a matching endpoint.
[[server-ws-addressing]]
=== WS-Addressing