From: Butler E. W. <wil...@gm...> - 2010-12-26 18:06:47
|
I could not get ERAttachment downloads to work in servlet deployment (tomcat 6). Uploads do work -- the db gets populated correctly when storageMode=db. I copied a non-downloading URL from a rendered page, and tried to download it with verbose curl and it times out. Here is the output from curl -v curl -v http://172.16.248.134:8080/MyApp/WebObjects/MyApp.woa/attachments/id/17/17.jpg * About to connect() to 172.16.248.134 port 8080 (#0) * Trying 172.16.248.134... connected * Connected to 172.16.248.134 (172.16.248.134) port 8080 (#0) GET /MyApp/WebObjects/MyApp.woa/attachments/id/17/17.jpg HTTP/1.1 User-Agent: curl/7.19.7 (universal-apple-darwin10.0) libcurl/7.19.7 OpenSSL/0.9.8l zlib/1.2.3 Host: 172.16.248.134:8080 Accept: */* < HTTP/1.1 200 OK < Server: Apache-Coyote/1.1 < x-webobjects-servlet: YES < Content-Type: image/jpeg < Content-Length: 153788 < Date: Sat, 25 Dec 2010 23:23:50 GMT < there's a pause here, then: * transfer closed with 153788 bytes remaining to read * Closing connection #0 curl: (18) transfer closed with 153788 bytes remaining to read The Content-Length and Content-Type header entries are correct. So as a wild guess in the handleRequest method of ERAttachmentRequestHandler I commented out the streaming call and replaced it with NSData, as //response.setContentStream(attachmentInputStream, bufferSize, length); // commented out NSData data = new NSData(attachmentInputStream, (int) length); response.setContent(data); and now it downloads fine in servlet mode. But I don't know why this should matter. Could even be a tomcat configuration issue, I dunno. But I'd be interested in comments on a general solution, rather than a hack as I've done. Thanks, Bill |