WebService 的Interceptor的使用以及SOAP消息形式

如果我们不使用CXF框架进行服务器端的开发的话,我们的用户名和密码可以直接写到xml文件中,然后服务器端进行相应的解析

如果我们使用CXF框架,服务器端的Input消息和output消息 的数据格式都是由CXF框架为我们自动生成的,所以程序员无法修改xml文件。

如下图为CXF框架为我们提供了拦截器这个功能,可以让我们程序员修改输入、输出消息


CXF框架为我们实现了很多的内置拦截器

我们也可以创建自己的拦截器 这个类需要implements  Interceptor 或者extends AbstractPhaseInterceptor

以下的代码是,我们使用CXF为我们提供的内置拦截器LoggingInInterceptor 和内置拦截器 LoggingOutInterceptor

package lee;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import javax.xml.ws.Endpoint;

import org.apache.cxf.interceptor.LoggingInInterceptor;
import org.apache.cxf.interceptor.LoggingOutInterceptor;
import org.apache.cxf.jaxws.EndpointImpl;


import yy.HelloWorld;
import yy.impl.HelloWorldWS;


public class ServerMain {


public static void main(String[] args) throws IOException{

HelloWorld hello=new HelloWorldWS();
//发布WebService
EndpointImpl endpoint=(EndpointImpl) Endpoint.publish("http://202.118.212.80/webservie" ,hello);

//为服务器端添加in拦截器
//CXF已经为我们创建了很对的内置拦截器,所以我们可以调用内置拦截器实现拦截的功能
endpoint.getInInterceptors().add(new LoggingInInterceptor( new PrintWriter(new FileWriter("in.txt"))));

//为服务器端添加out拦截器
endpoint.getOutInterceptors().add(new LoggingOutInterceptor( new PrintWriter(new FileWriter("out.txt"))));
}
}

当我们执行Webservice 的时候,会在服务端产生相应的日志,记录着传入消息和传出消息即SOAP的消息格式

SOAP消息的格式: 

根元素是 Envelope

 Header  --主要包括一些格外的信息 如用户名和密码

Body ---如果服务端能正确的返回,符合WSDL格式

       --如果调用错误的话,返回Falut标签


总结:WebService的技术架构体系就是

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值