This looks like something to do with your CATALINA_HOME directory. I had
problems installing to Program Files/Apache Tomcat, because of the space in
Program Files. You could try moving/re-installing your tomcat to somewhere
else without spaces in the pathname - like c:\dev\tomcat4.0.3 or something.


-----Original Message-----
From: KAKARONTZAS GEORGE [mailto:[EMAIL PROTECTED]]
Sent: Monday, May 13, 2002 7:27 AM
To: [EMAIL PROTECTED]
Subject: Applet-servlet communication problem with Tomcat 4.0.3


I'm having an Applet oppening a URLConnection with a servlet and sending
an object.
Here's the Applet side of the communication:
 
//This is the method initiating the connection
public void available(SellOrder o) throws Exception
    {
            URL servlet = new URL("http", "localhost", 8080,
"/servlet/AvailableServlet");
Serializable objs[] = { o };
            ObjectInputStream in = ServletWriter.postObjects(servlet,
objs);
            String status = (String) in.readObject();
            in.close();
    }
----
public class ServletWriter {
 
            static public ObjectInputStream postObjects(URL servlet,
Serializable objs[]) throws Exception
            {
                        URLConnection con = servlet.openConnection();
                        con.setDoInput(true);
                        con.setDoOutput(true);
                        con.setDefaultUseCaches(false);
                        con.setUseCaches(false);
                        con.setRequestProperty("Content-Type",
"application/x-www-form-urlencoded");
 
                        // Write the arguments as post data
                        ObjectOutputStream out = new
ObjectOutputStream(con.getOutputStream());
                        int numObjects = objs.length;
                        for (int x = 0; x < numObjects; x++) {
                                    out.writeObject(objs[x]);
                        }
 
                        out.flush();
                        out.close();
 
                        return new ObjectInputStream(
con.getInputStream() );
            }
 
}
 
On the server side of the communication I have the AvailableServlet with
the following code:
 
public class AvailableServlet extends HostServlet {
 
            public void doPost(HttpServletRequest req,
HttpServletResponse res)
            throws ServletException, IOException
            {
                        System.out.println("Available is called.");
                        ObjectInputStream in=
                                    new
ObjectInputStream(req.getInputStream());
                        ObjectOutputStream out=
                                    new
ObjectOutputStream(res.getOutputStream());
                        try {
                                     //read the host order
                                     SellOrder o = (SellOrder)
in.readObject();
                                     _server.available(o);
                                    out.writeObject("OK");
                                    in.close();
                                    out.close();
                        }
                        
                        catch (Exception ex) {
                                    System.out.println(ex.getMessage());
                        }
            
            }       
}
 
This communication works fine when running with Tomcat 3.2.1 (Windows XP
Pro - standalone). But it throws the following exception on the server
when running on Tomcat 4.0.3 (same platform standalone or service):
----
Available is called.
RemoteException occurred in server thread; nested exception is:
        java.rmi.UnmarshalException: error unmarshalling arguments;
nested excep
tion is:
        java.net.MalformedURLException: no protocol: Files/Apache
----
As you can see from the output the doPost() method is called.  The
exception is thrown when the doPost() method executes the readObject()
method on the stream.
 
Any help would be greately appreciated.
Thanks
-George
 

Reply via email to