当前位置:首页 > Java

java如何发布webservice

2026-02-05 01:50:35Java

使用JAX-WS发布WebService

JAX-WS是Java EE的标准API,用于创建和发布SOAP-based Web服务。以下步骤展示如何通过JAX-WS发布WebService:

  1. 定义服务接口
    使用@WebService注解标记接口或类:

    @WebService
    public interface HelloWorld {
        String sayHello(String name);
    }
  2. 实现服务类
    实现接口并添加@WebService注解:

    @WebService(endpointInterface = "com.example.HelloWorld")
    public class HelloWorldImpl implements HelloWorld {
        public String sayHello(String name) {
            return "Hello, " + name;
        }
    }
  3. 发布服务
    使用Endpoint类发布服务:

    public class Publisher {
        public static void main(String[] args) {
            String url = "http://localhost:8080/hello";
            Endpoint.publish(url, new HelloWorldImpl());
            System.out.println("Service published at: " + url);
        }
    }

使用Spring Boot发布WebService

Spring Boot整合CXF或Spring Web Services简化发布流程:

  1. 添加依赖
    pom.xml中添加Spring Web Services依赖:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web-services</artifactId>
    </dependency>
  2. 定义服务端点
    创建服务类并使用@Endpoint注解:

    @Endpoint
    public class HelloWorldEndpoint {
        private static final String NAMESPACE = "http://example.com/ws";
    
        @PayloadRoot(namespace = NAMESPACE, localPart = "sayHelloRequest")
        @ResponsePayload
        public String sayHello(@RequestPayload String name) {
            return "Hello, " + name;
        }
    }
  3. 配置WSDL生成
    创建配置类定义Wsdl11Definition

    @Configuration
    @EnableWs
    public class WebServiceConfig extends WsConfigurerAdapter {
        @Bean
        public ServletRegistrationBean<MessageDispatcherServlet> messageDispatcherServlet(ApplicationContext context) {
            MessageDispatcherServlet servlet = new MessageDispatcherServlet();
            servlet.setApplicationContext(context);
            servlet.setTransformWsdlLocations(true);
            return new ServletRegistrationBean<>(servlet, "/ws/*");
        }
    
        @Bean(name = "helloWorld")
        public Wsdl11Definition defaultWsdl11Definition() {
            SimpleWsdl11Definition wsdl11Definition = new SimpleWsdl11Definition();
            wsdl11Definition.setWsdl(new ClassPathResource("wsdl/helloWorld.wsdl"));
            return wsdl11Definition;
        }
    }

使用Apache CXF发布WebService

CXF是流行的开源框架,支持JAX-WS和JAX-RS:

  1. 添加CXF依赖
    pom.xml中配置:

    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-frontend-jaxws</artifactId>
        <version>3.4.0</version>
    </dependency>
  2. 配置CXF Servlet
    web.xml中注册CXF Servlet:

    <servlet>
        <servlet-name>CXFServlet</servlet-name>
        <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>CXFServlet</servlet-name>
        <url-pattern>/services/*</url-pattern>
    </servlet-mapping>
  3. 发布服务
    通过Spring配置发布服务:

    @Configuration
    public class CxfConfig {
        @Bean
        public Server jaxWsServer(HelloWorld helloWorld) {
            JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean();
            factory.setServiceClass(HelloWorld.class);
            factory.setAddress("/helloWorld");
            factory.setServiceBean(helloWorld);
            return factory.create();
        }
    }

验证WebService

  1. 访问WSDL
    服务发布后,通过URL查看WSDL文件(如http://localhost:8080/ws/helloWorld?wsdl)。

  2. 使用SOAPUI测试
    导入WSDL到SOAPUI工具,生成请求模板并发送测试请求。

  3. 日志检查
    确保服务端日志无错误,并正确接收和响应请求。

注意事项

  • 注解配置
    JAX-WS的@WebService注解必须完整定义endpointInterface(如使用接口)。

  • 端口冲突
    确保发布服务的端口未被占用(如8080、8443)。

  • 依赖冲突
    Spring Boot与CXF版本需兼容,避免依赖冲突导致启动失败。

java如何发布webservice

标签: javawebservice
分享给朋友:

相关文章

java如何使用

java如何使用

Java 基本使用方法 Java 是一种广泛使用的编程语言,适用于开发各种类型的应用程序。以下是 Java 的基本使用方法,包括环境配置、语法基础和常用操作。 安装 Java 开发环境 下载并安装…

java程序如何运行

java程序如何运行

编写Java代码 使用文本编辑器或IDE(如IntelliJ IDEA、Eclipse)编写Java源代码,保存为.java文件。例如: public class HelloWorld {…

如何运行java程序

如何运行java程序

编写Java代码 创建一个以.java为扩展名的文件,例如HelloWorld.java。文件内容需包含一个类定义,类名必须与文件名一致。例如: public class HelloWorld {…

如何学习java

如何学习java

学习Java的步骤 理解基础知识 从Java的基本语法开始,包括变量、数据类型、运算符、控制流(if-else、循环)等。掌握这些基础概念是后续学习的基石。 学习面向对象编程(OOP) Java是一…

java如何学习

java如何学习

学习Java的有效方法 理解基础概念 Java是一门面向对象的编程语言,掌握基础概念如变量、数据类型、运算符、控制语句(if-else、循环)是必要的。面向对象的核心概念包括类、对象、继承、多态和封装…

java如何react

java如何react

在Java中使用React 要在Java项目中集成React,通常需要将React前端与Java后端结合使用。以下是几种常见的方法: 使用Spring Boot作为后端 Spring Boot是一…