在Web服务客户端上的包装

时间:2012-07-26 09:02:06

标签: java web-services client

我有一个返回webservice客户端的库。

客户端c = Clientlib.getclient();

现在我做的是我在它上面创建了一个包装器:

public class Myclient {

 private static Client c = ClientLib.getClient(); 
 private static instance = new MyClient();

 public static MyClient getInstance(){
  return instance;
 } 

 private Myclient(){
   //singleton
 }

 public Data getDate(Sting id){
  Data1 d1 = cleint.getData();
  convert d1 to Data and return data
 } 
}

这是正确的方法吗?我应该只创建一次Client的实例吗?

这种方法会有问题吗?如果两个线程调用getData方法怎么办? 同时。这种情况可能是因为这是一个基于Web的应用程序。

如果与服务器的连接断开并返回怎么办?我不认为这应该是一个问题,因为http是无国籍的。

1 个答案:

答案 0 :(得分:0)

一般来说,我认为包装器是个好主意。您可以从Web服务重建类,而不会影响其余的代码。还允许您执行其他操作,如缓存,安全性等。

如果您打算将 MyClient 作为单身人士,则客户端c 不需要是静态的。不是一件大事,但值得注意。

是否存在线程问题取决于 ClientLib.getClient()的实现。您可能需要进行一些阅读以确定是否允许您以多线程方式访问它,或者是否应该证明同步。通过包装客户端,您可以轻松地在一个位置同步访问。通常,Web服务应该可以从多个线程访问,它只是通过http。

进行的调用

我唯一可以建议的是在MyClient上添加一个接口,只是为了解耦使用这个类的任何东西。使测试更容易一些。