java调用WebService服务的四种方法总结

Java调用WebService服务的四种方法总结

Web服务是一种基于网络的应用程序,它使用标准化的XML消息格式进行通信。Java可以使用多种方式调用Web服务,包括以下四种:

1. 使用JAX-WS API

Java API for XML Web Services(JAX-WS)是Java EE 5规范一部分,它提供了一种标准的方式来创建和调用Web服务。可以使用以下步骤调用Web服务:

  1. 使用wsimport工具生成客户端代码:
wsimport -keep http://localhost:8080/HelloWorld?wsdl
  1. 创建服务端点接口:
@WebService
public interface HelloWorld {
    @WebMethod
    String sayHello(String name);
}
  1. 创建服务端点实现:
@WebService(endpointInterface = "com.example.HelloWorld")
public class HelloWorldImpl implements HelloWorld {
    public String sayHello(String name) {
        return "Hello, " + name + "!";
    }
}
  1. 发布服务:
Endpoint.publish("http://localhost:8080/HelloWorld", new HelloWorldImpl());
  1. 创建客户端代码:
HelloWorld service = new HelloWorldService().getHelloWorldPort();
String result = service.sayHello("World");

在此示例中,我们使用JAX-WS API调用了一个名为HelloWorld的Web服务。

2. 使用Apache CXF

Apache CXF是一个开源的Web服务框架,它提供了一种简单的方式来创建和调用Web服务。可以使用以下步骤调用Web服务:

  1. 使用wsdl2java工具生成客户端:
wsdl2java -d src -p com.example http://localhost:8080/HelloWorld?wsdl
  1. 创建客户端代码:
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setServiceClass(HelloWorld);
factory.setAddress("http://localhost:8080/HelloWorld");
HelloWorld service = (HelloWorld) factory.create();
String result = service.sayHello("World");

在此示例中,我们使用Apache CXF调用了一个名为HelloWorld的Web服务。

3. 使用Spring Web Services

Spring Web Services是一个基于Spring框架的Web框架,它提供了一种简单的方式来创建和调用Web服务。可以使用以下步骤调用Web服务:

  1. 创建服务端点接口:
@Endpoint
public class HelloWorldEndpoint {
    @PayloadRoot(namespace = "http://example.com", localPart = "sayHelloRequest")
    @ResponsePayload
    public SayHelloResponse sayHello(@RequestPayload SayHelloRequest request) {
        SayHelloResponse response = new SayHelloResponse();
        response.setMessage("Hello, " + request.getName() + "!");
        return response;
    }
}
  1. 创建客户端代码:
WebServiceTemplate template = new WebServiceTemplate();
Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
marshaller.setContextPath("com.example");
template.setMarshaller(marshaller);
template.setUnmarshaller(marshaller);
SayHelloRequest request = new SayHelloRequest();
request.setName("World");
SayHelloResponse response = (SayHelloResponse) template.marshalSendAndReceive("http://localhost:8080/HelloWorld", request);
String result = response.getMessage();

在此示例中,我们使用Spring Web Services调用了一个名为HelloWorld的Web服务。

4. 使用Axis2

Axis2是一个开源的Web服务框架,它提供了一种简单的方式来创建和调用Web服务。可以使用以下步调用Web服务:

  1. 使用wsdl2java工具生成客户端:
wsdl2java -d src -p com.example http://localhost:8080/HelloWorld?wsdl
  1. 创建客户端代码:
ServiceClient client = new ServiceClient();
Options options = new Options();
options.setTo(new EndpointReference("http://localhost:8080/HelloWorld"));
client.setOptions(options);
OMFactory factory = OMAbstractFactory.getOMFactory();
OMNamespace namespace = factory.createOMNamespace("http://example.com", "ns");
OMElement sayHello = factory.createOMElement("sayHello", namespace);
OMElement name = factory.createOMElement("name", namespace);
name.setText("World");
sayHello.addChild(name);
OMElement response = client.sendReceive(sayHello);
String result = response.getFirstChildWithName(new QName("http://example.com", "message")).getText();

在此示例中,我们使用Axis2调用了名为HelloWorld的Web服务。

示例1:使用JAX-WS API

以下是使用JAX-WS API调用Web服务的示例:

HelloWorld service = new HelloWorldService().getHelloWorldPort();
String result = service.sayHello("World");

在此示例中,我们使用JAX-WS API调用了一个名为HelloWorld的Web服务。

示例2:使用Spring Web Services

以下是使用Spring Web Services调用Web服务的示例:

WebServiceTemplate template = new WebServiceTemplate();
Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
marshaller.setContextPath("com.example");
template.setMarshaller(marshaller);
template.setUnmarshaller(marshaller);
SayHelloRequest request = new SayHelloRequest();
request.setName("World");
SayHelloResponse response = (SayHelloResponse) template.marshalSendAndReceive("http://localhost:8080/HelloWorld", request);
String result = response.getMessage();

在此示例中,我们使用Spring Web Services调用了一个名为HelloWorld的Web服务。

总之,Java可以使用多种方式调用Web服务,包括JAX-WS APIApache CXF、Spring Web Services和Axis2。无论使用哪种方法,都需要生成客户端代码并创建客户端对象。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java调用WebService服务的四种方法总结 - Python技术站

(0)
上一篇 2023年5月13日
下一篇 2023年5月13日

相关文章

  • Web安全解析报错注入攻击原理

    以下是关于“Web安全解析报错注入攻击原理”的完整攻略: 问题描述 Web应用程序中的解析报错注入攻击是一常见的安全漏洞,攻击者可以利用这种漏洞来恶意代码或获取敏感信息。本文详细介绍解析报错注入攻击的原理和防范措施。 解决步骤 以下是解决解析报错注入攻击的步骤: 步骤一:了解问题 首先,需要了解解析报错注入攻击的原理。解析报错注入攻击是一种利用Web应用程序…

    http 2023年5月13日
    00
  • vue-cli创建项目时由esLint校验导致报错或警告的问题及解决

    以下是关于“vue-cli创建项目时由esLint校验导致报错或警告的问题及解决”的完整攻略: 简介 Vue CLI是一款流行的Vue.js脚手架工具,可以用于快速创建Vue.js项目。在使用Vue CLI创建项目时,由esLint校验导致报错或警告的问题比较常见。本文将介绍如何解决Vue CLI创建项目时由esLint校验导致报错或警告的问题。 问题描述 …

    http 2023年5月13日
    00
  • 详解SpringMVC常用注解功能及属性

    下面是详解SpringMVC常用注解功能及属性的攻略。 一、@RequestMapping注解 1.1 作用 @RequestMapping注解用于映射请求路径和处理方法之间的关系。使用@RequestMapping注解, 可以定义URL的请求方式(GET/POST)、请求参数和响应结果等。 1.2 属性 value: 请求的URL路径或URL模式,支持An…

    http 2023年5月13日
    00
  • fastjson到底做错了什么?为什么会被频繁爆出漏洞?(推荐)

    Fastjson 是一个非常流行的 Java 序列化/反序列化工具,但是最近几年一直被频繁曝出漏洞,造成了很大的安全隐患。那么 Fastjson 到底做错了什么?为什么会被频繁爆出漏洞? 背景介绍 Fastjson 是由阿里巴巴集团的工程师封装的一个 Java 序列化/反序列化工具。由于其出色的性能和易用性,已经被广泛应用于各种 Java 项目中。但是因为其…

    http 2023年5月13日
    00
  • angular报错can’t resolve all parameters for []的解决

    当我们在使用 Angular 框架开发应用程序时,在进行依赖注入时,有可能会遇到以下类似的错误信息:Can’t resolve all parameters for […]。这类错误信息通常意味着我们在某个组件或服务的构造函数参数上缺少了某个依赖。 以下是解决此类问题的完整攻略: 1. 查看错误信息并确定哪个组件或服务报错 首先,我们需要仔细查看错误信息…

    http 2023年5月13日
    00
  • MySQL 5.7.16 修改密码提示 ERROR 1054 (42S22): Unknown column ”password” in ”field list”的原因

    在 MySQL 5.7.16 版本中,升级后默认情况下不再直接使用用户表记录用户信息,而是使用了一个名为 mysql.user 的视图来访问用户表。因此,当我们在该版本下修改密码时,需要使用 UPDATE mysql.user SET authentication_string=PASSWORD(‘新密码’) WHERE user=’用户名’; 命令,而不是…

    http 2023年5月13日
    00
  • 解决NDK开发中Eclipse报错Unresolved inclusion jni.h的最终解决方法(已测)

    解决NDK开发中Eclipse报错Unresolved inclusion jni.h的最终解决方法 在进行NDK开发时,经常会出现Eclipse报错提示Unresolved inclusion: <jni.h>,这是由于Eclipse无法找到jni.h头文件的位置所致。下面介绍一种最终解决该问题的方法。 步骤一:添加NDK路径到环境变量中 在W…

    http 2023年5月13日
    00
  • 解决应用启动失败但tomcat不报错的方法

    解决应用启动失败但Tomcat不报错的方法 在使用Tomcat时,有时候应用启动失败但Tomcat不报错,这可能是由于应用程序中的错误导致的。本文将提供详细的解决方案,包括查看Tomcat日志、查看应用程序日志、查应用程序配置等。同时,本文还提供两个示例说明,帮助读者更好地理解解决应用启动失败但Tomcat不报错的方法。 解决方案 解决应用启动失败但Tomc…

    http 2023年5月13日
    00
合作推广
合作推广
分享本页
返回顶部