0

我正在使用 Java Web 服务

@WebService()
public class myWebService {

    /**
     * Web service operation
     */
    MyClass Obj ;

    @WebMethod(operationName = "webmethod1")
    @Oneway
    public void webmethod1(@WebParam(name = "serailNo") String serailNo) {

        obj = new MyClass();
        //do some operations on obj;

    }

    /**
     * Web service operation
     */
    @WebMethod(operationName = "webmethod2")
    public void webmethod2() {

        //do some operations on obj after doing intial operations in web method1

    }
}

我无法在 webmethod2 中访问 obj。它得到一个空指针异常。作为一个细节:我想创建一个对象。该对象应该可以通过所有 Web 方法访问。这样,webmethod1 将对 obj 进行初始操作,随后的 web method2 将使用相同的 obj。我怎样才能做到这一点

4

2 回答 2

1

如果您正在创建一个全新的对象,您可以做的是让您webmethod1返回它创建的任何对象,然后webmethod2将相同的对象作为参数。

另一种选择是webmethod2接受serialNo参数并检查obj变量是否不为空。如果是,它将webmethod1通过传递相同的序列号来调用它,并创建对象以便它可以处理一些事情。

于 2012-06-20T06:08:32.087 回答
0

你得到一个空指针的原因是因为 web 服务不是有状态的,即在第二次调用期间对象不存在可以创建有状态的网络服务,但这取决于网络服务的类型和运行它的服务器......

正如 npinti 提到的,您可以将对象与服务一起发送。尽管这可能不利,例如如果对象很大。

您可以在服务器上创建一个本地缓存,其中包含所有创建的对象,并使用序列号映射它们。

于 2012-06-20T06:19:37.463 回答