1,wsimport
-d<目录>:参数是默认的,不写也有,
-s<目录>:生成.java文件,
-p<生成的新包名>:生成包
2,发布的类中必须有一个非静态,非私有的方法,否则报错。
3,开发时,soap1.2的客户端可以向soap1.2的服务端发请求,
Soap1.1的客户端可以向soap1.1的服务端发请求,
Soap1.1的客户端可以向soap1.2的服务端发请求,(向下兼容)
Soap1.2的客户端不可以想soap1.1的服务端发请求。
4,在WSDL文档中,portType标识的一般是接口,
一个标签的字标签一般是这个标签的方法。
例如<service>的字标签
Service表示的是一个类,可以new。他的字标签port标识的就是这个类中的一个方法,名为getMobileCodeWSSoap()。
5,jdk1.6只支持SOAP1.1,到了jdk1.7,就支持soap1.2了。
可以通过注解绑定SOAP类型。
在需要发布的类上添加注解:
@BindingType(javax.xml.ws.soap.SOAPBinding.SOAP11HTTP_BINDING)
上面注解绑定了SOAP1.1的规范。如果不加这个注释,默认使用SOAP1.1规范。
如果在jdk1.6的环境绑定SOAP1.2,会报错,“不能绑定SOAP1.2协议”。
如果要在jdk1.6环境下开发SOAP1.2,需要用到第三方框架。Cxf或xfire。
我们主要使用cxf。
不加注解的情况下运行,如何知道是使用SOAP1.1呢?
运行之后,在浏览器访问这个服务的WSDL,发现:
6,我们通常都是远程调用这个方法,访问对方的数据库,增删改查,获取信息。比如我们要获取一组用户的数据,需要用一个List集合来存储。获取单个用户,可以直接从这个List集合中获取。
例如:
private List<User> userList = new ArrayList<User>();
//获取一个用户。
public User getUser(int index){//根据用户传入的角标获取集合中的用户
if(index