第一步:创建传输的JavaBean对象(UserInfo)
package com.ws.model; import javax.xml.bind.annotation.XmlAccesstype; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlType; @XmlRootElement(name="UserInfo") @XmlAccessorType(XmlAccesstype.FIELD) @XmlType(propOrder={"userName","userAge"}) public class UserInfo { private String userName; private Integer userAge; public UserInfo(String name,Integer age){ this.userAge = age; this.userName = name; } public UserInfo(){ } // 添加geter/seter方法.. }
注解:@XmlRootElement-指定XML根元素名称(可选)
@XmlAccessorType-控制属性或方法序列化 , 四种方案:
FIELD-对每个非静态,非瞬变属性JAXB工具自动绑定成XML,除非注明XmlTransient
NONE-不做任何处理
PROPERTY-对具有set/get方法的属性进行绑定,除非注明XmlTransient
PUBLIC_MEMBER -对有set/get方法的属性或具有共公访问权限的属性进行绑定,除非注 明XmlTransient
@XmlType-映射一个类或一个枚举类型成一个XML Schema类型
第二步:创建webservices服务端接口和实现类
1、创建服务端接口类
package com.ws.services; import javax.jws.WebService; import com.ws.model.UserInfo; @WebService public interface IUserServices { public UserInfo getUserInfo(String userName,Integer userAge); }
2、创建服务端接口实现类
package com.ws.services.impl; import javax.jws.WebService; import com.ws.model.UserInfo; import com.ws.services.IUserServices; @WebService public class UserServicesImpl implements IUserServices { public UserInfo getUserInfo(String userName,Integer userAge) { return new UserInfo(userName,userAge); } }
3、创建服务端,并发布服务
package com.test; import javax.xml.ws.Endpoint; import org.apache.cxf.jaxws.JaxWsServerfactorybean; import com.ws.services.impl.UserServicesImpl; public class ServerTest { public Servertest(){ // 发布User服务接口 Endpoint.publish("http://localhost:8090/userInfoServices",new UserServicesImpl()); } public static void main(String[] args) { // 启动服务 new Servertest(); System.out.println("Server ready..."); try { Thread.sleep(1000*300);//休眠五分分钟,便于测试 } catch (InterruptedException e) { e.printstacktrace(); } System.out.println("Server exit..."); System.exit(0); } }
第三步:创建webservices客户端,并进行测试(这里只例举在客户端工程中的测试方法)
1、将服务端的JavaBean和Services接口类,copy到客户端工程中,且目录要一致
2、在客户端工程中,新建一个测试类测试
package com.ws.client; import org.apache.cxf.jaxws.JaxWsProxyfactorybean; import com.ws.model.UserInfo; import com.ws.server.IUserServices; public class UserTest { public static void main(String[] args) { //创建WebService客户端代理工厂 JaxWsProxyfactorybean factory = new JaxWsProxyfactorybean(); //注册WebService接口 factory.setServiceClass(IUserServices.class); //设置WebService地址 factory.setAddress("http://localhost:8090/userInfoServices"); IUserServices userServices = (IUserServices)factory.create(); System.out.println("invoke userinfo webservice..."); // 测试返回JavaBean对象的 UserInfo user = userServices.getUserInfo("vicky",23); System.out.println("UserName: "+user.getUserName()); System.out.println("UserAge : "+user.getUserAge()); System.exit(0); } }
第四步:运行webServices服务,在IE中输入http://localhost:8090/userInfoServices?wsdl,验证服务是否成功发布
第四步:运行客户端,验证。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。