北风网项目培训基于SOA思想下的WebService实战讲师:Sean第04讲JAX-WSofCXF日期类型XMLGregorianCalendar输入输出参数@Oneway注解WebServiceContext使用客户端视图JAX-WS的异常处理使用MTOM传输附件Ch01_1在SOAP中方法的参数是有流向的@WebParam注解中的mode属性◦javax.jws.WebParam.Mode枚举◦IN(默认),OUT、INOUT类型如果是OUT、INOUT类型的参数类型,客户端生成代码时会被变为javax.xml.ws.HolderT类型方法参数将会被当做返回值在Web服务调用完成后返回给客户端注意不要导错包,不是javax.xml.rpc.Holder类型(JDK1.6已经没有这个类型,但是MyEclipse还有ch01_2@javax.jws.Oneway指定该方法只具有输入参数,但无返回值,不允许抛出非运行时异常。◦此批注必须只与@WebMethod批注一起使用如果条件不符JAX-WS规范要求应该报告错误但CXF的策略是:◦如果方法存在返回值,生成客户端时将被改为void;◦如果方法参数含有OUT类型,生成客户端时将被忽略;◦如果方法含有INOUT类型参数,生成客户端时将只作为IN类型参数被保留javax.xml.ws.WebServiceContext接口用于在Web服务实现类中访问与服务请求有关的消息上下文和安全信息◦使用javax.annotation.Resource标准注解启用这个接口◦EJB等JAVAEE规范中的一些资源都使用这个注解注入接口的getMessageContext()方法返回javax.xml.ws.handler.MessageContext接口,这是一个实现了Map接口的接口,它包含了一组属性集ch01_3服务端发布Web服务可以使用javax.xml.ws.Endpoint接口发布Web服务,这样可以在开发JAX-WS的服务端时完全避开使用底层实现的API,统一使用标准的JAX-WS的接口、注解等但是在客户端访问Web服务时我们使用了CXF的JaxWsProxyFactoryBean来进行操作◦其实也可以使用标准的JAX-WS的API完成客户端调用ch01_4JAX-WS中的服务端的自定义异常使用javax.xml.ws.WebFault注解来完成,这样的异常会在WSDL文件中的wsdl:operation…中的子元素生成wsdl:fault…ch01_5MTOM(SOAPMessageTransmissionOptimizationMechanism)SOAP消息传输优化机制,可以在SOAP消息中发送二进制数据,与SAAJ传输附件不同,MTOM需要XOP(XML-binaryOptimizedPacking)来传输二进制数据MTOM允许将消息中包含的大型数据元素外部化,并将其作为无任何特殊编码的二进制数据随消息一起传送MTOM消息会打包为多部分相关MIME序列,放在SOAP消息中一起传送MTOM已经得到了大多数厂商的支持,包括微软等,所以使用这种方式处理SOAP中的附件,可以获得较大的通用性。ch01_5日期类型XMLGregorianCalendar输入输出参数@Oneway注解WebServiceContext使用客户端视图JAX-WS的异常处理使用MTOM传输附件欢迎访问我们的官方网站