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

来源:互联网 发布:淘宝店卖女装 编辑:程序博客网 时间:2024/06/08 00:33

如果我们不使用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的技术架构体系就是

 


0 0
原创粉丝点击