CRUD. Yes. Exactly what I'm trying to do, and Tomcat developers are making
it difficult.

I can say that in Jetty 6, they are definitely passed. I don't know
whether they are being stripped in Tomcat deliberately (I hope not) or if
it's a bug. I plan to file a bug report anyway.

I'm running Jetty directly (inside Maven), but my Tomcat container is
proxied via Apache 2, so it's remotely possible that Apache is stripping
the params out of the headers. But I doubt it. Still, if someone has Jetty
behind an Apache proxy (or any other proxy), it would be nice to know...

Chas.


> Crud.
>
> Can someone do a survey of how other JVM web frameworks handle the PUT
> inconsistencies on different containers?
>
> On Fri, Feb 5, 2010 at 9:29 AM, Ross Mellgren <dri...@gmail.com> wrote:
>
>> Looking at the Tomcat code, this is explicit. From
>> org.apache.catalina.connector.Request:
>>
>>    /**
>>     * Parse request parameters.
>>     */
>>    protected void parseParameters() {
>> ...
>>        if (!getMethod().equalsIgnoreCase("POST"))
>>            return;
>> ...
>>    }
>>
>> -Ross
>>
>> On Feb 5, 2010, at 11:47 AM, Leo Lännenmäki wrote:
>>
>> > Hmpf. I have got the Tomcat PUT problem also.
>> >
>> > def statefulDispatchTable: LiftRules.DispatchPF = {
>> >  ...
>> >  case r...@req(List("api", "foo"), "", PutRequest) => () =>
>> > update(req)
>> >  ...
>> > }
>> >
>> > def update(req: Req): LiftResponse = {
>> >  for (name <- req.paramNames) {
>> >    Log.info(name)
>> >    Log.info(req.param(name).openOr("empty"))
>> >  }
>> >  ...
>> > }
>> >
>> >
>> > On Jetty:
>> > 209467 [736850...@qtp-566947760-0] INFO  lift  - param
>> > 209467 [736850...@qtp-566947760-0] INFO  lift  - value
>> > 209476 [736850...@qtp-566947760-0] INFO  lift  - Service request
>> > (PUT) /api/foo took 17 Milliseconds
>> >
>> > curl -v -X PUT -d "param=value" -b JSESSIONID=v7a6qye5zusv
>> > http://localhost:8080/api/foo
>> > * About to connect() to localhost port 8080 (#0)
>> > *   Trying ::1... connected
>> > * Connected to localhost (::1) port 8080 (#0)
>> >> PUT /api/foo HTTP/1.1
>> >> User-Agent: curl/7.19.5 (x86_64-pc-linux-gnu) libcurl/7.19.5
>> OpenSSL/0.9.8g zlib/1.2.3.3 libidn/1.15
>> >> Host: localhost:8080
>> >> Accept: */*
>> >> Cookie: JSESSIONID=v7a6qye5zusv
>> >> Content-Length: 49
>> >> Content-Type: application/x-www-form-urlencoded
>> >>
>> > < HTTP/1.1 200 OK
>> > < Content-Length: 0
>> > < Content-Type: text/html; charset=utf-8
>> > < X-Lift-Version: 2.0-M1
>> > < Server: Jetty(6.1.22)
>> > <
>> > * Connection #0 to host localhost left intact
>> > * Closing connection #0
>> >
>> >
>> >
>> > On Tomcat:
>> > 170570 [http-8080-2] INFO  lift  - Service request (PUT) /api/foo took
>> > 12 Milliseconds
>> >
>> > curl -v -X PUT -d "param=value" -b
>> > JSESSIONID=68EE8A10FFBC2E5383FB9FD2821CF0E1
>> http://localhost:8080/myserver/api/foo
>> > * About to connect() to localhost port 8080 (#0)
>> > *   Trying ::1... connected
>> > * Connected to localhost (::1) port 8080 (#0)
>> >> PUT /api/foo HTTP/1.1
>> >> User-Agent: curl/7.19.5 (x86_64-pc-linux-gnu) libcurl/7.19.5
>> OpenSSL/0.9.8g zlib/1.2.3.3 libidn/1.15
>> >> Host: localhost:8080
>> >> Accept: */*
>> >> Cookie: JSESSIONID=68EE8A10FFBC2E5383FB9FD2821CF0E1
>> >> Content-Length: 49
>> >> Content-Type: application/x-www-form-urlencoded
>> >>
>> > < HTTP/1.1 200 OK
>> > < Server: Apache-Coyote/1.1
>> > < X-Lift-Version: 2.0-M1
>> > < Content-Type: text/html;charset=utf-8
>> > < Content-Length: 0
>> > < Date: Fri, 05 Feb 2010 16:28:23 GMT
>> > <
>> > * Connection #0 to host localhost left intact
>> > * Closing connection #0
>> >
>> >
>> > On Feb 4, 10:47 pm, David Pollak <feeder.of.the.be...@gmail.com>
>> > wrote:
>> >> Sounds to me like a Tomcat issue... I think we're relying on the
>> container
>> >> to parse the body correctly.
>> >>
>> >>
>> >>
>> >> On Wed, Feb 3, 2010 at 9:15 PM, <c...@munat.com> wrote:
>> >>> It's POST vs. PUT. I'm using AJAX, so I can do PUTs.
>> >>
>> >>> The two are identical, except:
>> >>
>> >>> POST instead of PUT
>> >>
>> >>> The POST version includes:
>> >>
>> >>> Pragma: no-cache
>> >>> Cache-Control: no-cache
>> >>
>> >>> which the PUT does not. In other words, the headers are identical
>> except
>> >>> for the above.
>> >>
>> >>> In Jetty, no problem. In Tomcat, the params are ignored. They do not
>> show
>> >>> up in S.params. At all.
>> >>
>> >>> I can't imagine that this is a Lift issue, unless Tomcat makes
>> params
>> >>> available differently for PUTs than for POSTs, but Jetty does not,
>> and
>> I'm
>> >>> the first guy to do PUTs to Lift on Tomcat. But I've emailed the
>> Tomcat
>> >>> users list and we'll see if it's something simple. If not, I'll put
>> >>> something on GitHub.
>> >>
>> >>> Chas.
>> >>
>> >>>> Is it a POST or a GET?
>> >>
>> >>>> On Wed, Feb 3, 2010 at 11:44 PM, <c...@munat.com> wrote:
>> >>
>> >>>>> Thanks, David.
>> >>
>> >>>>> That's a non-trivial exercise for me, so let me chase down another
>> lead
>> >>>>> at
>> >>>>> the moment. If that proves fruitless, I'll bite the bullet and get
>> >>>>> something up on GitHub.
>> >>
>> >>>>> Chas.
>> >>
>> >>>>>> Please put together a reproduceable example on GitHub (works in
>> Jetty,
>> >>>>>> doesn't work in Tomcat) and we'll look at it.
>> >>
>> >>>>>> On Wed, Feb 3, 2010 at 11:48 AM, <c...@munat.com> wrote:
>> >>
>> >>>>>>> I have a lift app that works perfectly when I use mvn jetty:run.
>> Then
>> >>>>> I
>> >>>>>>> package it into a war and load it up in Tomcat 6 on the server,
>> and
>> >>>>> when
>> >>>>>>> I
>> >>>>>>> do, suddenly it won't work.
>> >>
>> >>>>>>> The issue is with the S.params. I have a form that submits via
>> an
>> >>>>> Ajax
>> >>>>>>> PUT
>> >>>>>>> request. The params are sent in the header just fine. As I said,
>> >>>>> works
>> >>>>>>> like a charm on Jetty. But when it gets to Tomcat, the entity is
>> >>>>> saved
>> >>>>>>> with blank attributes... i.e., everything worked but the
>> >>>>>>> S.param("whatever") showed up blank. I tested this by doing
>> >>>>>>> S.param("whatever").openOr("Phooey") and, indeed, that attribute
>> was
>> >>>>> set
>> >>>>>>> to "Phooey" on the new entity.
>> >>
>> >>>>>>> Tomcat issue? Or am I missing something obvious? This form is
>> running
>> >>>>> on
>> >>>>>>> a
>> >>>>>>> subdomain, so that's where I'm looking now (in server.xml).
>> >>
>> >>>>>>> TIA,
>> >>>>>>> Chas.
>> >>
>> >>>>>>> --
>> >>>>>>> You received this message because you are subscribed to the
>> Google
>> >>>>>>> Groups
>> >>>>>>> "Lift" group.
>> >>>>>>> To post to this group, send email to lift...@googlegroups.com.
>> >>>>>>> To unsubscribe from this group, send email to
>> >>>>>>> liftweb+unsubscr...@googlegroups.com<liftweb%2bunsubscr...@googlegroups.com>
>> <liftweb%2bunsubscr...@googlegroups.com<liftweb%252bunsubscr...@googlegroups.com>
>> >
>> >>> <liftweb%2bunsubscr...@googlegroups.com<liftweb%252bunsubscr...@googlegroups.com>
>> <liftweb%252bunsubscr...@googlegroups.com<liftweb%25252bunsubscr...@googlegroups.com>
>> >
>> >>
>> >>>>> <liftweb%2bunsubscr...@googlegroups.com<liftweb%252bunsubscr...@googlegroups.com>
>> <liftweb%252bunsubscr...@googlegroups.com<liftweb%25252bunsubscr...@googlegroups.com>
>> >
>> >>> <liftweb%252bunsubscr...@googlegroups.com<liftweb%25252bunsubscr...@googlegroups.com>
>> <liftweb%25252bunsubscr...@googlegroups.com<liftweb%2525252bunsubscr...@googlegroups.com>
>> >
>> >>
>> >>>>>>> .
>> >>>>>>> For more options, visit this group at
>> >>>>>>> http://groups.google.com/group/liftweb?hl=en.
>> >>
>> >>>>>> --
>> >>>>>> Lift, the simply functional web frameworkhttp://liftweb.net
>> >>>>>> Beginning Scalahttp://www.apress.com/book/view/1430219890
>> >>>>>> Follow me:http://twitter.com/dpp
>> >>>>>> Surf the harmonics
>> >>
>> >>>>>> --
>> >>>>>> You received this message because you are subscribed to the
>> Google
>> >>>>> Groups
>> >>>>>> "Lift" group.
>> >>>>>> To post to this group, send email to lift...@googlegroups.com.
>> >>>>>> To unsubscribe from this group, send email to
>> >>>>>> liftweb+unsubscr...@googlegroups.com<liftweb%2bunsubscr...@googlegroups.com>
>> <liftweb%2bunsubscr...@googlegroups.com<liftweb%252bunsubscr...@googlegroups.com>
>> >
>> >>> <liftweb%2bunsubscr...@googlegroups.com<liftweb%252bunsubscr...@googlegroups.com>
>> <liftweb%252bunsubscr...@googlegroups.com<liftweb%25252bunsubscr...@googlegroups.com>
>> >
>> >>
>> >>>>> .
>> >>>>>> For more options, visit this group at
>> >>>>>> http://groups.google.com/group/liftweb?hl=en.
>> >>
>> >>>>> --
>> >>>>> You received this message because you are subscribed to the Google
>> >>>>> Groups
>> >>>>> "Lift" group.
>> >>>>> To post to this group, send email to lift...@googlegroups.com.
>> >>>>> To unsubscribe from this group, send email to
>> >>>>> liftweb+unsubscr...@googlegroups.com<liftweb%2bunsubscr...@googlegroups.com>
>> <liftweb%2bunsubscr...@googlegroups.com<liftweb%252bunsubscr...@googlegroups.com>
>> >
>> >>> <liftweb%2bunsubscr...@googlegroups.com<liftweb%252bunsubscr...@googlegroups.com>
>> <liftweb%252bunsubscr...@googlegroups.com<liftweb%25252bunsubscr...@googlegroups.com>
>> >
>> >>
>> >>>>> .
>> >>>>> For more options, visit this group at
>> >>>>> http://groups.google.com/group/liftweb?hl=en.
>> >>
>> >>>> --
>> >>>> You received this message because you are subscribed to the Google
>> Groups
>> >>>> "Lift" group.
>> >>>> To post to this group, send email to lift...@googlegroups.com.
>> >>>> To unsubscribe from this group, send email to
>> >>>> liftweb+unsubscr...@googlegroups.com<liftweb%2bunsubscr...@googlegroups.com>
>> <liftweb%2bunsubscr...@googlegroups.com<liftweb%252bunsubscr...@googlegroups.com>
>> >
>> >>> .
>> >>>> For more options, visit this group at
>> >>>> http://groups.google.com/group/liftweb?hl=en.
>> >>
>> >>> --
>> >>> You received this message because you are subscribed to the Google
>> Groups
>> >>> "Lift" group.
>> >>> To post to this group, send email to lift...@googlegroups.com.
>> >>> To unsubscribe from this group, send email to
>> >>> liftweb+unsubscr...@googlegroups.com<liftweb%2bunsubscr...@googlegroups.com>
>> <liftweb%2bunsubscr...@googlegroups.com<liftweb%252bunsubscr...@googlegroups.com>
>> >
>> >>> .
>> >>> For more options, visit this group at
>> >>> http://groups.google.com/group/liftweb?hl=en.
>> >>
>> >> --
>> >> Lift, the simply functional web frameworkhttp://liftweb.net
>> >> Beginning Scalahttp://www.apress.com/book/view/1430219890
>> >> Follow me:http://twitter.com/dpp
>> >> Surf the harmonics
>> >
>> > --
>> > You received this message because you are subscribed to the Google
>> Groups
>> "Lift" group.
>> > To post to this group, send email to lift...@googlegroups.com.
>> > To unsubscribe from this group, send email to
>> liftweb+unsubscr...@googlegroups.com<liftweb%2bunsubscr...@googlegroups.com>
>> .
>> > For more options, visit this group at
>> http://groups.google.com/group/liftweb?hl=en.
>> >
>>
>> --
>> You received this message because you are subscribed to the Google
>> Groups
>> "Lift" group.
>> To post to this group, send email to lift...@googlegroups.com.
>> To unsubscribe from this group, send email to
>> liftweb+unsubscr...@googlegroups.com<liftweb%2bunsubscr...@googlegroups.com>
>> .
>> For more options, visit this group at
>> http://groups.google.com/group/liftweb?hl=en.
>>
>>
>
>
> --
> Lift, the simply functional web framework http://liftweb.net
> Beginning Scala http://www.apress.com/book/view/1430219890
> Follow me: http://twitter.com/dpp
> Surf the harmonics
>
> --
> You received this message because you are subscribed to the Google Groups
> "Lift" group.
> To post to this group, send email to lift...@googlegroups.com.
> To unsubscribe from this group, send email to
> liftweb+unsubscr...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/liftweb?hl=en.
>
>


-- 
You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to lift...@googlegroups.com.
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en.

Reply via email to