开发者

The weird behavior of Apache XML-RPC

There is a issue confused me so much when I using Apache XML RPC

Below is the code

public class AdderImpl implements Adder{

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

public int add(int pNum1, int pNum2) {

    obj="Changed";

    return pNum1 + pNum2;
  }

 public Object get(){

      return this.obj;
 }

}

when I call the method from the client side the Object value is still Obj1, not the "Changed"

How can I get the changed the value of the obj

Client:

public class Client {

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().开发者_JAVA百科toString());




}

}

Thanks in advance


A new handler get's created each time. To obtain the behaviour you want you have the following options:

  1. Write the value to a database/file (i.e. persistence storage) and read/write it from there.
  2. Make the field static, i.e.

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

Hope that helps.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜