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"); > } > } > } > > > >

