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? >>> >>> >