Soap消息内容被封装为<soap:Envelope...SOAP信封,在信封之间的内容就是SOAP消息正文,这个元素还有一个子元素<soap:Header...,如果你的某些注解的header=true,那么它将被放到<soap:Header...中传输,而不是SOAP消息正文。
package com.nantian.service; import javax.jws.WebParam; import javax.jws.WebService; @WebService public interface HelloService { Customer selectMaxAgeStudent(@WebParam(name="c1",header=true) Customer c1, Customer c2); Customer selectMaxLongNameStudent(Customer c1, Customer c2); }
输入输出参数与@OneWay注解:
在SOAP中方法的参数是有流向的,@WebParam的mode属性由javax.jws.WebParam.Mode枚举指定,表示参数的流向,默认是IN,也就是输入参数,还可以是OUT、INOUT类型。
如果是OUT、INOUT类型的参数类型,这样的方法参数将会被当做返回值在web服务调用完成后返回给你。客户端生成代码时会被转变为java.xml.ws.Holder<T>类型,注意不到导错包。
@javax.jws.OneWay注解是一个标识性注解,它表示公开的web服务的方法没有任何返回值,不允许有OUT类型的参数,不允许抛出非运行时异常,如果条件不符JAX-WS规范要求应该报告错误,但是CXF的策略是如果方法存在返回值,生成客户端时将被改为void;如果方法参数含有OUT类型,生成客户端时将被忽略;如果方法参数含有INOUT类型,生成客户端时将只作为IN类型参数被保留。
package com.nantian.service; import javax.jws.WebParam; import javax.jws.WebParam.Mode; import javax.jws.WebService; import javax.xml.ws.Holder; @WebService public interface HelloService { boolean selectMaxAgeStudent(@WebParam(name="c1") Customer c1, @WebParam(name="c2") Customer c2, @WebParam(name="c3",mode=Mode.OUT) Holder<Customer> c3); Customer selectMaxLongNameStudent(Customer c1, Customer c2); }
Web服务上下文:
javax.xml.ws.WebServiceContext接口用于在Web服务实现类中访问与服务请求有关的信息上下文和安全信息,只需要使用javax.annotation.Resource这个标准的注解标注即可使用这个接口。
这个接口的getMessageContext()方法返回javax.xml.ws.handlerMessageContext接口。
public void selectMaxAgeStudent(Customer c1, Customer c2, Holder<Customer> c3) { MessageContext mcontext = context.getMessageContext(); Set<String> set = mcontext.keySet(); for (String key : set) { System.out.println("*****************" + key + "\t" + mcontext.get(key)); try { System.out.println("+++++++++++++++++" + key + "\t" + mcontext.getScope(key)); } catch (Exception e) { System.out.println("+++++++++++++++++"+key+"不存在"); } } }
上面的方法会打印出消息上下文的所有属性集及其范围,因为getScope(String name)如果没有name存在会抛出异常。范围的可选值是javax.xml.ws.handler.MessageContextScope中的APPLICATION、HANDLER枚举。
使用客户端视图:
服务端发布Web服务可以使用javax.xml.ws.Endpoint接口发布Web服务,这样在开发JAX-WS的服务端时完全避开使用底层实现的API,统一使用标准的JAX-WS的接口、注解等。也可以使用标准的JAX-WS的API完成客户端调用。
package com.nantian.client; import java.net.MalformedURLException; import java.net.URL; import javax.xml.namespace.QName; import com.nantian.service.HelloServiceImpl; import com.nantian.service.HelloServiceImplService; public class SOAPClientApi { public static void main(String[] args) throws MalformedURLException { QName qName = new QName("http://service.nantian.com/", "HelloServiceImplService"); HelloServiceImplService helloServiceImplService = new HelloServiceImplService( new URL("http://10.11.13.83:8080/JAXWSdEMO/helloService?wsdl"), qName); HelloServiceImpl helloServiceImpl=helloServiceImplService.getPort(HelloServiceImpl.class); } }
首先使用Web服务的WSDL中的targetNamespace和<wsdl:service...中的name属性构建了javax.xml.namespace.QName接口,然后调用生成的客户端代码中的客户端视图类(这个类继承javax.xml.ws.Service)HelloServiceImplService的构造方法传入WSDL的URL和QName实例,在获得客户端视图实例之后调用T getPort(T t)这个泛型方法找到要使用的端点服务接口。
相关推荐
**WebService学习笔记** WebService是一种基于互联网的、平台和语言无关的接口规范,它允许不同系统间的应用程序进行交互和数据共享。这项技术的核心是利用XML(可扩展标记语言)作为数据交换格式,SOAP(简单对象...
在本篇WebService学习笔记中,我们将探讨几个关键的概念和技术,包括SOAP协议、JAX-WS、WSDL文档以及一些常用的Web服务框架。 首先,SOAP(Simple Object Access Protocol)是一种基于XML的协议,用于在分布式环境...
- 发布Web Service需要定义Service Endpoint Interface (SEI),使用`@WebService`和`@WebMethod`注解,然后通过`Endpoint.publish(url, SEIImplObject)`发布服务。 - 请求Web Service时,通常先根据WSDL文档生成...
在本学习笔记中,主要介绍了使用Apache Axis2框架来开发和测试Web Service的过程。Apache Axis2是Apache SOAP栈的一个实现,提供了简单且高效的Web Service开发工具。 首先,开发者需要在Eclipse集成开发环境中搭建...
【WebService学习笔记0001】 在IT领域,WebService是一种基于开放标准(如XML、SOAP、WSDL和UDDI)的互操作性技术,它允许不同系统间的应用程序通过网络进行通信。本学习笔记将围绕WebService的核心概念、工作原理...
分布式通信框架-webservice 分析笔记 本文对分布式通信框架-webservice 进行了深入的分析和讨论,涵盖了 webservice 的定义、特点、协议层、SOAP 协议、WSDL 文件、SEI 接口等方面。 一、webservice 的定义和特点 ...
本资料包包含了关于WebService的源码和笔记,旨在帮助学习者深入理解并实践WebService的相关技术。 源码部分可能涵盖以下几个关键点: 1. **SOAP消息结构**:源码中可能会展示如何构建一个SOAP请求或响应消息。...
【CXF Webservice初学笔记】 在IT行业中,Web服务是一种允许不同系统之间进行通信和交换数据的方法。Apache CXF是一个流行的开源框架,用于构建和部署Web服务。本笔记将探讨CXF Webservice的基础知识,包括其核心...
### OracleEBS-WebService开发笔记知识点总结 #### 一、概述 **OracleEBS-WebService开发笔记** 是一份详尽的文档,旨在介绍如何利用 WebService 技术进行 Oracle E-Business Suite (EBS) 的集成开发。该文档由 ...
【Web Service学习笔记——XFrie框架详解】 Web Service是一种通过网络进行通信的服务,它允许不同的应用程序之间进行数据交换,跨越了操作系统和编程语言的障碍。XFrie是一个轻量级、高性能的Java Web Service框架...
什么是webservice? 从案例(便民查询网站)分析如何实现? 使用socket实现。 使用jaxws开发webservice。 Webservice三要素 Wsdl(webservice使用说明书)重点掌握 Soap(jaxws开发webservice的传输协议)重点掌握...
webservice学习笔记1DTD是为了校验XML 2语法 3 schema