当前位置:首页 > 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中,导入包(package)可以通过import语句实现,用于引入其他类或包中的功能。以下是几种常见的导包方式: 导入单个类 import java.util.ArrayL…

java如何编写接口

java如何编写接口

编写Java接口的基本语法 在Java中,接口通过interface关键字定义,可以包含抽象方法、默认方法、静态方法和常量。 public interface MyInterface {…

如何选择java培训

如何选择java培训

评估培训机构资质 选择有正规资质的机构,查看其营业执照、办学许可证等。优先考虑具备人力资源和社会保障部或教育部认证的机构,这类机构的教学质量和课程设置通常更规范。 考察课程内容与行业需求匹配度…

如何导入java项目

如何导入java项目

导入Java项目的方法 使用IDE导入(如IntelliJ IDEA或Eclipse) 打开IDE后选择导入现有项目,导航至项目根目录(包含pom.xml或build.gradle的文件位置)。IDE…

java如何返回数组

java如何返回数组

返回数组的方法 在Java中,可以通过多种方式返回数组。以下是几种常见的方法: 直接返回数组 定义一个方法,返回类型为数组类型,直接在方法内部创建并返回数组。 public int[] getI…

win7如何配置java环境变量

win7如何配置java环境变量

下载并安装Java 从Oracle官网下载适合的Java Development Kit (JDK)安装包,选择与系统位数(32位或64位)匹配的版本。运行安装程序,按照提示完成安装,默认路径通常为C…