WebService之CXF

WebService严格的说,是一种跨平台,跨语言的规范,用于不同平台,不同语言开发的应用之间的交互。

例如:windows Server服务器上有个C#开发的应用A,在Linux上有一个java开发的应用B,而B要调用A应用,或者时互相调用,用于查看对方的业务数据。

 

开发人员只是在具体的开发Webservice接口,以及调用WebService接口,例如java就有ApacheCXF等等。

 

测试HelloWorld(使用JDK自带的)

创建Maven工程,jar包,名称WS_Server

创建HelloWorld.java接口

import javax.jws.WebService;

 

@WebService

public interface HelloWorld {

 

    public String say(String str);

}

 

 

创建HelloWorldImpl.java实现类

import javax.jws.WebService;

 

import com.kingsoft.webservice.HelloWorld;

 

@WebService

public class HelloWorldImpl implements HelloWorld{

 

    @Override

    public String say(String str) {

        return "hello"+str;

    }

   

}

 

创建服务器Server.java(在DOS环境下ipconfig查出本机的ip地址)

package com.kingsoft.webservice.impl;

 

import javax.xml.ws.Endpoint;

import com.kingsoft.webservice.HelloWorld;

 

public class Server {

 

    public static void main(String[] args) {

        System.out.println("web service start");

        HelloWorld implementor = new HelloWorldImpl();

        String address= "http://192.168.0.101/helloWorld";

        Endpoint.publish(address, implementor); //JDK实现,暴露webservice接口

        System.out.println("web service started");

    }

}

 

启动后在浏览器地址栏输入http://192.168.0.101/helloWorld?wsdl

 

 

接下来我们使用CXF提供的Service

修改pom.xml

<dependencies>

    <dependency>

        <groupId>org.apache.cxf</groupId>

        <artifactId>cxf-rt-frontend-jaxws</artifactId>

        <version>3.3.3</version>

    </dependency>

    <dependency>

        <groupId>org.apache.cxf</groupId>

        <artifactId>cxf-core</artifactId>

        <version>3.3.3</version>

    </dependency>

    <!-- 服务器jetty -->

    <dependency>

        <groupId>org.apache.cxf</groupId>

        <artifactId>cxf-rt-transports-http-jetty</artifactId>

        <version>3.3.3</version>

    </dependency>

</dependencies>

 

修改Server.java服务器

package com.kingsoft.webservice.impl;

 

import org.apache.cxf.jaxws.JaxWsServerFactoryBean;

import com.kingsoft.webservice.HelloWorld;

 

public class Server {

 

    public static void main(String[] args) {

        System.out.println("web service start");

        HelloWorld implementor = new HelloWorldImpl();

        String address= "http://192.168.0.101/helloWorld";

        JaxWsServerFactoryBean factoryBean = new JaxWsServerFactoryBean();

        factoryBean.setAddress(address); //设置暴露的地址

        factoryBean.setServiceClass(HelloWorld.class); //接口类

        factoryBean.setServiceBean(implementor);  //实现类

        factoryBean.create(); //创建webservice接口

        System.out.println("web service started");

    }

}

启动后在浏览器地址栏输入http://192.168.0.101/helloWorld?wsdl

 

 

WebService客户端

下载服务器端地址的转换工具http://cxf.apache.org/download.html

将zip包解压到C盘下,配置path环境变量指向bin文件夹下

C:\service\apache-cxf-3.3.3\bin;

 

创建maven工程,jar包,名称WS_Client

在文件夹上单击右键,选择Properties

复制这段路径,等待粘贴

 

进入DOS状态后定位到复制路径的位置

D:\workspace3.9.4\WS_Client\src\main\java>wadl2java http://192.168.0.101/helloWorld?wsdl

这步操作时必须要保证服务端是启动的状态

 

解析后就会在src/main/java下生成对应的包和类,在工程上右键,刷新即可出现

 

在com.kingsoft.webservice中创建Client.java客户端

public class Client {

 

    public static void main(String[] args) {

        HelloWorldService service = new HelloWorldService();

        HelloWorld helloWorld = service.getHelloWorldPort();

        System.out.println(helloWorld.say("疯语者"));

    }

}

测试结果

调用了服务器端的方法

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值