这是第三章,前两章有关于利用JDK发布和引用服务
文章目录
一、利用CXF发布服务
1.1新建工程
新建Java Project,工程名:webservice_server_cxf
1.2导入jar包
我用的版本是:apache-cxf-3.2.11.zip
可在官方进行下载,此处也给出百度云盘地址
官方地址:http://cxf.apache.org/download.html
百度云盘地址:https://pan.baidu.com/s/1ngJYeBf4ojeU6-f_dCMueA
提取码:7wzp
解压好后把apache-cxf-3.2.11/lib文件夹中所有的jar包复制在webservice_server_cxf工程下的lib文件夹(先在工程中新建lib目录)
1.3编写接口和实现类
创建IWeatherService接口和WeatherServiceImpl实现类,并且在接口和类上添加@WebService注解
IWeatherService
WeatherServiceImpl
IWeatherService接口:
package com.qf.webservice;
import javax.jws.WebService;
@WebService
public interface IWeatherService {
String query(String name);
}
WeatherServiceImpl实现类:
package com.qf.webservice;
import javax.jws.WebService;
@WebService
public class WeatherServiceImpl implements IWeatherService{
@Override
public String query(String name) {
return "天气晴朗"+name;
}
}
1.4发布服务
编写Test类,然后运行代码
代码如下:
package com.qf.webservice.main;
import org.apache.cxf.jaxws.JaxWsServerFactoryBean;
import com.qf.webservice.IWeatherService;
import com.qf.webservice.WeatherServiceImpl;
public class Test {
public static void main(String[] args) {
JaxWsServerFactoryBean bean = new JaxWsServerFactoryBean();
//1、设置地址
bean.setAddress("http://localhost:8080/weatherService/");
//2、接口的字节码
bean.setServiceClass(IWeatherService.class);
//3、实现类
bean.setServiceBean(new WeatherServiceImpl());
//4、进行发布
bean.create();
System.out.println("发布服务成功");
}
}
1.5浏览器测试
复制http://localhost:8080/weatherService/,加上?wsdl在浏览器访问
二、利用CXF引入服务
2.1新建工程
新建Java Projcet,项目名为:webservice_client_cxf_1
2.2导入jar包
和前面一样,把jar包复制到lib目录下
2.3生成客户端代码
进入命令行窗口,定位到webservice_server_cxf工程下的src目录
根据 wsdl2java -d . http://localhost:8080/weatherService/?wsdl 命令生成代码
-d :生成目录的地方
. :在当前目录生成
回到工程,刷新工程,就可以看见生成的客户端代码
2.4调用方法
编写Client类,运行代码
代码如下:
package com.qf.webservice.client;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
import com.qf.webservice.IWeatherService;
public class Client {
public static void main(String[] args) {
JaxWsProxyFactoryBean bean = new JaxWsProxyFactoryBean();
//1、设置地址
bean.setAddress("http://localhost:8080/weatherService/");
//2、接口的字节码
bean.setServiceClass(IWeatherService.class);
//3、获取对象
IWeatherService service = (IWeatherService) bean.create();
//4、执行方法
String query = service.query("上海");
System.out.println(query);
}
}