这几天我在网上搜索了很多方法来解决这个问题,但还是没有解决。问题是这样的。我在 Eclipse Indigo 中实现了一个简单的 Web 服务,如下
package com.testvtfour.ws;
public class Customer {
private String name;
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
Web服务部分很完善。我使用 Axis2 作为 SOAP 引擎,使用 Tomcat 7 作为服务器。当我尝试使用此网络服务时出现问题。我在 eclipse 和 Axis2 中创建了 Web 服务客户端,自动生成“CusstomerCallBackHandler”和“CustomerStub”。以下是实现的客户端
package com.testvtfour.ws;
import java.rmi.RemoteException;
import com.testvtfour.ws.CustomerStub.SetName;
import com.testvtfour.ws.CustomerStub.GetNameResponse;
public class TestClient {
public static void main(String[] args)throws RemoteException{
CustomerStub stub = new CustomerStub();
com.testvtfour.ws.CustomerStub.SetName obj = new
com.testvtfour.ws.CustomerStub.SetName();
obj.setName("Grant");
stub.setName(obj);
com.testvtfour.ws.CustomerStub.GetNameResponse res = stub.getName();
System.out.println(res.get_return());
}
}
但总是打印“null”。这是为什么?我该如何解决这个问题? & 我想知道这种客户端更新的值可以在Android应用程序中显示。因为这是我项目的第二部分。请帮我。 谢谢。
最佳答案
Axis2 Web 服务通常是无状态的。这意味着 getName()
是在与调用 setName()
不同的实例上调用的,因此当您尝试时 name
为 null来检索它。
- 参见Axis2 Session Management关于如何处理 session 。
- 查看这个问题及其答案:Axis2 Session Managment
关于java - 创建 Java Web 服务客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9349420/