Thanks. I had not tried the @Encoded annotation, I'll give that a try and
then

as for configuring tomcat those two parameters need to be in system
properties, I just add them to the command line with -D
like this:
-Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true
-Dorg.apache.catalina.connector.CoyoteAdapter.ALLOW_BACKSLASH=true

Yes I do have the matrix parameters  (they are optional criteria which
narrow the results)

On Wed, Mar 9, 2011 at 10:20 AM, Sergey Beryozkin <sberyoz...@gmail.com>wrote:

> I've done a simple test (with Jetty) and it works fine.
>
> Client:
>
> @Test
>     public void testBookWithComplexEncoding() throws Exception {
>         BookStore store = JAXRSClientFactory.create("http://localhost:"; +
> PORT, BookStore.class);
>
>         String complex1 = "70%2F70%5C70.v1.0";
>         Book book = store.getBookComplexEncoded(complex1, 3L);
>         assertEquals(3L, book.getId());
>         assertEquals(complex1, book.getName());
>
>         String complex2 = "70%2F%2F70%5C70.v1.0";
>         book = store.getBookComplexEncoded(complex2, 3L);
>         assertEquals(3L, book.getId());
>         assertEquals(complex2, book.getName());
>     }
>
> Relevant server code:
>
> @GET
>     @Path("/books/encoded/{complex}")
>     public Book getBookComplexEncoded(@Encoded @PathParam("complex") String
> complex,
>                                       @MatrixParam("optionId") Long id) {
>         return new Book(complex, id);
>     }
>
> I'm just using @Encoded to capture the exact sequence in the original
> form...
>
> Can you please explain how to configure those two properties in Tomcat ?
>
> org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true
> org.apache.catalina.connector.CoyoteAdapter.ALLOW_BACKSLASH=true
>
> What would really help of you could download CXF source and put a
> breakpoint in ServletController and JAXRSInInterceptor
>
> It is possible there is a flaw somewhere exposed on Tomcat only
>
> thanks, Sergey
>
>
> On Wed, Mar 9, 2011 at 10:45 AM, Sergey Beryozkin <sberyoz...@gmail.com>wrote:
>
>> Hi
>>
>> Forwarding to the users list...
>>
>> I do suspect it's the ServletController's issue to do with the way the
>> handles matrix parameters
>>
>> Do you actual request URIs having matrix params like this :
>>
>> /service/v1/device/70%2F%2F70%5C70.v1.0;optionId=1
>>
>> ?
>>
>> thanks, Sergey
>>
>>
>> On Tue, Mar 8, 2011 at 6:42 PM, kh <jkh...@gmail.com> wrote:
>>
>>> I get this message when I have two encodes /s in the path %2F%2F
>>> WARNING: .No root resource matching request path
>>> /service/v1/device/70%2F%2F70%5C70.v1.0 is found.
>>> However:
>>> /service/v1/device/70%2F70%5C70.v1.0
>>> works fine.
>>>  I'm using cxf 2.2.3
>>>
>>> I have
>>>   org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true
>>>   org.apache.catalina.connector.CoyoteAdapter.ALLOW_BACKSLASH=true
>>> set.
>>>
>>> My annotations are:
>>>
>>>
>>> @Path("/v1/device")
>>> public class Device extends com.netflix.customer.eds.Device {
>>>
>>>    @GET
>>>    @Path("/{esn}")
>>>    @Consumes("application/xml")
>>>    @Produces("application/xml")
>>>    /* for error cases only */
>>>    @Transactional(rollbackFor = {Throwable.class})
>>>    public Response get(@Context HttpServletRequest request,
>>>                        @PathParam("esn") String esn,
>>>                        @MatrixParam("optionId") Long optionId)
>>>
>>> I gt the same response weather or not I include the matrix parameter.
>>>
>>> Am I missing something?
>>>
>>>
>

Reply via email to