You are viewing a plain text version of this content. The canonical link for it is here.
Posted to soap-dev@ws.apache.org by sn...@apache.org on 2002/08/04 04:47:32 UTC

cvs commit: xml-soap/java/docs changes.html

snichol     2002/08/03 19:47:32

  Modified:    java/src/org/apache/soap/server/http
                        MessageRouterServlet.java RPCRouterServlet.java
               java/docs changes.html
  Log:
  Add the ability to suppress session creation per service by specifying
  <isd:option key="SessionRequired" value="false"/>
  within the isd:provider element in the deployment descriptor.
  
  Revision  Changes    Path
  1.35      +18 -2     xml-soap/java/src/org/apache/soap/server/http/MessageRouterServlet.java
  
  Index: MessageRouterServlet.java
  ===================================================================
  RCS file: /home/cvs/xml-soap/java/src/org/apache/soap/server/http/MessageRouterServlet.java,v
  retrieving revision 1.34
  retrieving revision 1.35
  diff -u -r1.34 -r1.35
  --- MessageRouterServlet.java	17 Jun 2002 04:08:39 -0000	1.34
  +++ MessageRouterServlet.java	4 Aug 2002 02:47:31 -0000	1.35
  @@ -71,6 +71,7 @@
   import org.apache.soap.util.*;
   import org.apache.soap.util.xml.*;
   import org.apache.soap.transport.*;
  +import org.apache.soap.encoding.soapenc.SoapEncUtils;
   
   /**
    * This servlet routes messages to the appropriate listener method.
  @@ -78,6 +79,7 @@
    * @author Sanjiva Weerawarana (sanjiva@watson.ibm.com)
    * @author Matthew J. Duftler (duftler@us.ibm.com)
    * @author Bill Nagy (nagy@watson.ibm.com)
  + * @author Scott Nichol (snichol@computer.org)
    */
   public class MessageRouterServlet extends HttpServlet {
     /*
  @@ -240,7 +242,7 @@
     {
       ServletConfig config = getServletConfig();
       ServletContext context = config.getServletContext ();
  -    HttpSession session = req.getSession ();
  +    HttpSession session;
       ServiceManager serviceManager =
         ServerHTTPUtils.getServiceManagerFromContext (context, configFilename);
       int status;
  @@ -256,7 +258,6 @@
       try {
         try {
           reqCtx.setProperty( Constants.BAG_HTTPSERVLET, this );
  -        reqCtx.setProperty( Constants.BAG_HTTPSESSION, session );
           reqCtx.setProperty( Constants.BAG_HTTPSERVLETREQUEST, req );
           reqCtx.setProperty( Constants.BAG_HTTPSERVLETRESPONSE, res );
   
  @@ -291,6 +292,21 @@
           dd = serviceManager.query (targetID);
           reqCtx.setProperty( Constants.BAG_DEPLOYMENTDESCRIPTOR, dd );
     
  +        // Get the session, but only create a new session if the scope
  +        // is session or there is no deployment descriptor option
  +        // SessionRequired with a value of false (i.e. the desire to
  +        // suppress sessions must be explicitly indicated for backward
  +        // compatibility).
  +        Hashtable props = dd.getProps();
  +        String sessionRequired = props != null ? (String) props.get("SessionRequired") : null;
  +        session = req.getSession(
  +                        dd.getScope() == DeploymentDescriptor.SCOPE_SESSION ||
  +                        sessionRequired == null ||
  +                        SoapEncUtils.decodeBooleanValue(sessionRequired)
  +                    );
  +        if (session != null)
  +          reqCtx.setProperty(Constants.BAG_HTTPSESSION, session);
  +
           Provider provider;
           if ( dd.getProviderType() == DeploymentDescriptor.PROVIDER_JAVA ) {
             // Handle Java based services
  
  
  
  1.39      +19 -3     xml-soap/java/src/org/apache/soap/server/http/RPCRouterServlet.java
  
  Index: RPCRouterServlet.java
  ===================================================================
  RCS file: /home/cvs/xml-soap/java/src/org/apache/soap/server/http/RPCRouterServlet.java,v
  retrieving revision 1.38
  retrieving revision 1.39
  diff -u -r1.38 -r1.39
  --- RPCRouterServlet.java	17 Jun 2002 04:08:39 -0000	1.38
  +++ RPCRouterServlet.java	4 Aug 2002 02:47:31 -0000	1.39
  @@ -73,6 +73,7 @@
   import org.apache.soap.util.xml.*;
   import org.apache.soap.transport.EnvelopeEditor;
   import org.apache.soap.transport.EnvelopeEditorFactory;
  +import org.apache.soap.encoding.soapenc.SoapEncUtils;
   
   /**
    * This servlet routes RPC requests to the intended method of
  @@ -85,6 +86,7 @@
    * @author Kevin J. Mitchell (kevin.mitchell@xmls.com)
    * @author Wouter Cloetens (wcloeten@raleigh.ibm.com)
    * @author Bill Nagy (nagy@watson.ibm.com)
  + * @author Scott Nichol (snichol@computer.org)
    */
   public class RPCRouterServlet extends HttpServlet {
     /*
  @@ -273,7 +275,7 @@
       throws ServletException, IOException {
       ServletConfig config = getServletConfig();
       ServletContext context = config.getServletContext ();
  -    HttpSession session = req.getSession ();
  +    HttpSession session;
       ServiceManager serviceManager =
         ServerHTTPUtils.getServiceManagerFromContext (context, configFilename);
       Call call = null;
  @@ -295,7 +297,6 @@
           // extract the call
           try {// Exception extracting the call
             reqCtx.setProperty( Constants.BAG_HTTPSERVLET, this );
  -          reqCtx.setProperty( Constants.BAG_HTTPSESSION, session );
             reqCtx.setProperty( Constants.BAG_HTTPSERVLETREQUEST, req );
             reqCtx.setProperty( Constants.BAG_HTTPSERVLETRESPONSE, res );
     
  @@ -335,7 +336,22 @@
           // not known)
           dd = serviceManager.query (targetID);
           reqCtx.setProperty( Constants.BAG_DEPLOYMENTDESCRIPTOR, dd );
  -  
  +
  +        // Get the session, but only create a new session if the scope
  +        // is session or there is no deployment descriptor option
  +        // SessionRequired with a value of false (i.e. the desire to
  +        // suppress sessions must be explicitly indicated for backward
  +        // compatibility).
  +        Hashtable props = dd.getProps();
  +        String sessionRequired = props != null ? (String) props.get("SessionRequired") : null;
  +        session = req.getSession(
  +                        dd.getScope() == DeploymentDescriptor.SCOPE_SESSION ||
  +                        sessionRequired == null ||
  +                        SoapEncUtils.decodeBooleanValue(sessionRequired)
  +                    );
  +        if (session != null)
  +          reqCtx.setProperty(Constants.BAG_HTTPSESSION, session);
  +
           Provider provider;
           if ( dd.getProviderType() == DeploymentDescriptor.PROVIDER_JAVA ) {
             // Handle Java based services
  
  
  
  1.36      +6 -0      xml-soap/java/docs/changes.html
  
  Index: changes.html
  ===================================================================
  RCS file: /home/cvs/xml-soap/java/docs/changes.html,v
  retrieving revision 1.35
  retrieving revision 1.36
  diff -u -r1.35 -r1.36
  --- changes.html	1 Aug 2002 03:07:32 -0000	1.35
  +++ changes.html	4 Aug 2002 02:47:32 -0000	1.36
  @@ -54,8 +54,14 @@
         than the TCP segment size, assuming the server platform uses
         a long delayed ACK timer (typically 200 ms).</li>
         <li>Support authentication for https proxies.</li>
  +      <li>Add the ability to suppress session creation per service
  +      by specifying
  +      <code>&lt;isd:option key=&quot;SessionRequired&quot; value=&quot;false&quot;/&gt;</code>
  +      within the <code>isd:provider</code> element in the deployment descriptor.</li>
       </ul>
     </li>
  +</ul>
  +<ul>
     <li><A name="v2.3.1"><STRONG>Version 2.3.1</STRONG></A>
       <ul>
         <li>Added logic to use xsi:nil, instead of xsi:null,