我是Java EE和SOAP的新手。我试图创建一个简单的Web服务应用程序及其客户端(环境:NetBeans 7.2.1 IDE,GlassFish Server 3.1,Java 1.6)。

Web服务代码:

package simplews;

import javax.jws.*;

@WebService(serviceName = "SimpleWebService")
public class SimpleWebService {

    String something = null;

    @WebMethod(operationName = "setSomething")
    @Oneway
    public void setSomething(@WebParam(name = "smth") String smth) {
        something = smth;
    }

    @WebMethod(operationName = "getSomething")
    public String getSomething() {
        return something;
    }

}


客户端应用程序代码:

package simpleclientapp;

import simplews.*;

public class SimpleClientApp {

    public static void main(String[] args) {

        SimpleWebService_Service service = new SimpleWebService_Service();
        SimpleWebService port = service.getSimpleWebServicePort();

        port.setSomething("trololo");
        String smth = port.getSomething();

        System.out.println(smth);
    }
}


不幸的是,客户端应用程序打印出了null。经过简短的调查,我意识到,在服务器端会为每个客户端调用创建一个新的SimpleWebService对象(听起来像无状态方法)。

怎么了为什么客户端端口在每次调用时都没有引用相同的WS对象?

最佳答案

Web services are stateless by nature。为了在请求之间保持状态,您必须保留数据(在文件,数据库等中)。

关于java - 每次调用后不同的Web服务对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13684449/

10-11 19:20
查看更多