docs: public void print(String s) throws IOException
  	{
  		//PK89810, If WCCustomProperties.FINISH_RESPONSE_ON_CLOSE is set and stream is already obtained and closed. 
  		// We will not allow user to print more data if the above case is met, outputstreamClosed will be true and default is false.
  		if (!(WCCustomProperties.FINISH_RESPONSE_ON_CLOSE) || !outputstreamClosed ) //PK89810
  		{
  		if (com.ibm.ejs.ras.TraceComponent.isAnyTracingEnabled()&&logger.isLoggable (Level.FINE)) {  //306998.15
  			logger.logp(Level.FINE, CLASS_NAME,"print", "print --> "+s);
                  }
                  if(s != null) {  // PQ88872
                      if (!_hasWritten && obs != null)
                      {
                              _hasWritten = true;
              			if (obsList!=null){
              				for (int i=0;i<obsList.size();i++){
              					obsList.get(i).alertFirstWrite();
              				}
              			}
              			else {
                              obs.alertFirstWrite();
                      }
              		}
  			int len = s.length();
  			if (limit > -1)
  			{
  				if (total + len > limit)
  				{
  					len = limit - total;
  					except = new WriteBeyondContentLengthException();
  				}
  			}
  			if(this.getBufferSize() != 0){		 // PM44112 
  					int off = 0;
  					while (len > 0)
  					{
  						int n = buf.length - count;
  						if (n == 0)
  						{
  							response.setFlushMode(false);
  							flushBytes();
  							response.setFlushMode(true);
  							n = buf.length - count;
  						}
  						if (n > len)
  						{
  							n = len;
  						}
  						//
  						// NOTE:  this getBytes call is deprecated ... it doesn't work
  						// correctly for multibyte characters, and doesn't take account
  						// of the character encoding that the client expects.
  						//
  						s.getBytes(off, off + n, buf, count);
  						
  						count += n;
  						total += n;
  						off += n;
  						len -= n;
  					}
  				} // PM44112 Start
  				else if(getBufferSize() == 0) {	
  					
  					byte[] origBuf=buf; // store the original buff , which is 0
  					buf = s.getBytes();	// update buf with the String to print.
  					count = buf.length;
  					total+=count; // keep the count and the total written
  					
  					if (com.ibm.ejs.ras.TraceComponent.isAnyTracingEnabled()&&logger.isLoggable (Level.FINE))
  						logger.logp(Level.FINE, CLASS_NAME,"print",  "response Buffersize is set to zero , to print --> "+ count +" total -->"+  total);
  					
  					
  					response.setFlushMode(true);
  					flushBytes();				
  					buf=origBuf; // set it back to original buff, i.e. 0 value
  					
  					if (com.ibm.ejs.ras.TraceComponent.isAnyTracingEnabled()&&logger.isLoggable (Level.FINE))
  						logger.logp(Level.FINE, CLASS_NAME,"print",  "after flushbytes, buf --> "+ buf.length +" count --> "+  count+" total -->"+  total);
  					
  				}// PM44112 End
  			check();
  		} // PQ88872
  	}
  		else{//PK89810 start
  			if (com.ibm.ejs.ras.TraceComponent.isAnyTracingEnabled()&&logger.isLoggable (Level.FINE))
  				logger.logp(Level.FINE, CLASS_NAME,"print", "print not allowed, outputstreamClosed value --> " + outputstreamClosed);			
  		}//PK89810 End
  	}