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

标签 java spring web-services soap spring-boot

我想使用以下 Soap Web 服务在 Java 中创建一个 SpringBoot 应用程序:

@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 依赖项添加到您的项目中。

并创建一个配置文件来公开您的网络服务。此类配置示例:

@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 (路径可能不同)

关于java - Spring Boot Soap Web 服务(Java)-代码优先?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39394288/

相关文章:

java - Selenium 多浏览器测试。只有最后一个浏览器会收到 cookie。测试NG

spring - 使用 thymeleaf 将表单数据发布到使用 @ModelAttribute (复杂对象)的 Controller

java - Spring FeignClient - 将 RESTful xml 响应视为 JSON

java - 使用 jdk 1.7 构建,无法使用 jboss 4.2.3.GA(运行环境 java 1.7)调用 Web 服务。错误 : Cannot build JAXB context

java - HttpURLConnection 未返回所有 header

java - 将最大堆排序更改为最小堆排序

java - 如何使用 Spring Integration 调用安全的 SOAP 服务

android - 无法在 Android 中调用 REST API

java - 以下 AES-128 算法的准确名称是什么?

java - Spring MVC : No mapping found for HTTP request with URI [/hello. jsp]