you have @GET on shoppingcart so Customer is not a sub resource Side note: some help can be accessed using logs at fine level of org.apache.cxf.jaxrs.utils.JAXRSUtils logger Romain Manni-Bucau Twitter: @rmannibucau Blog: http://rmannibucau.wordpress.com/ LinkedIn: http://fr.linkedin.com/in/rmannibucau Github: https://github.com/rmannibucau
2014-10-29 16:23 GMT+01:00 Alex Soto <[email protected]>: > https://github.com/maggandalf/jaxrssubresource > > 2014-10-29 16:15 GMT+01:00 Alex Soto <[email protected]>: > >> Yes it is there only in one of my test trying to see if setting a known >> content type make things better, >> >> 2014-10-29 16:11 GMT+01:00 Romain Manni-Bucau <[email protected]>: >> >>> why @XmlRootElement? IMHO Customer shouldn't be a jaxb object >>> >>> if you manage to share a project @github we could dig into it >>> Romain Manni-Bucau >>> Twitter: @rmannibucau >>> Blog: http://rmannibucau.wordpress.com/ >>> LinkedIn: http://fr.linkedin.com/in/rmannibucau >>> Github: https://github.com/rmannibucau >>> >>> >>> >>> 2014-10-29 16:06 GMT+01:00 Alex Soto <[email protected]>: >>> > Hi again I am trying really simple example and it don't work. I am not >>> sure >>> > if it is because of something related in cxf or something that I am >>> doing >>> > wrong (but currently I am copying the example from oracle >>> documentation). >>> > Let me paste the classes: >>> > >>> > @Path("/") >>> > public class ShoppingCart { >>> > >>> > @Path("/customers/{id}") >>> > @GET >>> > @Produces(MediaType.APPLICATION_XML) >>> > public Customer get(@PathParam("id") String id) { >>> > Customer customer = new Customer(); >>> > customer.setAddress("a"); >>> > customer.setId(id); >>> > return customer; >>> > } >>> > } >>> > >>> > and >>> > >>> > @XmlRootElement >>> > public class Customer { >>> > >>> > private String id; >>> > private String address; >>> > public String getId() { >>> > return id; >>> > } >>> > @Path("/address") >>> > @Produces(MediaType.TEXT_PLAIN) >>> > public String getAddress() { >>> > return address; >>> > } >>> > public void setId(String id) { >>> > this.id = id; >>> > } >>> > public void setAddress(String address) { >>> > this.address = address; >>> > } >>> > } >>> > >>> > If I navigate to /customers/12/address it didn't work, an exception is >>> > thrown that endpoint is not found: >>> > >>> > WARNING: No operation matching request path >>> > "/javaeemv3/customers/1/address" is found, Relative Path: >>> > /customers/1/address, HTTP Method: GET, ContentType: */*, Accept: >>> > >>> text/html,application/xhtml+xml,image/webp,application/xml;q=0.9,*/*;q=0.8,. >>> > Please enable FINE/TRACE log level for more details. >>> > Oct 29, 2014 4:00:11 PM >>> > org.apache.cxf.jaxrs.impl.WebApplicationExceptionMapper toResponse >>> > WARNING: javax.ws.rs.WebApplicationException >>> > at >>> > >>> org.apache.cxf.jaxrs.utils.JAXRSUtils.findTargetMethod(JAXRSUtils.java:415) >>> > >>> > Don't know exactly if I am doing something wrong (but at least it seems >>> > that reading the specification it should work. >>> > >>> > Alex. >>> > >>> > 2014-10-29 15:08 GMT+01:00 Alex Soto <[email protected]>: >>> > >>> >> Ok so providing an Applicatiom makes that scanning process do not scan >>> >> resources and subresources. Cool. Thanks. >>> >> >>> >> 2014-10-29 15:04 GMT+01:00 Romain Manni-Bucau < >>> [email protected]>: >>> >> >>> >>> normally you don't let sub resources to be deployed providing an >>> >>> Application. >>> >>> Romain Manni-Bucau >>> >>> Twitter: @rmannibucau >>> >>> Blog: http://rmannibucau.wordpress.com/ >>> >>> LinkedIn: http://fr.linkedin.com/in/rmannibucau >>> >>> Github: https://github.com/rmannibucau >>> >>> >>> >>> >>> >>> >>> >>> 2014-10-29 15:00 GMT+01:00 Alex Soto <[email protected]>: >>> >>> > so how can I create a real subresource then? Ok just using @Path >>> without >>> >>> > Http method, but then how to differentiate if subresource should be >>> for >>> >>> a >>> >>> > post or for a get? >>> >>> > >>> >>> > 2014-10-29 14:22 GMT+01:00 Romain Manni-Bucau < >>> >>> [email protected]>: >>> >>> > >>> >>> >> Hi >>> >>> >> >>> >>> >> yes but no :p >>> >>> >> >>> >>> >> in details: we deploy classes with only method @Path (no class >>> @path) >>> >>> >> as endpoint by default (ie you use scanning) cause users do it >>> (comes >>> >>> >> from spring I think). >>> >>> >> Romain Manni-Bucau >>> >>> >> Twitter: @rmannibucau >>> >>> >> Blog: http://rmannibucau.wordpress.com/ >>> >>> >> LinkedIn: http://fr.linkedin.com/in/rmannibucau >>> >>> >> Github: https://github.com/rmannibucau >>> >>> >> >>> >>> >> >>> >>> >> >>> >>> >> 2014-10-29 14:09 GMT+01:00 Alex Soto <[email protected]>: >>> >>> >> > Hi guys, >>> >>> >> > Currently I am developing some jax-rs endpoints with Apache TomEE >>> >>> 1.7.1. >>> >>> >> I >>> >>> >> > am trying to develop some subresources, but there is something >>> that >>> >>> >> > confuses me: >>> >>> >> > >>> >>> >> > Reading some documentation in summary says that your subresource >>> >>> should >>> >>> >> not >>> >>> >> > be annotated with @Path annotation and they gives you next >>> example: >>> >>> >> > >>> >>> >> > // Subresource class >>> >>> >> > public class Employee { >>> >>> >> > >>> >>> >> > // Subresource method: returns the employee's last name >>> >>> >> > @GET >>> >>> >> > @Path("/lastname") >>> >>> >> > public String getEmployeeLastName() { >>> >>> >> > ... >>> >>> >> > return lastName >>> >>> >> > } >>> >>> >> > } >>> >>> >> > >>> >>> >> > In theory it should be a subresource, but when I deploy this in >>> >>> TomEE I >>> >>> >> can >>> >>> >> > access to this subresource directly from path provided in each >>> >>> method (in >>> >>> >> > previous case localhost:8080/app/lastname), but my question is >>> that >>> >>> if it >>> >>> >> > is a subresource, it should not be accessed directly from >>> browser but >>> >>> >> from >>> >>> >> > another resource right? So for example it should be valid >>> accessing >>> >>> from >>> >>> >> > localhost:8080/app/employee/lastname >>> >>> >> > >>> >>> >> > You can see the example here >>> >>> >> > http://docs.oracle.com/javaee/6/tutorial/doc/gknav.html >>> >>> >> > >>> >>> >> > Alex. >>> >>> >> > >>> >>> >> > >>> >>> >> > >>> >>> >> > -- >>> >>> >> > +----------------------------------------------------------+ >>> >>> >> > Alex Soto Bueno >>> >>> >> > www.lordofthejars.com >>> >>> >> > +----------------------------------------------------------+ >>> >>> >> >>> >>> > >>> >>> > >>> >>> > >>> >>> > -- >>> >>> > +----------------------------------------------------------+ >>> >>> > Alex Soto Bueno - Computer Engineer >>> >>> > www.lordofthejars.com >>> >>> > +----------------------------------------------------------+ >>> >>> >>> >> >>> >> >>> >> >>> >> -- >>> >> +----------------------------------------------------------+ >>> >> Alex Soto Bueno - Computer Engineer >>> >> www.lordofthejars.com >>> >> +----------------------------------------------------------+ >>> >> >>> > >>> > >>> > >>> > -- >>> > +----------------------------------------------------------+ >>> > Alex Soto Bueno - Computer Engineer >>> > www.lordofthejars.com >>> > +----------------------------------------------------------+ >>> >> >> >> >> -- >> +----------------------------------------------------------+ >> Alex Soto Bueno - Computer Engineer >> www.lordofthejars.com >> +----------------------------------------------------------+ >> > > > > -- > +----------------------------------------------------------+ > Alex Soto Bueno - Computer Engineer > www.lordofthejars.com > +----------------------------------------------------------+
