Hello,

I am trying to maintain state between a JSE endpoint and a servlet that acts as 
a client. 

Here is the code for the client:

  | /*
  |  * addClient.java
  |  *
  |  * Created on May 22, 2006, 8:44 PM
  |  */
  | 
  | package pack;
  | 
  | import java.io.*;
  | import java.net.*;
  | 
  | import javax.servlet.*;
  | import javax.servlet.http.*;
  | import javax.xml.rpc.Stub;
  | 
  | /**
  |  *
  |  * @author julien
  |  * @version
  |  */
  | public class AddClient extends HttpServlet {
  |     
  |     /** Processes requests for both HTTP <code>GET</code> and 
<code>POST</code> methods.
  |      * @param request servlet request
  |      * @param response servlet response
  |      */
  |     protected void processRequest(HttpServletRequest request, 
HttpServletResponse response)
  |     throws ServletException, IOException {
  |         response.setContentType("text/html;charset=UTF-8");
  |         PrintWriter out = response.getWriter();
  |         try { // This code block invokes the add operation on web service
  |             int sum = getAdderWebServiceSEIPort().add(4);
  |             out.println("<html>");
  |             out.println("<head>");
  |             out.println("<title>Servlet addClient</title>");
  |             out.println("</head>");
  |             out.println("<body>");
  |             out.println("<h1>Servlet addClient at " + sum + "</h1>");
  |             out.println("</body>");
  |             out.println("</html>");
  |             out.close();
  |             
  |         } catch(java.rmi.RemoteException ex) {
  |             // TODO handle remote exception
  |         } catch(Exception ex) {
  |             // TODO handle custom exceptions here
  |         }
  |     }
  |     
  |     // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. 
Click on the + sign on the left to edit the code.">
  |     /** Handles the HTTP <code>GET</code> method.
  |      * @param request servlet request
  |      * @param response servlet response
  |      */
  |     protected void doGet(HttpServletRequest request, HttpServletResponse 
response)
  |     throws ServletException, IOException {
  |         processRequest(request, response);
  |     }
  |     
  |     /** Handles the HTTP <code>POST</code> method.
  |      * @param request servlet request
  |      * @param response servlet response
  |      */
  |     protected void doPost(HttpServletRequest request, HttpServletResponse 
response)
  |     throws ServletException, IOException {
  |         processRequest(request, response);
  |     }
  |     
  |     /** Returns a short description of the servlet.
  |      */
  |     public String getServletInfo() {
  |         return "Short description";
  |     }
  |     // </editor-fold>
  |     
  |     private pack.AdderWebService getAdderWebService() {
  |         pack.AdderWebService adderWebService = null;
  |         try {
  |             javax.naming.InitialContext ic = new 
javax.naming.InitialContext();
  |             adderWebService = (pack.AdderWebService) 
ic.lookup("java:comp/env/service/AdderWebService");
  |             
  |         } catch(javax.naming.NamingException ex) {
  |             ex.printStackTrace();
  |         }
  |         return adderWebService;
  |     }
  |     
  |     private pack.AdderWebServiceSEI getAdderWebServiceSEIPort() {
  |         pack.AdderWebServiceSEI adderWebServiceSEIPort = null;
  |         try {
  |             Stub stub;
  |             adderWebServiceSEIPort = 
getAdderWebService().getAdderWebServiceSEIPort();
  |             stub = (Stub)adderWebServiceSEIPort;
  |             stub._setProperty(javax.xml.rpc.Stub.SESSION_MAINTAIN_PROPERTY, 
true);
  |             adderWebServiceSEIPort= (pack.AdderWebServiceSEI)stub;
  |         } catch(javax.xml.rpc.ServiceException ex) {
  |             ex.printStackTrace();
  |         }
  |         return adderWebServiceSEIPort;
  |     }
  | }
  | 
  | 

and here is the code for the JSE endpoint:


  | package pack;
  | 
  | import javax.servlet.http.HttpSession;
  | import javax.servlet.http.HttpSessionEvent;
  | import javax.servlet.http.HttpSessionListener;
  | import javax.xml.rpc.ServiceException;
  | import javax.xml.rpc.handler.soap.SOAPMessageContext;
  | import javax.xml.rpc.server.ServiceLifecycle;
  | import javax.xml.rpc.server.ServletEndpointContext;
  | 
  | 
  | /**
  |  * This is the implementation bean class for the AdderWebService web 
service.
  |  * Created May 22, 2006 8:30:25 PM
  |  * @author julien
  |  */
  | public class AdderWebServiceImpl implements AdderWebServiceSEI, 
ServiceLifecycle{
  |     
  |     ServletEndpointContext endptCtx;
  |     SOAPMessageContext msgCtx;
  |     
  |     /**
  |      * Web service operation
  |      */
  |     public int add(int number) throws java.rmi.RemoteException {
  |         System.out.println("add called");
  |         
  |          HttpSession session = endptCtx.getHttpSession();
  |          System.out.println("SESSION ID "+session.getId());
  |         
  |         if(session !=null){
  |             
  |             System.out.println("session not null");
  |             String idFromClient = msgCtx.getProperty("id").toString(); 
System.out.println("----"+idFromClient);
  |             String id = (String)session.getAttribute("id"); 
System.out.println("----"+id);
  |             
  |             if (id!= null && idFromClient.equals(id)){
  |                 System.out.println("nested non null");
  |                 int total = (Integer)session.getAttribute("total") + number;
  |                 session.setAttribute("total",total);
  |                 return  total;
  |             } else{
  |                 System.out.println("nested null");
  |                 session.setAttribute("id", idFromClient);
  |                 int total = number;
  |                 session.setAttribute("total",total);
  |                 System.out.println("here"+session.getAttribute("id"));
  |                 return total;
  |             }
  |             
  |         } else{
  |             System.out.println("session null");
  |             return 0;
  |         }
  |     }
  |     
  |     public void init(Object context) throws ServiceException {
  |         System.out.println("init called");
  |         endptCtx = (ServletEndpointContext) context;
  |         msgCtx = (SOAPMessageContext)endptCtx.getMessageContext();
  |     }
  |     
  |     public void destroy() {
  |         System.out.println("destroy called");
  |     }
  | 
  |    
  |     
  | }
  | 

Here is the output from the console:


  | 1:53:47,692 INFO  [AxisService] Web Service deployed: 
http://ordinateur:8080/WebApplicationFiveEndpoint/AdderWebService
  | 01:53:48,720 INFO  [STDOUT] session Created
  | 01:53:57,708 INFO  [STDOUT] init called
  | 01:53:57,769 INFO  [STDOUT] [EMAIL PROTECTED]:message-id: null]]
  | 01:53:57,769 INFO  [STDOUT] 123456789
  | 01:53:57,774 INFO  [STDOUT] add called
  | 01:53:57,774 INFO  [STDOUT] session Created
  | 01:53:57,775 INFO  [STDOUT] SESSION ID B15EEC235A416BE62D36192EAEB8AA88
  | 01:53:57,775 INFO  [STDOUT] session not null
  | 01:53:57,776 INFO  [STDOUT] ----123456789
  | 01:53:57,776 INFO  [STDOUT] ----null
  | 01:53:57,776 INFO  [STDOUT] nested null
  | 01:53:57,778 INFO  [STDOUT] here123456789
  | 01:53:57,792 INFO  [STDOUT] destroy called
  | 01:54:04,027 INFO  [STDOUT] init called
  | 01:54:04,042 INFO  [STDOUT] [EMAIL PROTECTED]:message-id: null]]
  | 01:54:04,042 INFO  [STDOUT] 123456789
  | 01:54:04,043 INFO  [STDOUT] add called
  | 01:54:04,044 INFO  [STDOUT] session Created
  | 01:54:04,044 INFO  [STDOUT] SESSION ID 1C0770F2DF80971FC59F54DE3CCBBCE0
  | 01:54:04,044 INFO  [STDOUT] session not null
  | 01:54:04,044 INFO  [STDOUT] ----123456789
  | 01:54:04,045 INFO  [STDOUT] ----null
  | 01:54:04,045 INFO  [STDOUT] nested null
  | 01:54:04,045 INFO  [STDOUT] here123456789
  | 01:54:04,082 INFO  [STDOUT] destroy called
  | 

As you can see, I have enabled session maintenance and still it does not work. 
FYI, I use Jboss 4.0.3. Can anyone help please??

Thanks in advance,

Julien.

View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3945516#3945516

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3945516


-------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
JBoss-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jboss-user

Reply via email to