Axis2 java WebServices开发三POJO
2009-11-08 23:27
302 查看
环境JDK1.5
Eclipse 3.2
直接上代码:如果没有配置好环境请参看前两篇日志
服务器端代码
User类:
UserDAO
此类中的所有方法都加了返回值,因为在抛出异常的时候我调试的代码发生异常java.lang.UnsupportedOperationException: An access occurred that is not valid 如果换用RunTimeException则不会出现异常 操作正常进行 但是无法正常获取异常信息,有兴趣可以修改UserService类中的throw new RemoteException改成RunTimeException然后将其方法改为void则正常运行 但是信息无法获取。
UserService类:
UserContainer类(代替DB)
生成UserService.aar服务器端service文件(参照上一篇日志)
启动tomcat检查UserService是否正常启动,如果正常启动编写客户端代码如下:
客户端中要将service端得user类加入classpath中
运行结果如下:
userid not exists
null
Update User Success
a276202460 男 200岁
Delete user Success
userid not exists
userid not exists
richqin 男 24岁
csdn 男 24岁
java 男 24岁
j2ee 男 24岁
至于为什么void方法在抛出非运行时异常的情况下发生java.lang.UnsupportedOperationException的问题 查了国外很多网站不是没有抛异常出现同样的问题就是说service.xml文件中定义了 <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/>
去掉此option还是出现同样的问题,如果哪位同仁解决了此问题 ,麻烦告知小弟.Thanks
Eclipse 3.2
直接上代码:如果没有配置好环境请参看前两篇日志
服务器端代码
User类:
/* *Class User.java *Create Date: 2009-11-4 *Author:a276202460 */ package com.axis.pojo.test; public class User implements java.io.Serializable{ public boolean equals(Object obj) { if (obj == null) { return false; } if (obj instanceof User) { User user = (User) obj; if (user.getUserid() == this.getUserid()) { return true; } } return false; } public String toString() { return (username == null ? "" : username) + " " + (sex == null ? "" : sex) + " " + age + "岁"; } public User(){ } int userid; String username; int age; String sex; public User(int userid, String username, int age, String sex) { this.setUserid(userid); this.setUsername(username); this.setAge(age); this.setSex(sex); } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getUserid() { return userid; } public void setUserid(int userid) { this.userid = userid; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } }
UserDAO
/* *Class UserDAO.java *Create Date: 2009-11-4 *Author:a276202460 */ package com.axis.pojo.test.dao; import java.util.List; import com.axis.pojo.test.User; public interface UserDAO { public String addUser(User user) throws java.rmi.RemoteException; public User getUser(int userid) throws java.rmi.RemoteException; public String deleteUser(User user) throws java.rmi.RemoteException ; public String updateUser(User user) throws java.rmi.RemoteException ; public List getAllUser() throws java.rmi.RemoteException; }
此类中的所有方法都加了返回值,因为在抛出异常的时候我调试的代码发生异常java.lang.UnsupportedOperationException: An access occurred that is not valid 如果换用RunTimeException则不会出现异常 操作正常进行 但是无法正常获取异常信息,有兴趣可以修改UserService类中的throw new RemoteException改成RunTimeException然后将其方法改为void则正常运行 但是信息无法获取。
UserService类:
/* *Class UserService.java *Create Date: 2009-11-4 *Author:a276202460 */ package com.axis.pojo.test.dao.impl; import java.rmi.RemoteException; import java.util.List; import com.axis.pojo.test.User; import com.axis.pojo.test.dao.UserContainer; import com.axis.pojo.test.dao.UserDAO; import com.axis.pojo.test.dao.Exception.UserServiceException; public class UserService implements UserDAO{ public String addUser(User user) throws java.rmi.RemoteException{ if(UserContainer.userlist.indexOf(user) != -1){ throw new RemoteException("重复的userid"); } UserContainer.userlist.add(user); return null; } public String deleteUser(User user) throws java.rmi.RemoteException { if(UserContainer.userlist.indexOf(user) == -1){ throw new RemoteException("userid not exists"); } UserContainer.userlist.remove(user); return null; } public List getAllUser() throws java.rmi.RemoteException { return UserContainer.userlist; } public User getUser(int userid) throws java.rmi.RemoteException { User user = new User(); user.setUserid(userid); int i = UserContainer.userlist.indexOf(user); if(i == -1){ throw new RemoteException("userid not exists"); } return (User)UserContainer.userlist.get(i); } public String updateUser(User user) throws java.rmi.RemoteException{ int i = UserContainer.userlist.indexOf(user); if(i == -1){ throw new RemoteException("userid not exists"); } UserContainer.userlist.set(i, user); return null; } }
UserContainer类(代替DB)
/* *Class UserContainer.java *Create Date: 2009-11-4 *Author:a276202460 */ package com.axis.pojo.test.dao; import java.util.ArrayList; import java.util.List; import com.axis.pojo.test.User; public class UserContainer { public static List<User> userlist = new ArrayList<User>(); static{ userlist.add(new User(1,"a276202460",24,"男")); userlist.add(new User(2,"richqin",24,"男")); userlist.add(new User(3,"csdn",24,"男")); userlist.add(new User(4,"java",24,"男")); userlist.add(new User(5,"j2ee",24,"男")); } }
生成UserService.aar服务器端service文件(参照上一篇日志)
启动tomcat检查UserService是否正常启动,如果正常启动编写客户端代码如下:
客户端中要将service端得user类加入classpath中
/* *Class UserDao.java *Create Date: 2009-11-4 *Author:a276202460 */ package com.axis.pojo.test.client; import javax.xml.namespace.QName; import org.apache.axis2.AxisFault; import org.apache.axis2.addressing.EndpointReference; import org.apache.axis2.client.Options; import org.apache.axis2.rpc.client.RPCServiceClient; import com.axis.pojo.test.User; public class UserDao { public static final String NAME_SPACE = "http://impl.dao.test.pojo.axis.com"; public static void main(String[] s) { RPCServiceClient sc; try { sc = new RPCServiceClient(); Options opt = sc.getOptions(); EndpointReference endpoint = new EndpointReference( "http://localhost:8080/axis2/services/UserService"); opt.setTo(endpoint); User user = getUser(sc,0); System.out.println(user); user = getUser(sc,1); user.setAge(200); System.out.println(updateUser(sc,user)); System.out.println(getUser(sc,1)); System.out.println(deleteUser(sc,user)); System.out.println(deleteUser(sc,user)); System.out.println(updateUser(sc,user)); printAllUser(sc); } catch (AxisFault e) { e.printStackTrace(); } } public static String addUser(RPCServiceClient sc,User user){ String rs = "Add user Success"; QName optadduser = new QName(NAME_SPACE,"addUser"); Object[] adduserarg = new Object[]{user}; try { sc.invokeRobust(optadduser, adduserarg); } catch (Exception e) { rs = e.getMessage(); } return rs; } public static String deleteUser(RPCServiceClient sc,User user){ String rs = "Delete user Success"; QName optdeleteuser = new QName(NAME_SPACE,"deleteUser"); Object[] deleteuserarg = new Object[]{user}; try { sc.invokeRobust(optdeleteuser, deleteuserarg); } catch (Exception e) { rs = e.getMessage(); } return rs; } public static void printAllUser(RPCServiceClient sc){ QName optalluser = new QName(NAME_SPACE,"getAllUser"); Object[] alluserobj = new Object[]{}; try { Object[] result = sc.invokeBlocking(optalluser, alluserobj, new Class[]{User[].class}); if(result != null && result.length > 0){ User[] users = (User[])result[0]; for(int i = 0 ;users != null && i < users.length;i++){ System.out.println(users[i]); } } } catch (Exception e) { e.printStackTrace(); } } public static String updateUser(RPCServiceClient sc,User user){ String rs = "Update User Success"; QName optupdateuser = new QName(NAME_SPACE,"updateUser"); Object[] updateuserarg = new Object[]{user}; try { sc.invokeRobust(optupdateuser, updateuserarg); } catch (Exception e) { rs = e.getMessage(); } return rs; } public static User getUser(RPCServiceClient sc,int userid){ User user = null; QName optgetuser = new QName(NAME_SPACE,"getUser"); Object[] getuserarg = new Object[]{userid}; try { Object[] res = sc.invokeBlocking(optgetuser, getuserarg, new Class[]{User.class}); if(res != null && res.length > 0){ user = (User)res[0]; } } catch (Exception e) { System.out.println(e.getMessage()); } return user; } }
运行结果如下:
userid not exists
null
Update User Success
a276202460 男 200岁
Delete user Success
userid not exists
userid not exists
richqin 男 24岁
csdn 男 24岁
java 男 24岁
j2ee 男 24岁
至于为什么void方法在抛出非运行时异常的情况下发生java.lang.UnsupportedOperationException的问题 查了国外很多网站不是没有抛异常出现同样的问题就是说service.xml文件中定义了 <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/>
去掉此option还是出现同样的问题,如果哪位同仁解决了此问题 ,麻烦告知小弟.Thanks
相关文章推荐
- Axis2 java WebServices开发三POJO (续)
- Axis2 java WebServices开发一
- Java web开发中的各种bean对应的术语(VO,PO,BO,QO, DAO,POJO,DTO)
- Java web开发中的各种bean对应的术语(VO,PO,BO,QO, DAO,POJO,DTO)
- Java web开发中的各种bean对应的术语(VO,PO,BO,QO, DAO,POJO,DTO)
- JAX-RS介绍——Java API forRESTful WebServices,JAX-RS的目标是Web Services开发(这与HTML Web应用不同)而Spring MVC的目标则是Web应用开发
- WebService从零到项目开发使用3—技术研究之Axis2 POJO开发Web服务
- 30分钟学会使用Spring Web Services基础开发
- JavaWeb之Servlet开发、HttpServlet开发
- ubuntu构建Java Web开发环境
- Java Web开发中Sping的总结和SSH配置
- Java Web开发环境配置
- 第五步 javaweb开发之Servlet
- 给予Java初学者的建议(JavaWeb/后台开发)
- openjweb1.8 java web应用快速开发平台操作手册
- Java Web 开发 优化点之一
- java web 开发乱码总结
- 采用axis2 pojo开发webservice要点
- javaweb开发jsp页面一次性保存多条数据,批量保存数据!
- java webservice 之Axis2 WebServices总结