跨Web方法+ java的对象

时间:2012-06-20 06:03:36

标签: java web-services

我正在使用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方法2将使用相同的obj。 我怎样才能实现这个目标

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

您获得nullpointer的原因是因为Web服务不是有状态的,即对象在第二次调用期间存在。可以创建有状态的Web服务,但这取决于您运行它的Web服务和服务器的类型......

正如npinti所提到的,您可以将该对象与服务一起发送。虽然这可能不太有利,例如,如果对象很大。

您可以在服务器上创建包含所有已创建对象的本地缓存,并使用serialNo映射它们。