WebService 的CXF框架 WS独立服务之HelloWorld

时间:2021-11-17 20:45:54

WebService:不同系统不同语言的数据交互,

CXF主要分为两种服务方式:

1 )JAX-WS:传输数据, xml格式,基于SOAP协议(规范:规定了xml传递数据的编码规范) ;

2 )JAX-RS:传输数据,xml或json格式.基于HTTP协议.(风格).

一:WS独立服务使用(主要看底层如何实现)

1.建立项目导包

WebService 的CXF框架 WS独立服务之HelloWorld
 1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
2 <modelVersion>4.0.0</modelVersion>
3 <groupId>cn.itcast.maven</groupId>
4 <artifactId>cxf_ws_helloworld</artifactId>
5 <version>0.0.1-SNAPSHOT</version>
6 <name>cxf_ws_helloworld</name>
7 <description>独立发布CXF服务java项目</description>
8
9 <dependencies>
10 <!-- 要进行jaxws 服务开发 -->
11 <dependency>
12 <groupId>org.apache.cxf</groupId>
13 <artifactId>cxf-rt-frontend-jaxws</artifactId>
14 <version>3.0.1</version>
15 </dependency>
16
17 <!-- 内置jetty web服务器 -->
18 <dependency>
19 <groupId>org.apache.cxf</groupId>
20 <artifactId>cxf-rt-transports-http-jetty</artifactId>
21 <version>3.0.1</version>
22 </dependency>
23
24 <!-- 日志实现 -->
25 <dependency>
26 <groupId>org.slf4j</groupId>
27 <artifactId>slf4j-log4j12</artifactId>
28 <version>1.7.12</version>
29 </dependency>
30 </dependencies>
31 </project>
WebService 的CXF框架 WS独立服务之HelloWorld

2.与pom中的日志实现相对应.

WebService 的CXF框架 WS独立服务之HelloWorld
 1 ### direct log messages to stdout ###
2 log4j.appender.stdout=org.apache.log4j.ConsoleAppender
3 log4j.appender.stdout.Target=System.out
4 log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
5 log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
6
7 ### direct messages to file mylog.log ###
8 log4j.appender.file=org.apache.log4j.FileAppender
9 log4j.appender.file.File=c:/mylog.log
10 log4j.appender.file.layout=org.apache.log4j.PatternLayout
11 log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
12
13 ### set log levels - for more verbose logging change 'info' to 'debug' ###
14
15 log4j.rootLogger=info, stdout
WebService 的CXF框架 WS独立服务之HelloWorld

3.编写服务端程序

1)编写实体类Car 与 User

WebService 的CXF框架 WS独立服务之HelloWorld
 1 package cn.itcast.cxf.domain;
2
3 public class Car {
4 private Integer id;
5 private String carName;
6 private Double price;
7
8 public Integer getId() {
9 return id;
10 }
11
12 public void setId(Integer id) {
13 this.id = id;
14 }
15
16 public String getCarName() {
17 return carName;
18 }
19
20 public void setCarName(String carName) {
21 this.carName = carName;
22 }
23
24 public Double getPrice() {
25 return price;
26 }
27
28 public void setPrice(Double price) {
29 this.price = price;
30 }
31
32 @Override
33 public String toString() {
34 return "Car [id=" + id + ", carName=" + carName + ", price=" + price + "]";
35 }
36
37 }
WebService 的CXF框架 WS独立服务之HelloWorld
WebService 的CXF框架 WS独立服务之HelloWorld
 1 package cn.itcast.cxf.domain;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 public class User {
7 private Integer id;
8 private String username;
9 private String city;
10
11 private List<Car> cars = new ArrayList<Car>();
12
13 public Integer getId() {
14 return id;
15 }
16
17 public void setId(Integer id) {
18 this.id = id;
19 }
20
21 public String getUsername() {
22 return username;
23 }
24
25 public void setUsername(String username) {
26 this.username = username;
27 }
28
29 public String getCity() {
30 return city;
31 }
32
33 public void setCity(String city) {
34 this.city = city;
35 }
36
37 public List<Car> getCars() {
38 return cars;
39 }
40
41 public void setCars(List<Car> cars) {
42 this.cars = cars;
43 }
44
45 }
WebService 的CXF框架 WS独立服务之HelloWorld

2)编写服务(Service)

WebService 的CXF框架 WS独立服务之HelloWorld
 1 package cn.itcast.cxf.service;
2
3 import java.util.List;
4
5 import javax.jws.WebMethod;
6 import javax.jws.WebService;
7
8 import cn.itcast.cxf.domain.Car;
9 import cn.itcast.cxf.domain.User;
10 //使用类上面,说明标记类时WebService的服务类
11 @WebService
12 public interface IUserService {
13 //服务方法
14 @WebMethod
15 public String sayHello(String name);
16
17 @WebMethod
18 public List<Car> findCarsByUser(User user);
19 }
WebService 的CXF框架 WS独立服务之HelloWorld
WebService 的CXF框架 WS独立服务之HelloWorld
 1 package cn.itcast.cxf.service;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 import javax.jws.WebService;
7
8 import cn.itcast.cxf.domain.Car;
9 import cn.itcast.cxf.domain.User;
10 //endpointInterface接口服务完整类名,serviceName 服务名称
11 @WebService(endpointInterface = "cn.itcast.cxf.service.IUserService", serviceName = "userService")
12 public class UserServiceImpl implements IUserService {
13
14 // 简单参数传递
15 public String sayHello(String name) {
16 return "Hello," + name;
17 }
18
19 // 复杂参数传递
20 public List<Car> findCarsByUser(User user) {
21 if ("xiaoming".equals(user.getUsername())) {
22 List<Car> cars = new ArrayList<Car>();
23 Car car1 = new Car();
24 car1.setId(1);
25 car1.setCarName("大众途观");
26 car1.setPrice(200000d);
27 cars.add(car1);
28
29 Car car2 = new Car();
30 car2.setId(2);
31 car2.setCarName("现代ix35");
32 car2.setPrice(170000d);
33 cars.add(car2);
34
35 return cars;
36 } else {
37 return null;
38 }
39 }
40 }
WebService 的CXF框架 WS独立服务之HelloWorld

3)将Uservice的服务方法,发布到网上,让其他系统调用

WebService 的CXF框架 WS独立服务之HelloWorld
 1 package cn.itcast.cxf.ws.server;
2
3 import javax.xml.ws.Endpoint;
4
5 import cn.itcast.cxf.service.IUserService;
6 import cn.itcast.cxf.service.UserServiceImpl;
7
8 public class WS_Server {
9
10 public static void main(String[] args) {
11 // 使用CXF 将 UserService服务 注册到网络上
12 // 1 、 服务实现对象
13 IUserService userService = new UserServiceImpl();
14 // 2、 发布服务地址
15 String address = "http://localhost:9999/userService";
16 // 3、 发布服务
17 Endpoint.publish(address, userService);
18
19 System.out.println("服务已经启动...");
20 }
21 }
WebService 的CXF框架 WS独立服务之HelloWorld

通过:http://ip地址:端口号/服务名称?wsdl

例如:网址: http://localhost:9999/userService?wsdl

4.编写客户端代码

WebService 的CXF框架 WS独立服务之HelloWorld
 1  package cn.itcast.cxf.ws.client;
2 2
3 3 import org.apache.cxf.interceptor.LoggingInInterceptor;
4 4 import org.apache.cxf.interceptor.LoggingOutInterceptor;
5 5 import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
6 6
7 7 import cn.itcast.cxf.domain.User;
8 8 import cn.itcast.cxf.service.IUserService;
9 9
10 10 public class WS_Client {
11 11 public static void main(String[] args) {
12 12 JaxWsProxyFactoryBean jaxWsProxyFactoryBean = new JaxWsProxyFactoryBean();
13 13 jaxWsProxyFactoryBean.setServiceClass(IUserService.class);
14 14 jaxWsProxyFactoryBean.setAddress("http://localhost:9999/userService");
15 15
16 16 // 通过拦截器 打印soap 报文信息
17 17 jaxWsProxyFactoryBean.getInInterceptors().add(new LoggingInInterceptor());
18 18 jaxWsProxyFactoryBean.getOutInterceptors().add(new LoggingOutInterceptor());
19 19
20 20 IUserService proxy = (IUserService) jaxWsProxyFactoryBean.create();
21 21
22 22 // 调用sayHello
23 23 System.out.println(proxy.sayHello("程序猿"));
24 24
25 25 // 调用findCarsByUser
26 26 User user = new User();
27 27 user.setUsername("xiaoming");
28 28 System.out.println(proxy.findCarsByUser(user));
29 29
30 30 }
31 31 }
WebService 的CXF框架 WS独立服务之HelloWorld

WebService 的CXF框架 WS独立服务之HelloWorld的更多相关文章

  1. 转载 WebService 的CXF框架 WS方式Spring开发

    WebService 的CXF框架 WS方式Spring开发   1.建项目,导包. 1 <project xmlns="http://maven.apache.org/POM/4.0 ...

  2. WebService 的CXF框架 WS方式Spring开发

    1.建项目,导包. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www ...

  3. WebService之CXF框架

    本文主要包括以下内容 ant工具的使用 利用cxf实现webservice cxf与spring整合 ajax访问webservice ant 工具 1.为什么要用到ant这个工具呢? Ant做为一种 ...

  4. webservice第三篇【接口开发webservice、CXF框架使用、IDEA下使用webservice、小例子】

    实现接口的webservice 服务端 import javax.jws.WebService; /**面向接口的webservice发布方式 * * */ @WebService public in ...

  5. Webservice与CXF框架快速入门

    1. Webservice Webservice是一套远程调用技术规范 远程调用RPC, 实现了系统与系统进程间的远程通信.java领域有很多可实现远程通讯的技术,如:RMI(Socket + 序列化 ...

  6. Eclipse&plus;CXF框架开发Web服务实战

    一. 说明 采用CXF框架开发webservice. 所用软件及版本如下.  操作系统:Window XP SP3.  JDK:JDK1.6.0_07,http://www.oracle.com/ ...

  7. WEBSERVICE之CXF框架开发webservice

    之前学习了使用jdk开发webservice服务,现在开始学习使用框架(cxf)开发webservice. 1.准备工作 A.使用cxf开发webservice服务,需要用到apache-cxf-3. ...

  8. WebService中用CXF框架的wsdl部署生成客户端代码时&comma;使用cmd命令口出现wsimport不是内部或外部命令的问题

    网上有很多,都不好用,这个立竿见影的 set JAVA_HOME = *:\Program Files\Java\jdk1.8.0_181(此处为自己jdk的安装路径) set CLASSPATH = ...

  9. 使用CXF框架,发布webservice服务,并使用客户端远程访问webservice

    使用CXF框架,发布webservice服务,并使用客户端远程访问webservice  1. CXF介绍 :soa的框架    * cxf 是 Celtrix (ESB框架)和 XFire(webs ...

随机推荐

  1. EC笔记:第4部分:18、接口正确使用,不易被误用

    好的接口容易被正确使用,不易被误用 考虑以下函数: void func(int year,int month,int day){ //一些操作 } 这个函数看似合理,因为参数的名字已经暴露了它的用途. ...

  2. android application类的用法

    android application类的用法 Application是android系统Framework提供的一个组件,它是单例模式(singleton),即每个应用只有一个实例,用来存储系统的一 ...

  3. 理解C&plus;&plus; 宏

    1.什么是宏,它解决什么问题? 宏的本质是文本替换,考虑下面的需求,程序中多次使用圆周率Pi,在每个地方都使用3.1415,显然很愚蠢.有没有好的办法呢?使用宏,如下: #define Pi 3.14 ...

  4. 对typesafe enum模式的改进

    按照一些资料上讲,其实enum也就是在编译器层面实现用类来包装枚举(typesafe enum 模式)的思想.以保证类型安全.自己用类来写枚举其实效果也还是不错的,只是代码略显啰嗦. 例子代码 pub ...

  5. 1&period;语言概述-JavaScript权威指南笔记

    上周三的时候交给老板目前的项目第一个迭代回顾会的总结.原本是以综述性的表述方式写的,交给他之后表示程序员不要长篇大论.总结要分为优点缺点期望等等块,每块列出条目,简明扼要的表达出来.这里也用这种风格. ...

  6. spring 框架整合 笔记4

    struts hibernate spring 先贴出框架整合需要的maven <project xmlns="http://maven.apache.org/POM/4.0.0&qu ...

  7. Android 组件化方案探索与思考

    Android 组件化方案探索与思考 组件化项目,通过gradle脚本,实现module在编译期隔离,运行期按需加载,实现组件间解耦,高效单独调试. 本项目github地址 https://githu ...

  8. log4j快速入门

    转自:http://blog.csdn.net/yanwushu/article/details/7581255 1.引言 在应用程序中添加日志记录总的来说基于三个目的: .监视代码中变量的变化情况, ...

  9. docker 在windows7 、8下的安装

    这里说明一下这种安装方式适合win7 win8的系统环境下安装的,当然win10也可以,但是win10有更好的方式 即安装Docker Toolbox,同时还附加安装 Docker Client fo ...

  10. numpy文件操作

    import numpy as np print '读取csv文件做为数组' arr = np.loadtxt('array_ex.txt', delimiter = ',') print arr i ...