按关键词阅读: 笔记 学习 框架 service 框架学习笔记 web CXF
trySystem.out.println(port.testWS(message);
catch(SOAPFa 。
11、ultException e)System.out.println(e.getFault().getFaultCode();
System.out.println(e.getFault().getFaultString();
1 , 用工具通过WSDL文件产生一个SEI(service endpoint interface),一个java的interface , 能够对应该web service提供的功能 。
这个interface的类名会对应到WSDL的portType名称 , 方法会和operation对应 , 方法的参数会和message以及types对应 。
CXF和Axis都提供这样的工具:wsdl2java 。
。
12、【上面的WSCXFProvider就是SEI】2 , 初始化Service , 指定wsdL URL和service的QName , service的QName的前一部分是命名空间 , 后一部分是名称 , 与WSDL文件中的部分对应 。
然后通过getPort得到一个实现了SEI的实例 , 这个实例被叫做Proxy 。
它的QName与 wsdl文件中的的name属性2)WebResult自定义返回值将其mapping到wsdl和xml-wsdl:part3)WebParam自定义返回值将其mapping到message part和xml-wsdl:messagewebParam注解ws服务的行为的参数信息header=tr 。
13、ue表示信息是否添加到soap的header中4)WebMethodOnewayonly an input message and no output拦截器参考:jax-ws中的javax.xml.ws.handler.Handler是个消息拦截器 , 能够在你的webserver前后进行处理Handler分为LogicalMessage:其方法getPayload() , 以 XML 源的形式获取消息负载 , 可以在相同的 LogicalMessage 实例上多次调用 , 总是返回可以用来检索整个消息负载的新的 Source1. Interceptor一个处理消息 handleMessage ,一个是处理错 。
14、误 handleFault , 提醒注意的是 , 在实行具体的Interceptor的这两个方法中 , 千万别调用Interceptor内部的成员变量 。
这是由于Interceptor是面向消息来进行处理的 , 每个Interceptor都有可能运行在不同的线程中 , 如果调用了Interceptor中的内部成员变量 , 就有在Interceptor中造成临界资源的访问的情况 , 而这时的Interceptor也就不是线程安全的Interceptor了 。
2. InterceptorChain单个的Interceptor功能有限 , CXF要实现一个SOAP消息处理 , 需要将许许多多的Interceptor组合在一起使用 。
因此设计 。
15、了 InterceptorChain , 在我看了InterceptorChain就像是一个Interceptor的小队长有调配安置Interceptor的权力(add , remove) , 控制消息处理的权力(doInterceptor , pause , resume , reset , abort) , 有交付错误处理的权力( get|setFaultObserver) 。
更有意思的是为灵活控制Interceptor的处理消息顺序(doInterceptStartingAt , doInterceptorStartingAfter) , 这也是InterceptorChain比较难理解的地方 。
3. Message由于Inter 。
【CXF|CXF WEB service 框架学习笔记】16、ceptor是针对Message来进行处理的 , 当你打开Message这个类文件时 , 你会发现在Message中定义了很多常量 , 同时你还可以从Message中获取到很多与Message操作相关的信息 。
可以获取设置的对象有InterceptorChain Exchange Destination , 还有获取设置Content的泛型接口 , 是不是感觉Message和Bus差不多 , 都成了大杂货铺4. Exchange和Message打交道就离不开Exchange 。
Exchange建立In/Out , InFault/OutFault Message 之间的联系 , 你可以从Exchange中获取到与消息传输相关的Conduit , Destination的信息 , 同时也可以设置和Session相关的其他信息 , 以及知道是否是OneWay的消息 。
5. AbstractFeature为了简化配置Interceptor的复杂操作 , 在这里设置了AbstractFeature , 通过Feature我们可以向Bus , Client , Endpoint配置不同功能的Interceptor组 。
这样可以极大减轻我们配置文件的体积 。
org.apache.cxf.jaxws.EndpointImpl(Busbus,java.lang.Objectimplementor)包含org.apache.cxf.bus.BusFactory 。
来源:(未知)
【学习资料】网址:/a/2021/0406/0021864504.html
标题:CXF|CXF WEB service 框架学习笔记( 二 )