博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【CXF】- Spring 整合 webservice CXF
阅读量:5977 次
发布时间:2019-06-20

本文共 3418 字,大约阅读时间需要 11 分钟。

hot3.png

webservice服务端

项目代码层次结构:

①:web.xml:CXFServlet/Spring配置文件信息

context-param>      
contextConfigLocation
classpath:beans.xml
org.springframework.web.context.ContextLoaderListener
CXFServlet
org.apache.cxf.transport.servlet.CXFServlet
1
CXFServlet
/*

②:spring整合CXF框架配置:beans.xml

③:webservice服务接口/服务类/拦截器/POJO

package com.zhiwei.ws.inter;import javax.jws.WebMethod;import javax.jws.WebService;import com.zhiwei.domain.Order;@WebServicepublic interface OrderWS {	@WebMethod	public Order getOrderById(int id);}
package com.zhiwei.ws.service;import javax.jws.WebService;import com.zhiwei.domain.Order;import com.zhiwei.ws.inter.OrderWS;@WebServicepublic class OrderWSImp implements OrderWS {		//SEI实现类由spring容器管理,自动实例化加载	public OrderWSImp() {		System.out.println("webserviceIMP被创建.......");	}	public Order getOrderById(int id) {		System.out.println("getOrderById is running!");		return new Order(id, "squirrel", 200.5);	}}
package com.zhiwei.ws.interceptor;import java.util.List;import org.apache.cxf.binding.soap.SoapHeader;import org.apache.cxf.binding.soap.SoapMessage;import org.apache.cxf.headers.Header;import org.apache.cxf.interceptor.Fault;import org.apache.cxf.phase.AbstractPhaseInterceptor;import org.apache.cxf.phase.Phase;import org.w3c.dom.Element;public class ServerInterceptor extends AbstractPhaseInterceptor
{ public ServerInterceptor() { super(Phase.PRE_PROTOCOL); } //
zhiwei
public void handleMessage(SoapMessage msg) throws Fault { //获取文件头 List
headers=msg.getHeaders(); SoapHeader header=(SoapHeader) headers.get(0); Element element=(Element) header.getObject(); String name=element.getElementsByTagName("name").item(0).getTextContent(); if("xiaoyang".equals(name)) { System.out.println("Server interceptor.........."+name); return; } throw new Fault(new RuntimeException("用户名不正确!")); }}
package com.zhiwei.domain;public class Order {		private int id;	private String name;	private double price;		public int getId() {		return id;	}	public void setId(int id) {		this.id = id;	}	public String getName() {		return name;	}	public void setName(String name) {		this.name = name;	}	public double getPrice() {		return price;	}	public void setPrice(double price) {		this.price = price;	}	public Order(int id, String name, double price) {		super();		this.id = id;		this.name = name;		this.price = price;	}	@Override	public String toString() {		return "Order [id=" + id + ", name=" + name + ", price=" + price + "]";	}}

客户端代码层次结构:客户端代码采用CXF的wsdl2java工具生成

④:客户端spring配置:client-beans.xml

< constructor-arg name="name" value="xiaoyang"/>

⑤:客户端测试

//获取客户端配置文件ClassPathXmlApplicationContext context=new ClassPathXmlApplicationContext("client-beans.xml");//获取spring容器里面的beanOrderWS orderWS=(OrderWS) context.getBean("orderClient");//通过webservice代理调用webservice方法Order order=orderWS.getOrderById(1);System.out.println("--->"+order.toString());

客户端日志:

服务端日志:

至此Spring整合CXF框架完成.....................

转载于:https://my.oschina.net/yangzhiwei256/blog/3017167

你可能感兴趣的文章
使用锁实现多线程共用一个数据源
查看>>
读阿干管理
查看>>
关于代码重构
查看>>
javascript的变量
查看>>
python socket练习
查看>>
Windows栈溢出原理
查看>>
弹框组件
查看>>
数据结构 引言
查看>>
IIS怎么设置本地域名解析(本地域名测试配置)
查看>>
编程之美——2.7 求最大公约数
查看>>
UIColor的封装
查看>>
elastic search2.3.1(3) 查询语句拼接实战termQuery ,matchQuery, boolQuery, rangeQuery, wildcardQuery...
查看>>
JSONUtil
查看>>
STM32 flash
查看>>
python之命令行解析工具argparse
查看>>
在性能测试时使用nmon进行监控服务器性能
查看>>
斐波拉契数列:1、1、2、3、5、8、13、21……,编写函数,求数列的第n项F(n)(3<=n<=40)。输入n,输出F(n)。...
查看>>
读取pandas修改单列数据类型
查看>>
LA 6474 Drop Zone (最小割)
查看>>
JQuery中的html(),text(),val()区别
查看>>