Hi all !
 
    I have a strange problem here...
 
    I have an HttpServlet. This servlet receives request in its doGet method. If the request has a specific parameter, I know I have to send the answer as a serialized object. This is fairly simple :
 
  public void doGet(HttpServletRequest req, HttpServletResponse res)
      throws ServletException, IOException
  {
    // CHeck if the client wishes to receive the information using a socket.
    if ("use_socket".equalsIgnoreCase(req.getParameter("format")))
    {
      ObjectOutputStream out = new ObjectOutputStream(res.getOutputStream());
//      out.writeObject(new java.awt.Rectangle(1,2,3,4));
 
      Hashtable hTable = new Hashtable(0,1);
      hTable.put("1", "Premiere chaine");
      hTable.put("2", "Seconde chaine");
      out.writeObject(hTable);
    }
    else
    {
      res.setContentType("text/html");
      PrintWriter out = new PrintWriter (res.getOutputStream());
      out.println("<html>");
      out.println("<head><title>Servlet1</title></head>");
      out.println("<body>");
      out.println("Dynamically generated by servlet.");
      out.println("</body></html>");
      out.close();
    }
  }
    And then I have this applet which sends the request and reads the answer as :
 
        try
        {
            URL url = new URL(getCodeBase() + "servlet/Servlet1");
            String params = "?format=use_socket";
            url = new URL(url.toExternalForm() + params);
            myTextArea.append("\nOpening " + url);
 
            URLConnection con = url.openConnection();
            con.setUseCaches(false);
 
            ObjectInputStream input = new ObjectInputStream(con.getInputStream());
            Object obj = input.readObject();
            myTextArea.append("\nReading answer.");
            myTextArea.append("\n" + obj.toString());
            ..............
        }   
        catch(Exception e)
        {
        }
 
    As you can see, this is very very simple. I tried with a Date object and it works perfectly. I also tried with a java.awt.Rectangle and it also works perfectly. However, when I try with a Hashtable, I get an exception quite strange :
 
--
java.io.FileNotFoundException: localhost:80//servlet/Servlet1?format=use_socket
--
 
    What does this means ? I can't use Hashtable ? It does implement Serializable so where is the problem ? If the same code works for a Rectangle or a Date, I can hardly see why it won't work with a Hashtable ???
 
Any idea ?
 
Maxime.

Reply via email to