2011-07-02 30 views
0

有在使用的Apache XML RPC的Apache XML-RPC的怪異行爲

下面我一個問題困惑了我這麼多的代碼是

公共類AdderImpl實現加法{

private Object obj=new String("Obj1"); 

public int add(int pNum1, int pNum2) { 

    obj="Changed"; 

    return pNum1 + pNum2; 
    } 

public Object get(){ 

     return this.obj; 
} 

}

當我從客戶端調用方法時,Object值仍然是Obj1,而不是「已更改」

我怎樣才能得到改變obj的價值

客戶:

公共類客戶{

public static void main(String [] args) throws Exception 
{ 

    XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl(); 
    config.setServerURL(new URL("http://127.0.0.1:8080/xmlrpc")); 
    config.setEnabledForExtensions(true); 
    config.setConnectionTimeout(60 * 1000); 
    config.setReplyTimeout(60 * 1000); 

    XmlRpcClient client = new XmlRpcClient(); 

    client.setTransportFactory(
      new XmlRpcCommonsTransportFactory(client)); 

    client.setConfig(config); 

// make a call using dynamic proxy 
    ClientFactory factory = new ClientFactory(client); 
    Adder adder = (Adder) factory.newInstance(Adder.class); 
    int sum = adder.add(2, 4); 
    System.out.println("2 + 4 = " + sum); 

    System.out.println(adder.get()==null?true:false); 

    System.out.println(adder.get().toString()); 




} 

}

在此先感謝

回答

1

一個新的處理得到的每次創建。要獲得你想你有以下幾種選擇行爲:

  1. 將值寫入到數據庫/文件(即持久性存儲)和讀/從那裏寫。
  2. 使字段靜態,即

    private static Object obj = new String(「Obj1」);

希望有所幫助。