java调用webservice示例

Java调用WebService服务的方法主要有以下几种:

1、使用JAX-WS(Java API for XML Web Services)

java调用webservice示例

JAX-WS是Java SE的一部分,它提供了一组API,用于创建和调用Web服务,JAX-WS支持两种类型的Web服务:RPC(远程过程调用)和文档导向的Web服务,RPC风格的Web服务通常用于客户端/服务器应用程序,而文档导向的Web服务则用于发布和发现基于文档的信息。

要使用JAX-WS调用WebService服务,需要遵循以下步骤:

1、1 生成代理类:使用wsimport工具从WSDL文件生成Java代理类。

1、2 创建WebService客户端:使用javax.xml.ws.Service接口创建WebService客户端。

1、3 调用WebService方法:通过代理类的对象调用WebService方法。

java调用webservice示例

示例代码:

import javax.xml.namespace.QName;
import javax.xml.ws.Service;
import java.net.URL;
public class JAXWSClient {
    public static void main(String[] args) throws Exception {
        // 1. 创建URL对象,指向WSDL文件的位置
        URL wsdlURL = new URL("http://localhost:8080/mywebservice?wsdl");
        // 2. 创建QName对象,指定服务的名称和命名空间
        QName serviceName = new QName("http://example.com/", "MyWebService");
        QName portName = new QName("http://example.com/", "MyWebServicePort");
        // 3. 创建Service对象,传入WSDL文件的URL和服务名称、端口名称
        Service service = Service.create(wsdlURL, serviceName);
        // 4. 调用getPort方法,获取服务的端口对象
        MyWebService myWebService = service.getPort(portName, MyWebService.class);
        // 5. 调用WebService方法,传入参数并获取返回值
        String result = myWebService.myMethod("Hello, World!");
        System.out.println("Result: " + result);
    }
}

2、使用Apache CXF(Apache Software Foundation's Contract First Web Services)

Apache CXF是一个开源的实现SOAP协议的Web服务框架,它提供了一套丰富的API,用于创建和调用Web服务,CXF支持多种编程语言,包括Java、Python、Ruby等。

要使用Apache CXF调用WebService服务,需要遵循以下步骤:

2、1 添加CXF依赖:在项目的pom.xml文件中添加Apache CXF的依赖。

java调用webservice示例

2、2 生成客户端代码:使用cxf-codegen-plugin插件从WSDL文件生成客户端代码。

2、3 创建WebService客户端:使用生成的客户端代码创建WebService客户端。

2、4 调用WebService方法:通过客户端对象调用WebService方法。

示例代码:

import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
import org.apache.cxf.wsdl11.WSDLManagerImpl;
import javax.xml.namespace.QName;
import java.util.List;
import java.util.Map;
public class CXFClient {
    public static void main(String[] args) throws Exception {
         // 1. 创建WSDLManager对象,用于处理WSDL文件的加载和解析
        WSDLManagerImpl wsdlManager = new WSDLManagerImpl();
        wsdlManager.setWsdlLocation("http://localhost:8080/mywebservice?wsdl");
        wsdlManager.setServiceClass(MyWebService.class);
        wsdlManager.setEndpointAddress("http://localhost:8080/mywebservice");
        wsdlManager.setFeatures(new String[]{"javax.wsdl.Binding"}); // 如果需要,可以设置其他特性,如安全、事务等
        wsdlManager.initialize();
        // 2. 创建JaxWsProxyFactoryBean对象,用于生成代理类实例
        JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
        factory.setServiceClass(MyWebService.class); // 设置服务接口类型
        factory.setAddress("http://localhost:8080/mywebservice"); // 设置服务的地址和端口号
        factory.setWsdlDocumentationLocation("http://localhost:8080/mywebservice?wsdl"); // 如果需要,可以设置WSDL文档的位置和版本信息
        factory.setDataBindingId("java:compact"); // 如果需要,可以设置数据绑定的类型和版本信息,如javax.xml.datatype等
        factory.setFeatures(new String[]{"javax.xml.ws.soap"}); // 如果需要,可以设置其他特性,如安全、事务等
        factory.setEndpointInterface(MyWebServicePortType.class); // 如果需要,可以设置服务的端口类型和名称,如MyWebServicePortType等
        factory.setBus(new SpringBus()); // 如果使用Spring框架,可以设置Spring上下文的引用,以便进行依赖注入等操作
        factory.afterPropertiesSet(); // 初始化工厂对象后,会触发一系列事件,如加载WSDL文件、生成代理类等操作
        MyWebService myWebService = (MyWebService) factory.create(); // 通过工厂对象生成代理类实例,并转换为服务接口类型或端口类型等对象类型

原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/325123.html

(0)
K-seoK-seoSEO优化员
上一篇 2024年2月19日 21:09
下一篇 2024年2月19日 21:14

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

免备案 高防CDN 无视CC/DDOS攻击 限时秒杀,10元即可体验  (专业解决各类攻击)>>点击进入