当前位置:首页 > Java

java webservice如何发布

2026-03-03 13:32:12Java

使用JAX-WS发布WebService

在Java中,JAX-WS是创建和发布WebService的标准API。以下是通过JAX-WS发布WebService的步骤:

创建一个Java类并添加@WebService注解

import javax.jws.WebService;

@WebService
public class HelloService {
    public String sayHello(String name) {
        return "Hello, " + name + "!";
    }
}

使用Endpoint类发布服务

import javax.xml.ws.Endpoint;

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

使用Spring Boot发布WebService

Spring Boot简化了WebService的发布过程:

添加依赖到pom.xml

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web-services</artifactId>
</dependency>

创建服务端点

import org.springframework.ws.server.endpoint.annotation.Endpoint;
import org.springframework.ws.server.endpoint.annotation.PayloadRoot;
import org.springframework.ws.server.endpoint.annotation.RequestPayload;
import org.springframework.ws.server.endpoint.annotation.ResponsePayload;

@Endpoint
public class GreetingEndpoint {
    private static final String NAMESPACE_URI = "http://example.com/greeting";

    @PayloadRoot(namespace = NAMESPACE_URI, localPart = "greetingRequest")
    @ResponsePayload
    public GreetingResponse greeting(@RequestPayload GreetingRequest request) {
        GreetingResponse response = new GreetingResponse();
        response.setGreeting("Hello, " + request.getName() + "!");
        return response;
    }
}

配置WebService

import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.ws.config.annotation.EnableWs;
import org.springframework.ws.transport.http.MessageDispatcherServlet;

@EnableWs
@Configuration
public class WebServiceConfig {
    @Bean
    public ServletRegistrationBean<MessageDispatcherServlet> messageDispatcherServlet(ApplicationContext context) {
        MessageDispatcherServlet servlet = new MessageDispatcherServlet();
        servlet.setApplicationContext(context);
        servlet.setTransformWsdlLocations(true);
        return new ServletRegistrationBean<>(servlet, "/ws/*");
    }
}

使用CXF框架发布WebService

Apache CXF是一个功能丰富的WebService框架:

添加CXF依赖

<dependency>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-rt-frontend-jaxws</artifactId>
    <version>3.4.0</version>
</dependency>
<dependency>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-rt-transports-http</artifactId>
    <version>3.4.0</version>
</dependency>

配置和发布服务

import org.apache.cxf.jaxws.JaxWsServerFactoryBean;

public class CxfPublisher {
    public static void main(String[] args) {
        JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean();
        factory.setServiceClass(HelloService.class);
        factory.setAddress("http://localhost:8080/hello");
        factory.create();
        System.out.println("CXF WebService published");
    }
}

生成WSDL文件

对于需要WSDL的场景,可以使用以下方法:

使用wsgen工具生成WSDL

wsgen -cp . -wsdl -r . -d . -s . com.example.HelloService

在Spring WS中自动生成WSDL

@Bean(name = "greeting")
public DefaultWsdl11Definition defaultWsdl11Definition(XsdSchema greetingSchema) {
    DefaultWsdl11Definition wsdl11Definition = new DefaultWsdl11Definition();
    wsdl11Definition.setPortTypeName("GreetingPort");
    wsdl11Definition.setLocationUri("/ws");
    wsdl11Definition.setTargetNamespace("http://example.com/greeting");
    wsdl11Definition.setSchema(greetingSchema);
    return wsdl11Definition;
}

@Bean
public XsdSchema greetingSchema() {
    return new SimpleXsdSchema(new ClassPathResource("greeting.xsd"));
}

测试WebService

使用SOAPUI或Postman测试发布的WebService

通过浏览器访问WSDL

http://localhost:8080/ws/greeting.wsdl

使用Java客户端测试

java webservice如何发布

import javax.xml.namespace.QName;
import javax.xml.ws.Service;
import java.net.URL;

public class WebServiceClient {
    public static void main(String[] args) throws Exception {
        URL wsdlUrl = new URL("http://localhost:8080/hello?wsdl");
        QName serviceName = new QName("http://example.com/", "HelloService");
        Service service = Service.create(wsdlUrl, serviceName);
        HelloService hello = service.getPort(HelloService.class);
        System.out.println(hello.sayHello("World"));
    }
}

标签: javawebservice
分享给朋友:

相关文章

如何配置java环境

如何配置java环境

下载JDK安装包 访问Oracle官网或OpenJDK官网,选择适合操作系统的JDK版本(如Windows、macOS或Linux)。下载完成后,运行安装程序并按照提示完成安装。 设置环境变量 右键…

java如何上传文件

java如何上传文件

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

如何编译java文件

如何编译java文件

安装JDK 确保系统已安装Java Development Kit(JDK)。可通过命令行输入 javac -version 和 java -version 验证。若未安装,需从Oracle或Open…

如何安装java环境

如何安装java环境

下载JDK安装包 访问Oracle官方网站或OpenJDK项目页面,选择适合操作系统的JDK版本(如Windows、macOS或Linux)。确保下载与系统架构匹配的版本(32位或64位)。 运行安…

如何编写java

如何编写java

编写Java程序的基本步骤 安装Java开发工具包(JDK),确保系统环境变量配置正确。可以从Oracle官网下载最新版本的JDK并进行安装。 选择一个合适的集成开发环境(IDE),如Eclipse…

java如何导入jar包

java如何导入jar包

在Eclipse中导入JAR包 右键项目 -> 选择"Properties" -> 左侧导航选择"Java Build Path" -> 切换到"Libraries"标签 ->…