Java 每次调用后都有不同的web服务对象

Java 每次调用后都有不同的web服务对象,java,web-services,jakarta-ee,soap,Java,Web Services,Jakarta Ee,Soap,我是JavaEE和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

我是JavaEE和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对象?

。为了保持请求之间的状态,您必须持久化数据(在文件、数据库等中)。

您是对的,JAX-WS web服务默认是无状态的,您不能依赖违反此前提的东西。使用不同的方法存储这些值。如果你真的想按照帖子中的说明去做,你可以阅读这份文件