WebService CXF学习(进阶篇1):自定义对象传递(简单JavaBean对象)

这一节我们就CXF框架简单的JavaBean对象传递进行讲解。
第一步:创建传输的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,验证服务是否成功发布
第四步:运行客户端,验证。

你可能感兴趣的:(WebService CXF学习(进阶篇1):自定义对象传递(简单JavaBean对象))