Spring Boot Soap Web-Service(Java) - 代码优先?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Boot Soap Web-Service(Java) - 代码优先?相关的知识,希望对你有一定的参考价值。

我想使用以下Soap Web服务在Java中创建Spring Boot应用程序:

@WebService
public class HelloWorld
{
    @WebMethod
    public String sayHello(String name)
    {
        return "Hello world, " + name;
    }
}

我想获得WSDL ...我想我必须创建端点或映射服务?我怎样才能做到这一点?

没有spring-boot它可以工作,因为WEB-INF文件夹中的文件带有代码:

<endpoints xmlns='http://java.sun.com/xml/ns/jax-ws/ri/runtime' version='2.0'>
    <endpoint name='HelloWorld' implementation='web.service.soap.HelloWorld' url-pattern='/HelloWorld'/>
</endpoints>

<servlet>
        <servlet-name>jaxws-servlet</servlet-name>
        <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>jaxws-servlet</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>
答案

将spring-boot-starter-ws和org.apache.cxf cxf-bundle依赖项添加到项目中。

并创建一个配置文件以公开您的Web服务。这样的配置示例:

@Configuration
@EnableWs
public class WebServicesConfig {
    @Autowired
    private HelloWorld helloWorld; // your web service component

    @Bean
    public ServletRegistrationBean wsDispatcherServlet() {
        CXFServlet cxfServlet = new CXFServlet();
        return new ServletRegistrationBean(cxfServlet, "/services/*");
    }

    @Bean(name="cxf")
    public SpringBus springBus() {
        return new SpringBus();
    }

    @Bean
    public Endpoint helloWorldEndpoint() {
        EndpointImpl endpoint = new EndpointImpl(springBus(), helloWorld);
        endpoint.publish("helloWorld");
        return endpoint;
    }
}

要访问你的wsdl:http://localhost:8080/services/helloWorld?wsdl(路径可能不同)

以上是关于Spring Boot Soap Web-Service(Java) - 代码优先?的主要内容,如果未能解决你的问题,请参考以下文章

带有 MVC 的 Spring Boot SOAP Web 服务

使用 spring-boot 和 Weblogic 公开 SOAP Webservice

使用 spring boot 配置 SOAP 服务时出错

Spring Boot Soap Web-Service(Java) - 代码优先?

Spring Boot Soap Web 服务(Java)——代码优先?

使用soap web服务在spring boot中加载多个bean