move spring-ws-2.0 tests to java (#11196)
Co-authored-by: Lauri Tulmin <tulmin@gmail.com>
This commit is contained in:
parent
c370aef658
commit
483387d333
|
@ -1,50 +0,0 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package test.boot
|
||||
|
||||
import io.opentelemetry.test.hello_web_service.HelloRequest
|
||||
import io.opentelemetry.test.hello_web_service.HelloRequestSoapAction
|
||||
import io.opentelemetry.test.hello_web_service.HelloRequestWsAction
|
||||
import io.opentelemetry.test.hello_web_service.HelloResponse
|
||||
import org.springframework.ws.server.endpoint.annotation.Endpoint
|
||||
import org.springframework.ws.server.endpoint.annotation.PayloadRoot
|
||||
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.server.endpoint.annotation.SoapAction
|
||||
|
||||
@Endpoint
|
||||
class HelloEndpoint {
|
||||
private static final String NAMESPACE_URI = "http://opentelemetry.io/test/hello-web-service"
|
||||
|
||||
@PayloadRoot(namespace = NAMESPACE_URI, localPart = "helloRequest")
|
||||
@ResponsePayload
|
||||
HelloResponse hello(@RequestPayload HelloRequest request) {
|
||||
return handleHello(request.getName())
|
||||
}
|
||||
|
||||
@SoapAction(value = "http://opentelemetry.io/test/hello-soap-action")
|
||||
@ResponsePayload
|
||||
HelloResponse helloSoapAction(@RequestPayload HelloRequestSoapAction request) {
|
||||
return handleHello(request.getName())
|
||||
}
|
||||
|
||||
@Action(value = "http://opentelemetry.io/test/hello-ws-action")
|
||||
@ResponsePayload
|
||||
HelloResponse helloWsAction(@RequestPayload HelloRequestWsAction request) {
|
||||
return handleHello(request.getName())
|
||||
}
|
||||
|
||||
private HelloResponse handleHello(String name) {
|
||||
if ("exception" == name) {
|
||||
throw new Exception("hello exception")
|
||||
}
|
||||
HelloResponse response = new HelloResponse()
|
||||
response.setMessage("Hello " + name)
|
||||
|
||||
return response
|
||||
}
|
||||
}
|
|
@ -1,160 +0,0 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package test.boot
|
||||
|
||||
import io.opentelemetry.api.trace.SpanKind
|
||||
import io.opentelemetry.instrumentation.test.AgentInstrumentationSpecification
|
||||
import io.opentelemetry.instrumentation.test.asserts.TraceAssert
|
||||
import io.opentelemetry.instrumentation.test.base.HttpServerTestTrait
|
||||
import io.opentelemetry.sdk.trace.data.SpanData
|
||||
import io.opentelemetry.semconv.incubating.CodeIncubatingAttributes
|
||||
import io.opentelemetry.test.hello_web_service.HelloRequest
|
||||
import io.opentelemetry.test.hello_web_service.HelloRequestSoapAction
|
||||
import io.opentelemetry.test.hello_web_service.HelloRequestWsAction
|
||||
import io.opentelemetry.test.hello_web_service.HelloResponse
|
||||
import org.springframework.boot.SpringApplication
|
||||
import org.springframework.context.ConfigurableApplicationContext
|
||||
import org.springframework.oxm.jaxb.Jaxb2Marshaller
|
||||
import org.springframework.util.ClassUtils
|
||||
import org.springframework.ws.client.core.WebServiceMessageCallback
|
||||
import org.springframework.ws.client.core.WebServiceTemplate
|
||||
import org.springframework.ws.soap.addressing.client.ActionCallback
|
||||
import org.springframework.ws.soap.client.SoapFaultClientException
|
||||
import org.springframework.ws.soap.client.core.SoapActionCallback
|
||||
import spock.lang.Shared
|
||||
|
||||
import static io.opentelemetry.api.trace.SpanKind.INTERNAL
|
||||
import static io.opentelemetry.api.trace.StatusCode.ERROR
|
||||
|
||||
class SpringWsTest extends AgentInstrumentationSpecification implements HttpServerTestTrait<ConfigurableApplicationContext> {
|
||||
|
||||
@Shared
|
||||
private Jaxb2Marshaller marshaller = new Jaxb2Marshaller()
|
||||
|
||||
def setupSpec() {
|
||||
setupServer()
|
||||
|
||||
marshaller.setPackagesToScan(ClassUtils.getPackageName(HelloRequest))
|
||||
marshaller.afterPropertiesSet()
|
||||
}
|
||||
|
||||
def cleanupSpec() {
|
||||
cleanupServer()
|
||||
}
|
||||
|
||||
@Override
|
||||
ConfigurableApplicationContext startServer(int port) {
|
||||
def app = new SpringApplication(AppConfig, WebServiceConfig)
|
||||
app.setDefaultProperties([
|
||||
"server.port" : port,
|
||||
"server.context-path" : getContextPath(),
|
||||
"server.servlet.contextPath" : getContextPath(),
|
||||
"server.error.include-message": "always"])
|
||||
def context = app.run()
|
||||
return context
|
||||
}
|
||||
|
||||
@Override
|
||||
void stopServer(ConfigurableApplicationContext ctx) {
|
||||
ctx.close()
|
||||
}
|
||||
|
||||
@Override
|
||||
String getContextPath() {
|
||||
return "/xyz"
|
||||
}
|
||||
|
||||
HelloResponse makeRequest(methodName, name) {
|
||||
WebServiceTemplate webServiceTemplate = new WebServiceTemplate(marshaller)
|
||||
|
||||
Object request = null
|
||||
WebServiceMessageCallback callback = null
|
||||
if ("hello" == methodName) {
|
||||
request = new HelloRequest(name: name)
|
||||
} else if ("helloSoapAction" == methodName) {
|
||||
request = new HelloRequestSoapAction(name: name)
|
||||
callback = new SoapActionCallback("http://opentelemetry.io/test/hello-soap-action")
|
||||
} else if ("helloWsAction" == methodName) {
|
||||
request = new HelloRequestWsAction(name: name)
|
||||
callback = new ActionCallback("http://opentelemetry.io/test/hello-ws-action")
|
||||
} else {
|
||||
throw new IllegalArgumentException(methodName)
|
||||
}
|
||||
|
||||
return (HelloResponse) webServiceTemplate.marshalSendAndReceive(address.resolve("ws").toString(), request, callback)
|
||||
}
|
||||
|
||||
def "test #methodName"(methodName) {
|
||||
setup:
|
||||
HelloResponse response = makeRequest(methodName, "Test")
|
||||
|
||||
expect:
|
||||
response.getMessage() == "Hello Test"
|
||||
|
||||
and:
|
||||
assertTraces(1) {
|
||||
trace(0, 2) {
|
||||
serverSpan(it, 0, getContextPath() + "/ws/*")
|
||||
handlerSpan(it, 1, methodName, span(0))
|
||||
}
|
||||
}
|
||||
|
||||
where:
|
||||
methodName << ["hello", "helloSoapAction", "helloWsAction"]
|
||||
}
|
||||
|
||||
def "test #methodName exception"(methodName) {
|
||||
when:
|
||||
makeRequest(methodName, "exception")
|
||||
|
||||
then:
|
||||
def error = thrown(SoapFaultClientException)
|
||||
error.getMessage() == "hello exception"
|
||||
|
||||
and:
|
||||
def expectedException = new Exception("hello exception")
|
||||
assertTraces(1) {
|
||||
trace(0, 2) {
|
||||
serverSpan(it, 0, getContextPath() + "/ws/*", expectedException)
|
||||
handlerSpan(it, 1, methodName, span(0), expectedException)
|
||||
}
|
||||
}
|
||||
|
||||
where:
|
||||
methodName << ["hello", "helloSoapAction", "helloWsAction"]
|
||||
}
|
||||
|
||||
static serverSpan(TraceAssert trace, int index, String route, Throwable exception = null) {
|
||||
trace.span(index) {
|
||||
hasNoParent()
|
||||
name "POST " + route
|
||||
kind SpanKind.SERVER
|
||||
if (exception != null) {
|
||||
status ERROR
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static handlerSpan(TraceAssert trace, int index, String methodName, Object parentSpan = null, Throwable exception = null) {
|
||||
trace.span(index) {
|
||||
if (parentSpan == null) {
|
||||
hasNoParent()
|
||||
} else {
|
||||
childOf((SpanData) parentSpan)
|
||||
}
|
||||
name "HelloEndpoint." + methodName
|
||||
kind INTERNAL
|
||||
if (exception) {
|
||||
status ERROR
|
||||
errorEvent(exception.class, exception.message)
|
||||
}
|
||||
attributes {
|
||||
"$CodeIncubatingAttributes.CODE_NAMESPACE" "test.boot.HelloEndpoint"
|
||||
"$CodeIncubatingAttributes.CODE_FUNCTION" methodName
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,46 +0,0 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package test.boot
|
||||
|
||||
import org.springframework.boot.web.servlet.ServletRegistrationBean
|
||||
import org.springframework.context.ApplicationContext
|
||||
import org.springframework.context.annotation.Bean
|
||||
import org.springframework.context.annotation.Configuration
|
||||
import org.springframework.core.io.ClassPathResource
|
||||
import org.springframework.ws.config.annotation.EnableWs
|
||||
import org.springframework.ws.config.annotation.WsConfigurerAdapter
|
||||
import org.springframework.ws.transport.http.MessageDispatcherServlet
|
||||
import org.springframework.ws.wsdl.wsdl11.DefaultWsdl11Definition
|
||||
import org.springframework.xml.xsd.SimpleXsdSchema
|
||||
import org.springframework.xml.xsd.XsdSchema
|
||||
|
||||
@EnableWs
|
||||
@Configuration
|
||||
class WebServiceConfig extends WsConfigurerAdapter {
|
||||
@Bean
|
||||
ServletRegistrationBean<MessageDispatcherServlet> messageDispatcherServlet(ApplicationContext applicationContext) {
|
||||
MessageDispatcherServlet servlet = new MessageDispatcherServlet()
|
||||
servlet.setApplicationContext(applicationContext)
|
||||
servlet.setTransformWsdlLocations(true)
|
||||
return new ServletRegistrationBean<>(servlet, "/ws/*")
|
||||
}
|
||||
|
||||
@Bean(name = "hello")
|
||||
DefaultWsdl11Definition defaultWsdl11Definition(XsdSchema countriesSchema) {
|
||||
DefaultWsdl11Definition wsdl11Definition = new DefaultWsdl11Definition()
|
||||
wsdl11Definition.setPortTypeName("HelloPort")
|
||||
wsdl11Definition.setLocationUri("/ws")
|
||||
wsdl11Definition.setTargetNamespace("http://opentelemetry.io/test/hello-web-service")
|
||||
wsdl11Definition.setSchema(countriesSchema)
|
||||
return wsdl11Definition
|
||||
}
|
||||
|
||||
@Bean
|
||||
XsdSchema helloSchema() {
|
||||
return new SimpleXsdSchema(new ClassPathResource("hello.xsd"))
|
||||
}
|
||||
|
||||
}
|
|
@ -3,12 +3,10 @@
|
|||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package test.boot
|
||||
package io.opentelemetry.javaagent.instrumentation.spring.ws.v2_0;
|
||||
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication
|
||||
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
||||
|
||||
@SpringBootApplication
|
||||
class AppConfig implements WebMvcConfigurer {
|
||||
|
||||
}
|
||||
public class AppConfig implements WebMvcConfigurer {}
|
|
@ -0,0 +1,52 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.javaagent.instrumentation.spring.ws.v2_0;
|
||||
|
||||
import io.opentelemetry.test.hello_web_service.HelloRequest;
|
||||
import io.opentelemetry.test.hello_web_service.HelloRequestSoapAction;
|
||||
import io.opentelemetry.test.hello_web_service.HelloRequestWsAction;
|
||||
import io.opentelemetry.test.hello_web_service.HelloResponse;
|
||||
import org.springframework.ws.server.endpoint.annotation.Endpoint;
|
||||
import org.springframework.ws.server.endpoint.annotation.PayloadRoot;
|
||||
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.server.endpoint.annotation.SoapAction;
|
||||
|
||||
@Endpoint
|
||||
public class HelloEndpoint {
|
||||
|
||||
private static final String NAMESPACE_URI = "http://opentelemetry.io/test/hello-web-service";
|
||||
|
||||
@PayloadRoot(namespace = NAMESPACE_URI, localPart = "helloRequest")
|
||||
@ResponsePayload
|
||||
public HelloResponse hello(@RequestPayload HelloRequest request) throws Exception {
|
||||
return handleHello(request.getName());
|
||||
}
|
||||
|
||||
@SoapAction(value = "http://opentelemetry.io/test/hello-soap-action")
|
||||
@ResponsePayload
|
||||
public HelloResponse helloSoapAction(@RequestPayload HelloRequestSoapAction request)
|
||||
throws Exception {
|
||||
return handleHello(request.getName());
|
||||
}
|
||||
|
||||
@Action(value = "http://opentelemetry.io/test/hello-ws-action")
|
||||
@ResponsePayload
|
||||
public HelloResponse helloWsAction(@RequestPayload HelloRequestWsAction request)
|
||||
throws Exception {
|
||||
return handleHello(request.getName());
|
||||
}
|
||||
|
||||
private static HelloResponse handleHello(String name) throws Exception {
|
||||
if ("exception".equals(name)) {
|
||||
throw new Exception("hello exception");
|
||||
}
|
||||
HelloResponse response = new HelloResponse();
|
||||
response.setMessage("Hello " + name);
|
||||
return response;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,179 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.javaagent.instrumentation.spring.ws.v2_0;
|
||||
|
||||
import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo;
|
||||
import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies;
|
||||
import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_MESSAGE;
|
||||
import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_STACKTRACE;
|
||||
import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_TYPE;
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import io.opentelemetry.api.trace.SpanKind;
|
||||
import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension;
|
||||
import io.opentelemetry.instrumentation.testing.junit.http.AbstractHttpServerUsingTest;
|
||||
import io.opentelemetry.instrumentation.testing.junit.http.HttpServerInstrumentationExtension;
|
||||
import io.opentelemetry.sdk.trace.data.StatusData;
|
||||
import io.opentelemetry.semconv.incubating.CodeIncubatingAttributes;
|
||||
import io.opentelemetry.test.hello_web_service.HelloRequest;
|
||||
import io.opentelemetry.test.hello_web_service.HelloRequestSoapAction;
|
||||
import io.opentelemetry.test.hello_web_service.HelloRequestWsAction;
|
||||
import io.opentelemetry.test.hello_web_service.HelloResponse;
|
||||
import java.net.URISyntaxException;
|
||||
import org.junit.jupiter.api.AfterAll;
|
||||
import org.junit.jupiter.api.BeforeAll;
|
||||
import org.junit.jupiter.api.extension.RegisterExtension;
|
||||
import org.junit.jupiter.params.ParameterizedTest;
|
||||
import org.junit.jupiter.params.provider.ValueSource;
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.context.ConfigurableApplicationContext;
|
||||
import org.springframework.oxm.jaxb.Jaxb2Marshaller;
|
||||
import org.springframework.util.ClassUtils;
|
||||
import org.springframework.ws.client.core.WebServiceMessageCallback;
|
||||
import org.springframework.ws.client.core.WebServiceTemplate;
|
||||
import org.springframework.ws.soap.addressing.client.ActionCallback;
|
||||
import org.springframework.ws.soap.client.SoapFaultClientException;
|
||||
import org.springframework.ws.soap.client.core.SoapActionCallback;
|
||||
|
||||
class SpringWsTest extends AbstractHttpServerUsingTest<ConfigurableApplicationContext> {
|
||||
|
||||
@RegisterExtension
|
||||
private static final InstrumentationExtension testing =
|
||||
HttpServerInstrumentationExtension.forAgent();
|
||||
|
||||
private static final Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
|
||||
|
||||
@BeforeAll
|
||||
void setup() {
|
||||
startServer();
|
||||
}
|
||||
|
||||
@AfterAll
|
||||
void cleanup() {
|
||||
cleanupServer();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ConfigurableApplicationContext setupServer() throws Exception {
|
||||
SpringApplication app = new SpringApplication(AppConfig.class, WebServiceConfig.class);
|
||||
app.setDefaultProperties(
|
||||
ImmutableMap.of(
|
||||
"server.port",
|
||||
port,
|
||||
"server.context-path",
|
||||
getContextPath(),
|
||||
"server.servlet.contextPath",
|
||||
getContextPath(),
|
||||
"server.error.include-message",
|
||||
"always"));
|
||||
marshaller.setPackagesToScan(ClassUtils.getPackageName(HelloRequest.class));
|
||||
marshaller.afterPropertiesSet();
|
||||
return app.run();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void stopServer(ConfigurableApplicationContext configurableApplicationContext)
|
||||
throws Exception {
|
||||
configurableApplicationContext.close();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getContextPath() {
|
||||
return "/xyz";
|
||||
}
|
||||
|
||||
HelloResponse makeRequest(String methodName, String name) throws URISyntaxException {
|
||||
WebServiceTemplate webServiceTemplate = new WebServiceTemplate(marshaller);
|
||||
|
||||
Object request;
|
||||
WebServiceMessageCallback callback = null;
|
||||
if ("hello".equals(methodName)) {
|
||||
HelloRequest req = new HelloRequest();
|
||||
req.setName(name);
|
||||
request = req;
|
||||
} else if ("helloSoapAction".equals(methodName)) {
|
||||
HelloRequestSoapAction req = new HelloRequestSoapAction();
|
||||
req.setName(name);
|
||||
request = req;
|
||||
callback = new SoapActionCallback("http://opentelemetry.io/test/hello-soap-action");
|
||||
} else if ("helloWsAction".equals(methodName)) {
|
||||
HelloRequestWsAction req = new HelloRequestWsAction();
|
||||
req.setName(name);
|
||||
request = req;
|
||||
callback = new ActionCallback("http://opentelemetry.io/test/hello-ws-action");
|
||||
} else {
|
||||
throw new IllegalArgumentException(methodName);
|
||||
}
|
||||
|
||||
return (HelloResponse)
|
||||
webServiceTemplate.marshalSendAndReceive(
|
||||
address.resolve("ws").toString(), request, callback);
|
||||
}
|
||||
|
||||
@ParameterizedTest
|
||||
@ValueSource(strings = {"hello", "helloSoapAction", "helloWsAction"})
|
||||
void testMethodName(String methodName) throws URISyntaxException {
|
||||
HelloResponse response = makeRequest(methodName, "Test");
|
||||
|
||||
assertThat(response.getMessage()).isEqualTo("Hello Test");
|
||||
|
||||
testing.waitAndAssertTraces(
|
||||
trace ->
|
||||
trace.hasSpansSatisfyingExactly(
|
||||
span -> span.hasNoParent().hasName("POST /xyz/ws/*").hasKind(SpanKind.SERVER),
|
||||
span ->
|
||||
span.hasParent(trace.getSpan(0))
|
||||
.hasName("HelloEndpoint." + methodName)
|
||||
.hasKind(SpanKind.INTERNAL)
|
||||
.hasAttributesSatisfyingExactly(
|
||||
equalTo(
|
||||
CodeIncubatingAttributes.CODE_NAMESPACE,
|
||||
"io.opentelemetry.javaagent.instrumentation.spring.ws.v2_0.HelloEndpoint"),
|
||||
equalTo(CodeIncubatingAttributes.CODE_FUNCTION, methodName))));
|
||||
}
|
||||
|
||||
@ParameterizedTest
|
||||
@ValueSource(strings = {"hello", "helloSoapAction", "helloWsAction"})
|
||||
void testMethodNameException(String methodName) {
|
||||
assertThatThrownBy(() -> makeRequest(methodName, "exception"))
|
||||
.isInstanceOf(SoapFaultClientException.class)
|
||||
.hasMessage("hello exception");
|
||||
|
||||
Exception expectedException = new Exception("hello exception");
|
||||
testing.waitAndAssertTraces(
|
||||
trace ->
|
||||
trace.hasSpansSatisfyingExactly(
|
||||
span ->
|
||||
span.hasNoParent()
|
||||
.hasName("POST /xyz/ws/*")
|
||||
.hasKind(SpanKind.SERVER)
|
||||
.hasStatus(StatusData.error()),
|
||||
span ->
|
||||
span.hasParent(trace.getSpan(0))
|
||||
.hasName("HelloEndpoint." + methodName)
|
||||
.hasKind(SpanKind.INTERNAL)
|
||||
.hasStatus(StatusData.error())
|
||||
.hasEventsSatisfyingExactly(
|
||||
event ->
|
||||
event
|
||||
.hasName("exception")
|
||||
.hasAttributesSatisfyingExactly(
|
||||
equalTo(
|
||||
EXCEPTION_TYPE,
|
||||
expectedException.getClass().getCanonicalName()),
|
||||
equalTo(EXCEPTION_MESSAGE, expectedException.getMessage()),
|
||||
satisfies(
|
||||
EXCEPTION_STACKTRACE,
|
||||
val -> val.isInstanceOf(String.class))))
|
||||
.hasAttributesSatisfyingExactly(
|
||||
equalTo(
|
||||
CodeIncubatingAttributes.CODE_NAMESPACE,
|
||||
"io.opentelemetry.javaagent.instrumentation.spring.ws.v2_0.HelloEndpoint"),
|
||||
equalTo(CodeIncubatingAttributes.CODE_FUNCTION, methodName))));
|
||||
}
|
||||
}
|
|
@ -0,0 +1,47 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.javaagent.instrumentation.spring.ws.v2_0;
|
||||
|
||||
import org.springframework.boot.web.servlet.ServletRegistrationBean;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.core.io.ClassPathResource;
|
||||
import org.springframework.ws.config.annotation.EnableWs;
|
||||
import org.springframework.ws.config.annotation.WsConfigurerAdapter;
|
||||
import org.springframework.ws.transport.http.MessageDispatcherServlet;
|
||||
import org.springframework.ws.wsdl.wsdl11.DefaultWsdl11Definition;
|
||||
import org.springframework.xml.xsd.SimpleXsdSchema;
|
||||
import org.springframework.xml.xsd.XsdSchema;
|
||||
|
||||
@EnableWs
|
||||
@Configuration
|
||||
public class WebServiceConfig extends WsConfigurerAdapter {
|
||||
|
||||
@Bean
|
||||
ServletRegistrationBean<MessageDispatcherServlet> messageDispatcherServlet(
|
||||
ApplicationContext applicationContext) {
|
||||
MessageDispatcherServlet servlet = new MessageDispatcherServlet();
|
||||
servlet.setApplicationContext(applicationContext);
|
||||
servlet.setTransformWsdlLocations(true);
|
||||
return new ServletRegistrationBean<>(servlet, "/ws/*");
|
||||
}
|
||||
|
||||
@Bean(name = "hello")
|
||||
DefaultWsdl11Definition defaultWsdl11Definition(XsdSchema helloSchema) {
|
||||
DefaultWsdl11Definition wsdl11Definition = new DefaultWsdl11Definition();
|
||||
wsdl11Definition.setPortTypeName("HelloPort");
|
||||
wsdl11Definition.setLocationUri("/ws");
|
||||
wsdl11Definition.setTargetNamespace("http://opentelemetry.io/test/hello-web-service");
|
||||
wsdl11Definition.setSchema(helloSchema);
|
||||
return wsdl11Definition;
|
||||
}
|
||||
|
||||
@Bean
|
||||
XsdSchema helloSchema() {
|
||||
return new SimpleXsdSchema(new ClassPathResource("hello.xsd"));
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue