我正在使用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。 我怎样才能实现这个目标
答案 0 :(得分:1)
如果您要创建一个全新的对象,那么您可以做的是让webmethod1
返回它创建的任何对象,然后让webmethod2
将该对象作为参数。
另一种选择是让webmethod2
接受serialNo
参数并检查obj
变量是否为空。如果是,它将通过传递相同的序列号来调用webmethod1
,并创建对象以便它可以处理。
答案 1 :(得分:0)
您获得nullpointer的原因是因为Web服务不是有状态的,即对象在第二次调用期间存在不。可以创建有状态的Web服务,但这取决于您运行它的Web服务和服务器的类型......
正如npinti所提到的,您可以将该对象与服务一起发送。虽然这可能不太有利,例如,如果对象很大。
您可以在服务器上创建包含所有已创建对象的本地缓存,并使用serialNo映射它们。