FYI, Kevin entered an issue report:
http://restlet.tigris.org/issues/show_bug.cgi?id=396

Best regards,
Jerome  

> -----Message d'origine-----
> De : Kevin Conaway [mailto:[EMAIL PROTECTED] 
> Envoyé : mardi 11 décembre 2007 21:42
> À : [email protected]
> Objet : Re: SocketException using PUT
> 
> The problem appears to be in HttpClientCall.sendRequest().  
> After it finishes writing the request entity, it closes the 
> request outputstream.  According to the javadocs, this closes 
> the socket as well:
> 
> http://java.sun.com/javase/6/docs/api/java/net/Socket.html#get
> OutputStream() 
> <http://java.sun.com/javase/6/docs/api/java/net/Socket.html#ge
> tOutputStream()> 
> 
> The close should be done at a later point.
> 
> Kevin
> 
> 
> On Dec 11, 2007 3:32 PM, Kevin Conaway < 
> [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> > wrote:
> 
> 
>       I'm experiencing a SocketException everytime I try to 
> send a representation using PUT. 
>       
>       The error I receive is:
>       
>       java.net.SocketException: socket closed
>               at 
> java.net.SocketInputStream.socketRead0(Native Method) 
>               at 
> java.net.SocketInputStream.read(SocketInputStream.java:129)
>               at 
> java.net.SocketInputStream.read(SocketInputStream.java:182)
>               at 
> com.noelios.restlet.http.StreamClientCall.parseResponse(Stream
> ClientCall.java :120)
>               at 
> com.noelios.restlet.http.StreamClientCall.sendRequest(StreamCl
> ientCall.java:232)
>               at 
> com.noelios.restlet.http.HttpClientConverter.commit(HttpClient
> Converter.java:100)
>               at 
> com.noelios.restlet.http.HttpClientHelper.handle 
> (HttpClientHelper.java:79)
>               at org.restlet.Client.handle(Client.java:103)
>               at org.restlet.Uniform.handle(Uniform.java:97)
>               at PutTest.call(PutTest.java:16)
>               at PutTest.main(PutTest.java :10)
>       
>       Here is a short sample application that will reproduce 
> the error on the latest 1.1M1 build.  Anyone know whats going on?
>       
>       Thanks,
>       
>       Kevin
>       
>       import org.restlet.*;
>       import org.restlet.data.*;
>       import org.restlet.resource.*;
>       
>       public class PutTest {
>       
>           public static void main(String [] args) throws Exception {
>               startServer();
>               call(null); //Succeeds
>               call(new StringRepresentation("Test")); //Fails 
>           }
>           
>           public static void call(Representation entity) {
>               String uri = "http://localhost:8000/test/";;
>               Request request = new Request( Method.PUT, uri, entity);
>               new Client(Protocol.HTTP).handle(request);
>           }
>           
>           public static void startServer() throws Exception {
>               Component component = new Component();
>               component.getServers ().add(Protocol.HTTP, 8000);
>       
>               Application application = new 
> Application(component.getContext()) {
>                   public Restlet createRoot() {
>                       Router router = new Router(getContext());
>                       router.attach("", PutResource.class);
>                       return router;
>                   }
>               };
>       
>               component.getDefaultHost().attach("/test/", 
> application);
>               component.start();
>           }
>       
>           public static class PutResource extends Resource {
>               public boolean allowPut() {
>                   return true;
>               }
>       
>               public void storeRepresentation(Representation 
> entity) { 
>                   System.out.println("Put called");
>               }
>           }
>       }
>       
> 
> 
> 

Reply via email to