JAVA调用webservice,当你刚开始接触的时候你会觉得它是一个恶梦,特别是没有一个统一的标准实现,比起.net的那些几步就可以完成的webservice实现,我们看着JAVA的实现真是伤心啊。但就算是伤心,我们也还是要完成的。JAVA也不乏比较好的实现,如xfire,jersey,CXF。 这里我们就一起来看一下xfire的实现。
1)首先,当然是要下包啦,这个普通人都知道。http://xfire.codehaus.org/Download可以到这里去下,可以下all也可以下distribution。但建议还是下all的,免得一堆奇怪的问题搞得你一点信心都没了。
包弄下来了那么怎么办呢?放进项目里啊。貌似废话,但很多人就是不知道下下来要干什么用。
建一个新项目,比较我的是xfireWebservice,这里当然是建web项目啦。
我这里是把它所有的包都放到这里面了,毕竟我们写例子,就没必要挑三拣四了,随便点吧,如果想看看异常信息的朋友可以不把全部放进去,慢慢地加入,以后遇到错误也好排除,但我们这里就不那么做了,毕竟一般缺少什么类那些的异常没什么难看的,大家可以自己排除。
2)我们首先来了解一下xfire与其他webservice框架的不同,它最大的不同之处在于它需要一个接口,而且如果需要用xfire来调用相应的webservice必须知道接口的定义,感觉这里有点限制了。但除了这点,xfire调用webservice,那是相当的方便,就跟调用本地方法一样。我们直接来看例子:
首先是最重要的接口:
public interface IReaderService {
public Reader getReader(String name,String password);
public List getReaders();
}
有接口,当然也要有实现类,不然接口就没什么意义了。
public class ReaderService implements IReaderService{
public Reader getReader(String name,String password) {
return new Reader(name,password);
}
public List getReaders(){
List readerList = new ArrayList();
readerList.add(new Reader("shun1","123"));
readerList.add(new Reader("shun2","123"));
return readerList;
}
}
也看一下JAVABEAN,Reader类:
public class Reader{
private static final long serialVersionUID = 1L;
private String name;
private String password;
public Reader(){}
public Reader(String name,String password) {
this.name = name;
this.password = password;
}
//Get/Set方法省略
public String toString(){
return "Name:"+name+",Password:"+password;
}
}
注意,我们这里的Reader类实现了Serializable接口,为什么呢?这里,首先我们需要了解webservice的原理,对于JAVA来讲,如果我们需要在互联网上传对象,很多人当然会想到序列化,对了,这里就是序列化,因