怎样定义良好的java写webservice接口口

使用axis怎么做webservice接口
请教各位,我用axis做的webservice接口怎么融合到别的javaweb项目中,现在我只是单独做了一个接口给一份Webservice接口通用实现!! - small.ming - 博客园
  看到许多中小项目的webservice接口的源代码,不禁有个吐槽的冲动。除了会用CXF,Axis2等神级框架,其他的懒得动了,都是Ctrl+V,Ctrl+C,把其他模块的Request,Response贴过来。一旦增加某个特性,不得不在所有Request,Response遨游一遍。早知今日,何必当初呢。
  写一个好的Weservice Interface,关键是要多多总结。除了有Request,Response之外,还有很多。总结如下有:
    Request:webservice的输入。
    Response:webservice输出。
    DataRsponse:带结果集的webservice输出。
    ResultData:结果集,不同的interface,其ResultData不一样。
    ReslutInfo:描述调用请求成功或者失败的对象。
    WebServiceTemplate:模板类,定义如何调用下层函数,如何处理异常错误的流程
    ResultDataCallback:回调类,与template配合,适用【返回结果集】操作,比如【获取用户信息】,【下订单】
    ResultCallback:回调类,与Template配置,适用于【不返回带结果集的接口,比如【修改用户名】
    ResponseFactory:用来组装 webservice消息 的工厂类。
    ResultInfoFactory:用来处理异常信息的 工厂类,这个一个接口,为它实现一个默认实例吧。
  有了这些小弟们,任何webservice接口的定义都能轻易搞定,不信我举个例子给你,咱们以【加法】为例!
  AddRequest:
public class AddRequest extends Request{
private int
private int
public int getAdd() {
public void setAdd(int add) {
this.add =
public int getAdded() {
public void setAdded(int added) {
this.added =
  AddResonse:
public class AddResponse extends DataResponse&AddResultData&{
private AddResultData resultD
public AddResultData getResultData() {
return resultD
public void setResultData(AddResultData resultData) {
this.resultData = resultD
  AddResultData:
public class AddResultData implements ResultData{
private int
public AddResultData(int sum) {
this.sum =
public AddResultData() {
public int getSum() {
public void setSum(int sum) {
this.sum =
  一个简单的webservice接口:
public class Soap {
public AddResponse add(final AddRequest request){
return WebServiceTemplate.doResult(new ResultDataCallback&AddRequest,AddResponse,AddResultData&(){
public AddResultData done() throws Exception {
return new AddResultData(request.getAdd()+request.getAdded());
public AddResponse getRsp() {
return new AddResponse();
  一个简单的TestCase测试:
public class TestSoap {
public void testAdd(){
AddRequest add = new AddRequest();
add.setAdd(1);
add.setAdded(2);
Soap soap = new Soap();
AddResponse rsp =soap.add(add);
assertEquals(3,rsp.getResultData().getSum());
assertEquals("0",rsp.getResultInfo().getResultCode());
assertEquals("success",rsp.getResultInfo().getResultDesc());
  虽然这些很简单,但是能够解决80%的问题。剩下20%还要根据实际情况来定。况且,这些代码在你的手中还有持续改优化的空间。千万不要做一个爱Copy的孩子。
  相关的代码附件地址:【/MartinChen999/webservice.rar】2014年10月 Java大版内专家分月排行榜第二2014年9月 Java大版内专家分月排行榜第二2014年8月 Java大版内专家分月排行榜第二
2016年1月 Java大版内专家分月排行榜第三2014年12月 Java大版内专家分月排行榜第三2014年11月 Java大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。WebService可以定义接口吗? - ITeye问答
可不可以在服务端用WebService定义接口,让客户端去实现,然后再把结果返回到服务端呢??
比如我在服务端有保存用户的操作,想让客户去实现,客户可能是.net的,
如果都是JAVA的话我就可以给客户端包含接口的JAR包,但如果是.NET的话,我想能不能用WebService把接口传给它呢??
问题补充:liukai 写道不管用的什么语言 只要你在服务端给出了一个WSDL的接口 客户端都能调用的
我意思是我能不能在服务端定义一个接口,如:
public interface Test {
public void save(String userName);
没有实现类。
然后把它发布为wsdl,然后我的.net客户去实现这个接口。
可以这样做吗?
采纳的答案
你还没有明白WebService的用处,WebService是主机提供给客户端的API接口,客户端只能调用,向主机传输xml文件,不存在实现的问题。你发布一个Save功能的WebService服务,就要实现Save的功能,比如说向数据库插入一条记录或者修改一条记录,这个Save功能还是你实现的,只不过允许客户端调用,客户端提供了数据使用你这个Save功能的WebService。
所以你不能只定义一个接口给客户端,客户端是无法实现的。
只要你服务端定义了一个接口 并暴露他
不管有没有实现类,客户端就可以实现他
.net我不熟悉 但是我看搞.net的同事是直接用webservice什么东西直接调用接口就可以了
不管用的什么语言 只要你在服务端给出了一个WSDL的接口 客户端都能调用的
已解决问题
未解决问题

我要回帖

更多关于 vb调用webservice接口 的文章

 

随机推荐