package calculator.service; import javax.annotation.Resource; import javax.jws.WebMethod; import javax.jws.WebService; import javax.xml.ws.WebServiceContext; import javax.xml.ws.soap.Addressing; import com.sun.xml.ws.developer.Stateful; import com.sun.xml.ws.developer.StatefulWebServiceManager; @WebService @Stateful @Addressing public class StatefulCalculator { public enum Operation {ADD,SUB,MUL,DIV}; @Resource private WebServiceContext wsContext; float val= 0; @WebMethod public float invokeOperation(Operation op, float num) { float curNum = val;//(Float) getSession().getAttribute("num"); System.out.println("Current num: "+curNum); switch (op) { case ADD: curNum +=num; break; case SUB: curNum -=num; break; case MUL: curNum *=num; break; case DIV: curNum /=num; break; } System.out.println("After op "+op+" "+num+": "+curNum); val=curNum; return curNum; } // either via a public static field public static StatefulWebServiceManager manager; }