Hi,

I guess you have specified path "categoryservice" twice: first time in 
jaxrs:server declaration and second in @Path annotation for the CategoryService 
class.
Either set one from them to "/" or use 
http://localhost:8080/cxftutorial/categoryservice/categoryservice/category/001/books
 URL.

Regards,
Andrei.

> -----Original Message-----
> From: Dinesh Babu [mailto:[email protected]]
> Sent: Freitag, 1. Juli 2016 12:06
> To: [email protected]
> Subject: Unable to find the
> 
> 
> Hi,
> 
> I can see that my rest webservice is deployed in tomcat+cxf environment when
> I fire the URL http://localhost:8080/cxftutorial/categoryservice?_wadl
> 
> But when I try to access one of the we service end points
> http://localhost:8080/cxftutorial/categoryservice/category/001/books , I get
> the following error in the console.
> 
> 
> WARNING: No root resource matching request path
> /cxftutorial/categoryservice/category/001/books has been found, Relative Path:
> /category/001/books. Please enable FINE/TRACE log level for more details.
> Jul 01, 2016 10:55:41 AM
> org.apache.cxf.jaxrs.impl.WebApplicationExceptionMapper toResponse
> WARNING: javax.ws.rs.NotFoundException
>        at
> org.apache.cxf.jaxrs.utils.SpecExceptions.toNotFoundException(SpecExceptions.j
> ava:87)
>        at
> org.apache.cxf.jaxrs.utils.ExceptionUtils.toNotFoundException(ExceptionUtils.ja
> va:117)
>        at
> org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.processRequest(JAXRSInInt
> erceptor.java:184)
>        at
> org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.handleMessage(JAXRSInInt
> erceptor.java:88)
>        at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChai
> n.java:272)
>        at
> org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationOb
> server.java:121)
>        at
> org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDes
> tination.java:241)
>        at
> org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletCon
> troller.java:248)
>        at
> org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java
> :222)
>        at
> org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java
> :153)
>        at
> org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServ
> let.java:171)
>        at
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractH
> TTPServlet.java:286)
>        at
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.doGet(AbstractHTTPServl
> et.java:211)
>        at javax.servlet.http.HttpServlet.service(HttpServlet.java:624)
>        at
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServ
> let.java:262)
>        at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilt
> erChain.java:303)
>        at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.
> java:208)
>        at 
> org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
> 
> 
> 
> web.xml:
> 
> <!-- <!DOCTYPE web-app PUBLIC
> "-//Sun Microsystems, Inc.//DTD Web Application 2.5//EN"
> "http://java.sun.com/dtd/web-app_2_5.dtd"; > -->
> 
> <web-app xmlns="http://java.sun.com/xml/ns/javaee";
>                                        
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-
> instance"
> 
> xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
>              http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd";
>                                        version="2.5"> <!--<web-app>-->
>   <display-name>Archetype Created Web Application</display-name>
>     <context-param>
>         <param-name>contextConfiglocation</param-name>
>         <param-value>/WEB-INF/applicationContext.xml</param-value>
>         <!--<param-value>/WEB-INF/bean.xml,/WEB-
> INF/applicationContext.xml</param-value>-->
>     </context-param>
>     <listener>
>         <listener-
> class>org.springframework.web.context.ContextLoaderListener</listener-class>
>     </listener>
>     <servlet>
>         <servlet-name>CXFServlet</servlet-name>
>         
> <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
>         <load-on-startup>1</load-on-startup>
>     </servlet>
>     <servlet-mapping>
>         <servlet-name>CXFServlet</servlet-name>
>         <url-pattern>/*</url-pattern>
>     </servlet-mapping>
> </web-app>
> 
> 
> applicationContext.xml:
> <?xml version="1.0" encoding="UTF-8"?>
> <beans xmlns="http://www.springframework.org/schema/beans";
>        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>        xmlns:context="http://www.springframework.org/schema/context";
>        xmlns:jaxws="http://cxf.apache.org/jaxws";
>        xmlns:jaxrs="http://cxf.apache.org/jaxrs";
>        xsi:schemaLocation="http://www.springframework.org/schema/beans
>        http://www.springframework.org/schema/beans/spring-beans.xsd
>       http://cxf.apache.org/jaxrs
>       http://cxf.apache.org/schemas/jaxrs.xsd
>       http://cxf.apache.org/jaxws
>       http://cxf.apache.org/schemas/jaxws.xsd
>       http://www.springframework.org/schema/context
>       http://www.springframework.org/schema/context/spring-context-4.1.xsd";>
> 
>     <import resource="classpath:META-INF/cxf/cxf.xml" />
>     <context:component-scan base-package="com.dinesh.tutorial.*" />
> 
> 
>     <jaxrs:server id="categoryservice" address="/categoryservice">
>         <jaxrs:serviceBeans>
>             <ref bean="categoryService" />
>         </jaxrs:serviceBeans>
>     </jaxrs:server>
> 
>     <bean id="categoryService"
> class="com.dinesh.tutorial.cxf.book.CategoryService">
>         <property name="categoryDAO">
>             <ref bean="categoryDAO" />
>         </property>
>     </bean>
>     <bean id="categoryDAO" class="com.dinesh.tutorial.cxf.book.CategoryDAO">
>         <!--  wire dependency-->
>     </bean>
> 
> </beans>
> 
> 
> categoryService.java
> 
> package com.dinesh.tutorial.cxf.book;
> 
> //JAX-RS Imports
> import javax.ws.rs.Consumes;
> import javax.ws.rs.DELETE;
> import javax.ws.rs.GET;
> import javax.ws.rs.POST;
> import javax.ws.rs.PUT;
> import javax.ws.rs.Path;
> import javax.ws.rs.PathParam;
> import javax.ws.rs.Produces;
> import javax.ws.rs.WebApplicationException;
> import javax.ws.rs.core.Response;
> import javax.ws.rs.core.Response.ResponseBuilder;
> import javax.ws.rs.core.Response.Status;
> 
> /*
> * CategoryService class - Add/Removes category for books  */
> 
> @Path("/categoryservice")
> @Produces("application/xml")
> public class CategoryService {
> 
>        public CategoryDAO categoryDAO;
> //     private CategoryDAO categoryDAO = new CategoryDAO();
> 
>        public CategoryDAO getCategoryDAO() {
>              return categoryDAO;
>        }
> 
>        public void setCategoryDAO(CategoryDAO categoryDAO) {
>              this.categoryDAO = categoryDAO;
>        }
> 
>        @POST
>        @Path("/category")
>        @Consumes("application/xml")
>        public Response addCategory(Category category) {
> 
>              System.out.println("addCategory called");
> 
>              Category cat = (Category) getCategoryDAO().getCategory(
>                            category.getCategoryId());
> 
>              if (cat != null) {
>                     return Response.status(Status.BAD_REQUEST).build();
>              } else {
>                     getCategoryDAO().addCategory(category);
>                     return Response.ok(category).build();
>              }
> 
>        }
> 
>        @GET
>        @Path("/category/{id}")
>        public Category getCategory(@PathParam("id") String id) {
> 
>              System.out.println("getCategory called with category id: " + id);
> 
>              Category cat = (Category) getCategoryDAO().getCategory(id);
>              if (cat == null) {
>                     ResponseBuilder builder = 
> Response.status(Status.BAD_REQUEST);
>                     builder.type("application/xml");
>                     builder.entity("<error>Category Not Found</error>");
>                     throw new WebApplicationException(builder.build());
>              } else {
>                     return cat;
>              }
>        }
> 
>        @DELETE
>        @Path("/category/{id}")
>        public Response deleteCategory(@PathParam("id") String id) {
> 
>              System.out.println("deleteCategory with category id : " + id);
> 
>              Category cat = (Category) getCategoryDAO().getCategory(id);
>              if (cat == null) {
>                     return Response.status(Status.BAD_REQUEST).build();
>              } else {
>                     getCategoryDAO().deleteCategory(id);
>                     return Response.ok().build();
>              }
>        }
> 
>        @PUT
>        @Path("/category")
>        public Response updateCategory(Category category) {
> 
>              System.out.println("updateCategory with category id : "
>                            + category.getCategoryId());
> 
>              Category cat = (Category) getCategoryDAO().getCategory(
>                            category.getCategoryId());
>              if (cat == null) {
>                     return Response.status(Status.BAD_REQUEST).build();
>              } else {
>                     getCategoryDAO().updateCategory(category);
>                     return Response.ok(category).build();
>              }
>        }
> 
>        @POST
>        @Path("/category/book")
>        @Consumes("application/xml")
>        public Response addBooks(Category category) {
> 
>              System.out.println("addBooks with category id : "
>                            + category.getCategoryId());
> 
>              Category cat = (Category) getCategoryDAO().getCategory(
>                            category.getCategoryId());
>              if (cat == null) {
>                     return Response.status(Status.NOT_FOUND).build();
>              } else {
>                     getCategoryDAO().addBook(category);
>                     return Response.ok(category).build();
>              }
>        }
> 
>        @GET
>        @Path("/category/{id}/books")
>        @Consumes("application/xml")
>        public Response getBooks(@PathParam("id") String id) {
> 
>              System.out.println("getBooks called with category id : " + id);
> 
>              Category cat = (Category) getCategoryDAO().getCategory(id);
> 
>              if (cat == null) {
>                     return Response.status(Status.NOT_FOUND).build();
>              } else {
>                     cat.setBooks(getCategoryDAO().getBooks(id));
>                     return Response.ok(cat).build();
> 
>              }
>        }
> 
> }
> 
> 
> Thanks,
> Dinesh
> 
> 
> ________________________________

Reply via email to