users@jersey.java.net

Sub resource Locators in Jersey -cannot access attributes of the sub resource

From: Suchitha Koneru (sukoneru) <"Suchitha>
Date: Wed, 22 Jul 2009 12:16:10 -0700

Hello Jersey Users,

                   I am using Jersey 1.1.0-ea version, with Java 1.6
and Tomcat 5.5. I tried using sub resource locators as shown in the
User-management example below and I cannot get it to work

 

//Main Resource

                @Path("Users")

public class UserMgmtService {

                                

static UserStore store;

                                static {

                                                store =
UserStore.getInstance();

                                }

 

                @Produces("application/xml")

                @GET

                public UserBean[] getAllUsers() throws Exception {


                                UserBean[] users = store.getAllUsers();

                                System.out.println("the users are :");

                                for(int i=0;i<users.length;i++){

 
System.out.println(users[i]);

                                }

                                return users;

                }

 

                @Context

                @PUT

                @Consumes("application/xml")

                public JAXBElement<UserBean>
updateUser(JAXBElement<UserBean> uBean) throws Exception{

                                try{

                                                System.out.println("the
name of the user to be updated is :"+uBean.getValue().getFirstName());

 
store.updateUser(uBean.getValue());

                                                return uBean;

                                }catch(Exception e){

                                                e.printStackTrace();

                                                throw e;

                                }

 

                }

 

//Sub resource Locator

                

                @Path("{userID}/")

                                public UserBean
getUser(@PathParam("userID") String userID) throws Exception {

                                                try{

                                                                UserBean
ubean = store.getUser(Long.parseLong(userID));

                                                                return
ubean;

                                                }catch(Exception e){

 
e.printStackTrace();

                                                                throw e;

                                                }

                

                }

 

 

 

//Sub resource

            @XmlRootElement

public class UserBean {

                

                                private long userId = 0;

                                private String firstName = null;

                                private String lastName = null;

                                private String phoneNumber = null;

                                private String email = null;

 

                                public UserBean(){}

                

                                @GET

                                @Produces ("application/xml")

                                public UserBean getUser(){

                                                return this;

                                }

 

                                @Path("firstName")

                                public String getFirstName() {

                                                return firstName;

                                }

 

                                @Path("lastName")

                                public String getLastName() {

                                                return lastName;

                                }

                                

                                public long getUserId() {

                                                return userId;

                                }

 

                                public void setUserId(long userId) {

                                                this.userId = userId;

                                }

 

                }

 

 

 

  Iam able to access the user resource with the url , where "1" is the
id of the user

 

http://localhost.cisco.com:8081/SvcWsJaxRs/Users/1

                

However ,When I try to access any of the arrtibutes of the user , it
leads to a 404 (page not found). Here the attribute firstName is
annotated with @Path("firstName") as shown above

 

http://localhost.cisco.com:8081/SvcWsJaxRs/Users/1/firstName

 

could you please let me know, if I am missing something

 

thank you,

suchitha.