Some additional progress - can now do http://localhost:8091/recommend/user1111 and get a JSON response. Response is not the correct JSON due to implicit marshalling of List<RecommendResponse> that Jersey-Jackson is doing - working on this. JAX-RS documentation says data classes like RecommendResponse need a class annotation of @XmlRootElement - why is an xml annotation needed at all? Additionally JAX-RS doesn't seem to have a concept of optional vs required - i need 2 get methods defined for /recommend - one returning an error message saying userID is required otherwise the server returns a 405. Finally JAX-RS can't handle patterns like /estimateForAnonymous/[toItemID]/[itemID1(=value1)](/[itemID2(=value2)]/... without supplying a regex and parsing the PathSegment yourself - a definite limitation.