WebService学习笔记-CXF添加拦截器

Webservice拦截器:在webservice请求过程中,动态操作请求和响应的数据

分类

按照所处的位置分:服务器端拦截器  客户端拦截器

按照消息的方向分:入拦截器  出拦截器

按照定义者分:系统拦截器 自定义拦截器

在服务器端添加拦截器

package com.demo;

//注意引入的类一定要正确

import javax.xml.ws.Endpoint;
import org.apache.cxf.interceptor.LoggingInInterceptor;
import org.apache.cxf.jaxws.EndpointImpl;

public class webServiceApp {
	public static void main(String[] args) {
		System.out.println("Starting web service... ");
		HelloWorldImpl implementor = new HelloWorldImpl();
		String address = "http://localhost:8080/helloWorld";
		Endpoint endpoint = Endpoint.publish(address, implementor);

		// jaxws API 转到 cxf API 添加日志拦截器
		EndpointImpl jaxwsEndpointImpl = (EndpointImpl) endpoint;
		org.apache.cxf.endpoint.Server server = jaxwsEndpointImpl.getServer();
		org.apache.cxf.endpoint.Endpoint cxfEndpoint = server.getEndpoint();

		LoggingInInterceptor logging = new LoggingInInterceptor();
		cxfEndpoint.getInInterceptors().add(logging);
		System.out.println("Web service started");
	}
}

客户端

package com.demo.client;

import org.apache.cxf.interceptor.LoggingOutInterceptor;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;

import com.demo.HelloWorld;
import com.demo.User;

//参考http://blog.csdn.net/fhd001/article/details/5778915
public class HelloWorldClient {
	public static void main(String[] args) {
		JaxWsProxyFactoryBean svr = new JaxWsProxyFactoryBean();
		svr.setServiceClass(HelloWorld.class);
		svr.setAddress("http://localhost:8080/helloWorld");
		HelloWorld hw = (HelloWorld) svr.create();

		// jaxws API 转到 cxf API 添加日志拦截器
		org.apache.cxf.endpoint.Client client = org.apache.cxf.frontend.ClientProxy
				.getClient(hw);
		org.apache.cxf.endpoint.Endpoint cxfEndpoint = client.getEndpoint();

		LoggingOutInterceptor logging = new LoggingOutInterceptor();
		cxfEndpoint.getOutInterceptors().add(logging);

		User user = new User();
		user.setUsername("Umgsai");
		user.setDescription("test");
		System.out.println(hw.sayHiToUser(user));
		String sayHi = hw.sayHi("test~~~");
		System.out.println(sayHi);
	}
}
时间: 2024-10-05 17:58:30

WebService学习笔记-CXF添加拦截器的相关文章

WebService学习笔记-CXF添加自定义拦截器

使用自定义拦截器实现用户名和密码的校验 客户端:出拦截器 服务器:入拦截器 客户端 AddUserInterceptor.java package com.demo.interceptors; import java.util.List; import javax.xml.namespace.QName; import org.apache.cxf.binding.soap.SoapMessage; import org.apache.cxf.headers.Header; import org

Webservice:CXF添加拦截器实现权限控制

上一遍简单介绍了webservice和写了简单的cxf入门小程序 地址:http://blog.csdn.net/cjaver/article/details/38777057 接下来介绍一个比较实用的拦截器,可以进行权限控制等. 首先对于 一个 webservice来说 服务器端 : 有输入有输出(soap) 客户端: 同上 所以对于添加拦截器来说,也是有 In 拦截器 跟 Out拦截器 这里简单写一个服务器端的 In拦截器(控制发送过来的消息必须有 用户名,密码,所以添加的In拦截器) pu

cxf添加拦截器应用

项目中有时候也会做一些类似于权限验证的东西,拦截器也是一种实现方式.拦截器主要作用是做一些权限过滤,编码处理等. webService接口也可以上拦截器,我们也可以给webservice请求加权限判断功能: webservice分服务端和客户端,服务端和客户端都是可以加拦截器的,无论是服务端还是客户端,都分进,出(In,Out)拦截器: 可以使用cxf内置拦截器,也可以自定义拦截器,无论是自定义的拦截器,还是CXF自带的拦截器,都必须实现Interceptor接口. 下面分别从这两个方面来讲解:

【Struts2学习笔记-6--】Struts2之拦截器

简单拦截器的使用 拦截器最基本的使用: 拦截方法的拦截器 拦截器的执行顺序 拦截结果的监听器-相当于 后拦截器 执行顺序: 覆盖拦截器栈里特定拦截器的参数 使用拦截器完成-权限控制 主要完成两个功能: 先检查浏览者是否登录: 看登录的用户是否有权限访问: 来自为知笔记(Wiz) 附件列表

SpringMVC 学习笔记(九) 自定义拦截器

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">Spring MVC</span><span style="font-family: 宋体; background-color: rgb(255, 255, 255);">也可以使用拦截器对请求进行拦截处理,用户 可以自定义拦截器来实现特定的功

struts2框架学习笔记6:拦截器

拦截器是Struts2实现功能的核心部分 拦截器的创建: 第一种: package interceptor; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.Interceptor; //拦截器的第一种创建方式 //拦截器的生命周期:随项目启动创建,随项目关闭而销毁 public class MyInterceptor implements Intercepto

WebService学习笔记-CXF支持的数据类型

此实例测试CXF支持的数据类型 Student.java实体类 public class Student { private int id; private String name; private float price; //...省略getter setter方法 public Student() {//无参构造方法 super(); } } DataTypeWS.java接口 @WebService public interface DataTypeWS { @WebMethod pub

使用CXF为webservice添加拦截器

拦截器分为Service端和Client端 拦截器是在发送soap消息包的某一个时机拦截soap消息包,对soap消息包的数据进行分析或处理.分为CXF自带的拦截器和自定义的拦截器 1.Service端: 通过将org.apache.cxf.jaxws.EndpointImpl类的方法即可实现   发布Web Service 方法可以通过Endpoint.publish()方法,此方法返为EndpointImpl,所以为Service端添加拦截器很简单. 部分代码: UserService us

webService学习笔记

xsd ---->定义了schema标签的namespacewsdl ---->定义了wsdl标签的namespace <definitions> <types> <schema> <element> </schema> </types> <message> </message> <portType> </portType> <binding> </bind