CXF + Spring: 没有找到匹配请求路径的根资源
CXF + Spring: No root resource matching request path has been found
尝试使用 CXF 和 Spring 获得 REST 服务,然后 运行 我碰壁了。其他一切看起来都很好,因为我可以访问我的 /services/ 页面并看到 MyService 列在 REST 服务下。我可以很好地查看服务的 WADL,我的方法出现在那里。但是,当我尝试访问它时,出现异常。
WARNING: No root resource matching request path /testApp/services/MyService/goTest has been found, Relative Path: /goTest. Please enable FINE/TRACE log level for more details.
Jul 19, 2016 4:30:50 PM org.apache.cxf.jaxrs.impl.WebApplicationExceptionMapper toResponse
WARNING: javax.ws.rs.NotFoundException: HTTP 404 Not Found
我的服务界面
@Path("/MyService")
@Service
public interface MyService {
@GET
@Path("/goTest")
@Produces(MediaType.APPLICATION_JSON)
public Response testService();
}
服务实施:
public class MyServiceImpl implements MyService {
public Response testService() {
// Code
return Response.status(200).entity(gson.toJson(json)).build();
}
}
配置class:
@Configuration
public class WebServiceSpringConfig {
@Bean(name=Bus.DEFAULT_BUS_ID)
public SpringBus springBus() {
return new SpringBus();
}
@Bean
public Server MyService() {
JAXRSServerFactoryBean endpoint = new JAXRSServerFactoryBean();
endpoint.setBus(springBus());
endpoint.setAddress("/MyService");
endpoint.setServiceBean(new MyServiceImpl());
return endpoint.create();
}
}
Spring 配置和 CXF servlet 在 web.xml
中声明
我正在使用 Spring 4.2.0 和 CXF 3.1.4
您的 url goTest 可以如下所示访问。
http://<ip-add>:<port>/<web-root>/services/MyService/MyService/goTest
简而言之,再次添加 MyService,因为您已将 MyService 设置为 setAddress
以及 @Path
/testApp/services/MyService/MyService/goTest
尝试使用 CXF 和 Spring 获得 REST 服务,然后 运行 我碰壁了。其他一切看起来都很好,因为我可以访问我的 /services/ 页面并看到 MyService 列在 REST 服务下。我可以很好地查看服务的 WADL,我的方法出现在那里。但是,当我尝试访问它时,出现异常。
WARNING: No root resource matching request path /testApp/services/MyService/goTest has been found, Relative Path: /goTest. Please enable FINE/TRACE log level for more details.
Jul 19, 2016 4:30:50 PM org.apache.cxf.jaxrs.impl.WebApplicationExceptionMapper toResponse
WARNING: javax.ws.rs.NotFoundException: HTTP 404 Not Found
我的服务界面
@Path("/MyService")
@Service
public interface MyService {
@GET
@Path("/goTest")
@Produces(MediaType.APPLICATION_JSON)
public Response testService();
}
服务实施:
public class MyServiceImpl implements MyService {
public Response testService() {
// Code
return Response.status(200).entity(gson.toJson(json)).build();
}
}
配置class:
@Configuration
public class WebServiceSpringConfig {
@Bean(name=Bus.DEFAULT_BUS_ID)
public SpringBus springBus() {
return new SpringBus();
}
@Bean
public Server MyService() {
JAXRSServerFactoryBean endpoint = new JAXRSServerFactoryBean();
endpoint.setBus(springBus());
endpoint.setAddress("/MyService");
endpoint.setServiceBean(new MyServiceImpl());
return endpoint.create();
}
}
Spring 配置和 CXF servlet 在 web.xml
中声明我正在使用 Spring 4.2.0 和 CXF 3.1.4
您的 url goTest 可以如下所示访问。
http://<ip-add>:<port>/<web-root>/services/MyService/MyService/goTest
简而言之,再次添加 MyService,因为您已将 MyService 设置为 setAddress
以及 @Path
/testApp/services/MyService/MyService/goTest