当前位置:首页 > 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

    java如何发布webservice

    @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)。

    java如何发布webservice

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

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

注意事项

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

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

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

标签: javawebservice
分享给朋友:

相关文章

如何使用java

如何使用java

安装Java开发环境 下载并安装Java Development Kit(JDK),推荐从Oracle官网或OpenJDK获取最新版本。安装完成后配置环境变量,确保JAVA_HOME指向JDK安装路径…

java如何上传文件

java如何上传文件

使用HttpURLConnection上传文件 在Java中,可以通过HttpURLConnection实现文件上传功能。需要设置请求头为multipart/form-data,并构建包含文件数据的请…

java如何生成随机数

java如何生成随机数

生成随机数的方法 在Java中生成随机数可以通过多种方式实现,以下是几种常见的方法: 使用Math.random()方法 Math.random()方法返回一个double类型的伪随机数,范围在[0…

java如何获取当前时间

java如何获取当前时间

获取当前时间的方法 在Java中,可以通过多种方式获取当前时间。以下是几种常见的方法: 使用 java.util.Date Date currentDate = new Date(); Syste…

php 实现 java md5

php 实现 java md5

在 PHP 中实现与 Java 相同的 MD5 哈希算法,关键在于确保编码和输出格式的一致性。以下是具体实现方法和注意事项: 确保字符串编码一致 Java 的 String.getBytes() 默…

如何查看java版本

如何查看java版本

查看Java版本的命令行方法 在终端或命令提示符中运行以下命令,可以快速查看已安装的Java版本: java -version 输出示例: java version "17.0.1" 20…