WebService体系之——JavaBean的传递
WebService体系之——JavaBean的传递
摘要:相比上篇笔记、这篇是实现使用webservice接口来实现JavaBean的传递。
一简介:
主要搭建的步骤:
1、 到apache的cxf官网上下载相应的jar包。
2、 建立一个java工程、将下载的jar包引入到项目中。
3、 创建JavaBean。
4、 创建服务端功能接口。
5、 创建实现服务端功能接口的具体类。
6、 发布服务接口。
7、 创建测试类、充当客户端调用服务端提供的功能、获取服务调用服务端提供的服务(具体点就是调用服务端提供的方法)。
二:同一个项目时具体步骤及代码
1、创建java项目、引入jar包、方便起见就直接把jar包(除endorsed文件夹下的之外)全部引入即可下载之后的包中我们还可以发现有自带的spring的包、这样我们在使用spring集成它的时候就方便很多了、这里先不提集成。后面会补充jar和项目结构图。
2、创建JavaBean——UserInfo:
package com.chy.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-指定XML根元素名称(可选) * @XmlAccessorType-控制属性或方法序列化 , 四种方案: * FIELD-对每个非静态,非瞬变属性JAXB工具自动绑定成XML,除非注明XmlTransient * NONE-不做任何处理 * PROPERTY-对具有set/get方法的属性进行绑定,除非注明XmlTransient * PUBLIC_MEMBER -对有set/get方法的属性或具有共公访问权限的属性进行绑定,除非注 明XmlTransient * @XmlType-映射一个类或一个枚举类型成一个XML Schema类型 * */ @XmlRootElement(name="userInfo") @XmlAccessorType(XmlAccessType.FIELD) @XmlType(propOrder={"userName", "age"}) public class UserInfo { private String userName; private int age; public UserInfo(String userName, int age) { super(); this.userName = userName; this.age = age; } public UserInfo() { super(); } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String toString(){ return "user name: " + userName + " age: " + age; } }
3、创建服务端接口:注意别忘了在服务端接口类级别上加上@WebService ! UserService代码:
package com.chy.ws.service; import javax.jws.WebService; import com.chy.ws.model.UserInfo; @WebService//切记 别丢了! public interface UserService { public UserInfo getUserInfo(String userName, int age); }
4、创建实现服务端功能接口的具体类——UserServiceImpl代码:
package com.chy.ws.service; import com.chy.ws.model.UserInfo; public class UserServiceImpl implements UserService { @Override public UserInfo getUserInfo(String userName, int age) { return new UserInfo(userName, age); } }
5、发布服务接口——WebServiceServer代码:
package com.chy.ws.server; import org.apache.cxf.jaxws.JaxWsServerFactoryBean; import com.chy.ws.service.UserService; import com.chy.ws.service.UserServiceImpl; public class WebServiceUserInfo { public WebServiceUserInfo(){ //create a factory for create a web service interface JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean(); //release the web service factory.setAddress("http://localhost:8080/userinfoservice"); //register the web service factory.setServiceClass(UserService.class); factory.setServiceBean(new UserServiceImpl()); factory.create(); //another method to release the web service //Endpoint.publish("http://localhost:8080/userinfoservice", new UserServiceImpl()); } public static void main(String[] args) { new WebServiceUserInfo(); System.out.println("Server ready..."); try { Thread.sleep(1000*300);//休眠五分分钟,便于测试 } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("Server exit..."); System.exit(0); } }
6、通过浏览器访问地址:http://localhost:8080/userinfoservice?wsdl 若有结果则发布成功!
7、测试类——WebServiceUserInfoClient代码:
package com.chy.ws.client; import org.apache.cxf.jaxws.JaxWsProxyFactoryBean; import com.chy.ws.model.UserInfo; import com.chy.ws.service.UserService; public class WebServiceUserInfoClient { public static void main(String[] args) { JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); factory.setAddress("http://localhost:8080/userinfoservice"); factory.setServiceClass(UserService.class); UserService userService = (UserService) factory.create(); System.out.println("invoke userinfo webservice..."); // 测试返回JavaBean对象的 UserInfo user = userService.getUserInfo("vicky", 23); System.out.println(user.toString()); } }
三:不同项目时客户端搭建具体步骤及代码
1、创建一个java项目、引入与服务端相同的jar包。
2、创建JavaBean——UserInfo(注意一定要和服务器中的JavaBean是相同的包名和内容、可直接将服务端的复制过来)。
3、创建服务端功能接口(直接将服务端的java代码复制到客户端、注意:完整路径名一定要一样、及包名完全相同)。
4、创建测试类来测试服务——UserInfoClient代码:
package com.chy.ws.client; import org.apache.cxf.jaxws.JaxWsProxyFactoryBean; import com.chy.ws.service.UserService; public class UserInfoClient { public static void main(String[] args) { JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); factory.setAddress("http://localhost:8080/userinfoservice"); factory.setServiceClass(UserService.class); UserService userService = (UserService) factory.create(); System.out.println("invoking web service..."); System.out.println("user info :" + userService.getUserInfo("chy", 22).toString()); System.exit(0); } }
四:补充——项目结构图及jar包
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。