HTTP-404与cxf rs和spring集成

HTTP-404与cxf rs和spring集成,spring,rest,jax-rs,cxf,web.xml,Spring,Rest,Jax Rs,Cxf,Web.xml,我是web服务开发新手。尝试使用ApacheCXF和spring集成构建基本的restfull Web服务。但是当我尝试访问rest资源uri时,http-404就来了。以下是可能存在问题的文件: Web.xml <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation

我是web服务开发新手。尝试使用ApacheCXF和spring集成构建基本的restfull Web服务。但是当我尝试访问rest资源uri时,http-404就来了。以下是可能存在问题的文件:

Web.xml

<web-app version="3.0" 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_3_0.xsd" 
    metadata-complete="true">

    <display-name>RestDemo</display-name>
    <description>RestDemo</description>


    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>springrest-servlet.xml</param-value>
    </context-param>

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<servlet>
    <servlet-name>springrest</servlet-name>
    <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>springrest</servlet-name>
    <url-pattern>/webapi/*</url-pattern>
</servlet-mapping>
<?xml version="1.0" encoding="UTF-8"?>

重新演示
重新演示
上下文配置位置
springrest-servlet.xml
org.springframework.web.context.ContextLoaderListener
弹簧座
org.apache.cxf.transport.servlet.CXFServlet
1.
弹簧座
/webapi/*

springrestservlet.xml

<web-app version="3.0" 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_3_0.xsd" 
    metadata-complete="true">

    <display-name>RestDemo</display-name>
    <description>RestDemo</description>


    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>springrest-servlet.xml</param-value>
    </context-param>

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<servlet>
    <servlet-name>springrest</servlet-name>
    <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>springrest</servlet-name>
    <url-pattern>/webapi/*</url-pattern>
</servlet-mapping>
<?xml version="1.0" encoding="UTF-8"?>


MessageResource.java

@Path("/messages")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)


public class MessageResource {

    MessageService messageService = new MessageService();

    @GET
public List<Message> getMessages(@BeanParam MessageFilterBean filterBean) {

    if (filterBean.getYear() > 0) {
        return messageService.getAllMessagesForYear(filterBean.getYear());
    }
    if (filterBean.getStart() >= 0 && filterBean.getSize() > 0) {
        return messageService.getAllMessagesPaginated(filterBean.getStart(), filterBean.getSize());
    }
    return messageService.getAllMessages();
}
@Path(“/messages”)
@使用(MediaType.APPLICATION_JSON)
@产生(MediaType.APPLICATION_JSON)
公共类消息资源{
MessageService=newmessageservice();
@得到
公共列表getMessages(@BeanParam MessageFilterBean filterBean){
如果(filterBean.getYear()>0){
return messageService.getAllMessagesForYear(filterBean.getYear());
}
如果(filterBean.getStart()>=0&&filterBean.getSize()>0){
return messageService.getAllMessagesPaginated(filterBean.getStart(),filterBean.getSize());
}
return messageService.getAllMessages();
}

我试图访问的uri必须在
springrest servlet.xml
中包含jaxrs服务器和serviceBeans配置。请签出此文件中的
beans.xml
文件,其中包含有关如何配置服务器和serviceBeans的信息。

必须包含jaxrs服务器和serviceBeans配置在
springrest servlet.xml
中,签出其中的
beans.xml
文件,该文件包含有关如何配置服务器和serviceBeans的信息。

java API在没有spring集成的情况下运行良好。使用Jersey和cxf进行了检查。可以重新获得正确的响应。问题只存在于spring集成。问题仍然存在未解决:(…java API在没有spring集成的情况下工作正常。请与Jersey和cxf一起检查。可以重新获得正确的响应。问题仅存在于spring集成。问题仍未解决::(…我在下面添加了两行。但问题是相同的。因为您提到了
地址
作为
/test
,所以您需要测试url
http://localhost:8080/CopyOfGood/webapi/test/messages
或仅指定
地址=“/”
然后测试url
http://localhost:8080/CopyOfGood/webapi/messages
这就是我试图访问的内容。您是否将地址更改为
/
而不是
测试
我在下面添加了两行。但同样的问题。因为您提到了
地址
作为
/test
,您需要测试url
http://localhost:8080/CopyOfGood/webapi/test/messages
或仅指定
地址=“/”
然后测试url
http://localhost:8080/CopyOfGood/webapi/messages
这就是我试图访问的内容。您是否将地址更改为
/
而不是
测试