您的位置:首页 > 编程语言 > Java开发

Axis2 java WebServices开发三POJO

2009-11-08 23:27 302 查看
环境JDK1.5

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: