基于契约优先开发用户管理小功能–实现wsdl
1、编写schema
2、编写wsdl
2.1、schema的引用
2.1.1、使用include 的引用
2.1.1、使用import的引用,可以在import中设置命名空间。
2.2、设置message
2.3、设置port’Type, 也就是方法
2.3.1、修改service的名称
name="user"
改为
name="UserService"
2.3.2、设置portType
2.4、binding
至此, wsdl已经完成,
契约已经定好, 通过定制好的wsdl生成, java文件
G:\JavaWeb\qyyx_01\WebContent\WEB-INF\wsdl>wsimport -d G:\JavaWeb\qyyx_01\src -keep -verbose user.wsdl
服务端
G:\JavaWeb\qyyx_01\WebContent\WEB-INF\wsdl>wsimport -d G:\JavaWeb\qyyx_01_client\src -verbose -keep http://localhost:9999/us?wsdl
查看IUserService中的list方法返回值,是User, 而不是List 这是wsdl文件的listResponse类型有问题。
public User list();
listResponse类型有问题。
解决:minOccurs=”0” maxOccurs=”unbounded”限定。
客户端测试
package com.chb.service.client;
import java.net.MalformedURLException;
import java.net.URL;
import javax.xml.namespace.QName;
import com.chb.service.IUserService;
import com.chb.service.User;
import com.chb.service.UserService;
/**
* wsimport -d G:\JavaWeb\qyyx_01_client\src -verbose -keep http://localhost:9999/us?wsdl
*/
public class MyClient {
public static void main(String[] args) throws MalformedURLException {
//创建访问的URL
URL url = new URL("http://localhost:9999/us?wsdl");
QName qName = new QName("http://service.chb.com/", "UserService");
UserService msis = new UserService(url, qName);
//获取IMyService, 简单多了
IUserService iMyService = msis.getUserservicePort();
User user = new User();
user.setUsername("wx");
user.setNickname("wuxin");
user.setPassword("111");
iMyService.add(user);
for (User u : iMyService.list()) {
System.out.println(u);
}
System.out.println(iMyService.login("chb", "123456"));
}
}