创建webservice服务端和客户端

cxf实现webservice服务端和客户端调用

超详细过程,,,,适合新手,,,,哈哈哈,,,因为我也是新手,,记录一下自己的学习过程,,,

idea+cxf+maven jax-ws规范下

首先新建一个空项目,
在这里插入图片描述
Next—起名—finish

在这里插入图片描述
创建服务端:

点击+号-----Maven------勾选----选择quickstart-----next

在这里插入图片描述

起名-----next
在这里插入图片描述
选择自己本地的maven库,勾选setting file ,选择自己的setting
在这里插入图片描述
Next—默认(一般不需要有任何操作)-----finish

在这里插入图片描述
会弹出配置jdk那个界面,找到自己的jdk位置,然后点击ok就行

然后可能会有点慢,耐心等待一会,,,(点击右下角选择自动导入)
在这里插入图片描述
新建项目完成,他有自动生成的App类,用不到,可以删除,测试类也删除;

在这里插入图片描述
打开pom.xml,删掉多余的,如下:
从<!-- FIXME change it to the project’s website –


/build>均可删除,

编写配置文件:

在这里插入图片描述
主要代码:

   <dependencies>
      <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-frontend-jaxws</artifactId>
        <version>3.0.0</version>
      </dependency>
      <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-transports-http</artifactId>
        <version>3.0.0</version>
      </dependency>
      <!--内置jettyweb服务器-->
      <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-transports-http-jetty</artifactId>
        <version>3.0.1</version>
      </dependency>
    </dependencies>

新建一个接口(在包下选择新建类,Kind下拉选择Interface)-----ok

在这里插入图片描述

在这里插入图片描述
HelloService代码:

package com.demo.service;
import javax.jws.WebService;
/*
* 对外发布服务的接口
* */
@WebService
public interface HelloService {
    /*
    * 对外发布服务的接口的方法
    * */
    public String sayHello(String name);
}

在main—java下新建一个类(带包名)

在这里插入图片描述
在这里插入图片描述

HelloServiceImpl代码:

package com.demo.service.impl;
import com.demo.service.HelloService;
public class HelloServiceImpl implements HelloService {
    @Override
    public String sayHello(String name){
        return name  + ",Welcome!";
    }
}

在测试下新建Server类:
在这里插入图片描述
测试类:
在这里插入图片描述
端口号自定义,用一个没有被占用的端口:

Server代码:

package com.demo;
import com.demo.service.impl.HelloServiceImpl;
import org.apache.cxf.jaxws.JaxWsServerFactoryBean;
public class Server {
    public static void main(String[] args){
        //发布服务的工厂
        JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean();
        //设置服务地址
        factory.setAddress("http://localhost:8000/ws/hello");
        //设置服务类
        factory.setServiceBean(new HelloServiceImpl());
        //发布服务
        factory.create();
        System.out.println("发布服务成功,端口8000.......");
    }
}

运行测试类:

在这里插入图片描述

打开浏览器,输入测试类中的网址 http://localhost:8000/ws/hello
在这里插入图片描述
查看wsdl:
在网址后面加?wsdl 即为: http://localhost:8000/ws/hello?wsdl

在这里插入图片描述

至此,服务端创建完成!

创建客户端:

新建之前,鼠标不要放在server项目上,,如下图,可以点击一下其他位置

在这里插入图片描述
新建Module,
在这里插入图片描述
跟服务端一样----next
在这里插入图片描述
起名—next
在这里插入图片描述
跟之前一样,配置maven,应该都是默认----next----finish

在这里插入图片描述
在这里插入图片描述

依旧可能会有点慢,耐心等待
项目之间位置关系
在这里插入图片描述

配置文件跟服务端相同

在这里插入图片描述

将服务端Hello Service接口复制过来
在这里插入图片描述

在测试新建Client类
在这里插入图片描述

Client代码:

package com.demo;

import com.demo.service.HelloService;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;

public class Client {
    public static void main(String[] args) {
        //服务接口访问地址  http://localhost:8000/ws/hello
        //创建cxf代理工厂
        JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
        //设置远程访问服务端地址
        factory.setAddress("http://localhost:8000/ws/hello");
        //设置接口类型
        factory.setServiceClass(HelloService.class);
        //对接口生成代理对象
        HelloService helloService = factory.create(HelloService.class);
        //代理对象类型
        System.out.println(helloService.getClass());
        //远程访问服务端方法
        String content = helloService.sayHello("Jet");
        System.out.println(content);

    }
}

运行(保证服务端在运行状态):
在这里插入图片描述

说明:
class com.sun.proxy.$Proxy34
指的是jdk接口代理

至此,客户端创建完成!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

臾凉-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值