text: 
  Help:Error with Servlets !!
  Ramnath Krishnan
  Ranch Hand
  Joined: Feb 10, 1999
  Posts: 37
  posted
  Oct 01, 1999 10:00:00
  0
  Hi,
  I am running
  Java
  Web Server 2.0
  Please go through my code. (its not long....)
  The problem is that the HTML output does not take in to account GMT, once EST is defined for the param name.
  This program takes the param value and sets the time zone so that, current time in that time zone is returned.
  The output looks like this
  The current time here is: XXXXXX //takes default time
  And the time in New York is: EST XXXXX //time for EST
  And the time in London is EST XXXXXXX
  The third line should actually read EST instead of GMT.
  But in the shtml file its GMT.
  This is my .shtml file that I wrote
  <html> <head><title>Times!!!</title></head> <body> The current time is: <SERVLET CODE=CurrentTime> </SERVLET> The current time in London is: <SERVLET CODE=CurrentTime> <PARAM NAME=zone VALUE=GMT> </SERVLET> The current time in New York is: <SERVLET CODE=CurrentTime> <PARAM NAME=zone VALUE=EST> </SERVLET> </body> </html>
  The current time here is:
  And the time in New York is:
  And the current time in London is:
  And the CurrentTime class looks like :-
  import java.io.*; import java.text.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; public class CurrentTime extends HttpServlet { public void doGet(HttpServletRequest req,HttpServletResponse res) throws ServletException, IOException { PrintWriter out = new PrintWriter(res.getOutputStream(),true); Date date = new Date(); DateFormat df = DateFormat.getInstance(); out.println(req.getParameter("zone")); String zone = req.getParameter("zone"); if (zone != null) { try { TimeZone tz = TimeZone.getTimeZone(zone); df.setTimeZone(tz); } } out.println(df.format(date)); } }
  [This message has been edited by Frank Carver (edited October 04, 1999).]
  Frank Carver
  Sheriff
  Joined: Jan 07, 1999
  Posts: 6920
  posted
  Oct 04, 1999 04:03:00
  0
  Well, I don't have a solution (yet), but I do have a few questions and a couple of minor code suggestions. I hope you don't mind, but I also tidied up your post so the html in your shtml example is actually visible (ut had been eaten by UBB), and your Java is a little more readable.
  First, have you tested the
  servlet
  independent of the shtml to see if it works. Try entering
  <pre>
  </pre>
  and then
  <pre>
  </pre>
  to see if you get different results. This should isolate whether the problem is in your servlet code. If this
  test
  works, then the problem is either in the shtml or in the servlet engine. Can you tell us which server and/or servlet engine you are using?
  Second, a few small code suggestions:
  1. Recent versions of the servlet API (2.0 and up, I think) have a method ServletResponse.getWriter() which returns a
  PrintWriter
  direct, so there's no need to build one from a Stream if you are using such a system.
  2. A 'try' with no 'catch' or 'finally' is wasted space. The try and its braces may be safely removed.
  Read about me at frankcarver.me
  ~
  Raspberry Alpha Omega
  ~
  Frank's Punchbarrel Blog
  Ramnath Krishnan
  Ranch Hand
  Joined: Feb 10, 1999
  Posts: 37
  posted
  Oct 04, 1999 10:56:00
  0
  Thanks for your suggestions. I had no idea that the html file I included will not be readable.
  Earlier, I did get the printWriter from getWriter() method, but the O Reilly Book (Java Servlet Programming ) suggested that there Java Web Server 1.1.1( But I thought that the same problem exists with Jwb 2.0 and wanted to elimnate all chances of error )
  Anyways, I tried all the methods you suggested. The program worked for all cases
  The servlet engine I use is Java Web Server 2.0
  Someone suggested that I go to the server
  applet
  and change the setting under the Servlet tab and load
  servlets
  at startup and "Now", the problem should go away. But, unfortunaltely it does not.
  Thanks in advance....
  Frank Carver
  Sheriff
  Joined: Jan 07, 1999
  Posts: 6920
  posted
  Oct 05, 1999 03:01:00
  0
  Given that your Java code works, my top guess would be that your shtml processor is cacheing requests to servlets. If the shtml processor also handles "ordinary" shtml syntax, try invoking the servlet output as a server-side-include using syntax like
  <!--#include file="/servlets/CurrentTime?zone=EST" -->
  This should invoke the servlet separately each time. Please let me know if this works.
  Ramnath Krishnan
  Ranch Hand
  Joined: Feb 10, 1999
  Posts: 37
  posted
  Oct 07, 1999 10:25:00
  0
  Hi,
  Sorry for the delay, I tried to invoke the servlet using SSI. It did not work.
  I hope this syntax is correct
  <!--#include File = "pathandclassname"-->
  The error I got :-
  [an error occurred while processing server side includes]
  I am wondering whether I have to configure the Java Web Server for it to run SSI.
  There are some sample SSI's (eg dateservlet which prints local date and time)
  Its added as part of the Servlet Tab.
  I wrote a shtml to use it and this worked fine, although it was not loaded at server startup.
  I am pretty perplexed about this. Why is the server not considering the second <PARAM> in the .shtml code ?
  Thanks for all your suggestions.
  Frank Carver
  Sheriff
  Joined: Jan 07, 1999
  Posts: 6920
  posted
  Oct 08, 1999 03:37:00
  0
  I think that the reason your original setup wasn't working was that your shtml processor is either (a) not passing the parameters correctly to your servlet, or (b) invoking the servlet only once, and reusing the generated value each time the servlet tag appears.
  To test for (a), try setting <b>all</b> the PARAMs to some other timezone entirely, and checking that they all show the new timezone. If they still show the old values, even when you fully reload the page, then there is a problem with passing parameters. If they show the new values, then the problem is elsewhere.
  To test for (b), try reordering the servlet tags so that the timezones should appear in a different order. If the output changes, but all the values are still the same as each other, then you know that only one of the servlet calls is actually working.
  In either case, you really need to try and find the servlet output log, and start logging some diagnostics during processing of your servlet. If you find where System.out is being sent (depends on the webserver/servlet engine - I'm not familiar with JWS 2.0), then you can log the invocation times, parameter values, and generated date information for every call. This should help a lot.
  As for the attempt to invoke the servlet using ssi, you might want to try using "virtual=" instead of "file=" in the include directive. If supported, this should invoke a servlet or cgi program by URL rather than by file path and name. There should also be some log file information at the server end which will explain exactly what is going wrong; it might just be that you've inadvertently mistyped a name or something.
  I agree. Here's the link:
  subject: Help:Error with Servlets !!
  Similar Threads
  Server Side Includes.
  CAN SHTML files run on Tomcat 3.1, Maha Anna Help
  Server-Side Includes
  Weblogic 7.0 supports SSI
  Problem with SHTML
  All times are in JavaRanch time: GMT-6 in summer, GMT-7 in winter
  JForum
  |
  Paul Wheaton