Java 阐明http错误404

Java 阐明http错误404,java,spring,enunciate,Java,Spring,Enunciate,我试图用spring和Enounciate+jax ws/jax rs注释设置一个简单的项目,但没有成功 我使用了一些很好的教程作为“阐明集成”教程 如教程中所述,详细说明如何创建api页面,但我遇到以下错误: 如果我打开一个挂载点,例如REST(/REST/Service/getService/1),我将得到一个404错误:NOT_FOUND 以下是我的代码示例: <plugin> <groupId>org.c

我试图用spring和Enounciate+jax ws/jax rs注释设置一个简单的项目,但没有成功

我使用了一些很好的教程作为“阐明集成”教程

如教程中所述,详细说明如何创建api页面,但我遇到以下错误: 如果我打开一个挂载点,例如REST(/REST/Service/getService/1),我将得到一个404错误:NOT_FOUND

以下是我的代码示例:

              <plugin>
                <groupId>org.codehaus.enunciate</groupId>
                <artifactId>maven-enunciate-spring-plugin</artifactId> 
                <version>1.19</version>
                  <configuration>
                     <configFile>src/main/webapp/WEB-INF/enunciate.xml</configFile>
                  </configuration> 
                <executions>                
                  <execution>             
                    <goals>
                      <goal>assemble</goal>
                    </goals>
                  </execution>
                </executions>
              </plugin>
...


        <dependency>
          <groupId>org.codehaus.enunciate</groupId>
          <artifactId>enunciate-spring-app-rt</artifactId>
          <version>1.19</version>
        </dependency>

org.codehaus.expunciate
maven阐明spring插件
1.19
src/main/webapp/WEB-INF/enuciate.xml
集合
...
org.codehaus.expunciate
说出春天的故事
1.19
expensiate.xml:

<?xml version="1.0" encoding="UTF-8"?>
<enunciate xsi:noNamespaceSchemaLocation="http://enunciate.codehaus.org/schemas/enunciate-1.19.xsd">

    <api-classes>
        <include pattern="com.eco2market.markets.webServices.*"/>
        <include pattern="com.eco2market.markets.model.*"/>
    </api-classes>
    <webapp  mergeWebXML="src/main/webapp/WEB-INF/web.xml"/> <!-- merge ok-->

    <modules>
         <docs docsDir="api" title="eco2data ws API"/>

        <spring-app>
        <!--    <war mergeWebXML="src/main/webapp/WEB-INF/web.xml"/>   no merge-->

            <springImport file="src/main/webapp/WEB-INF/spring/applicationContext-config.xml"/> 
            <!-- <springImport file="src/main/webapp/WEB-INF/spring/applicationContext-security.xml"/>   -->
        </spring-app>

    </modules>

</enunciate>

我的web服务实现:

package com.eco2market.markets.webServices;

import java.util.List;
import javax.jws.WebService;
import javax.ws.rs.Path;
import org.springframework.beans.factory.annotation.Autowired;
import com.eco2market.markets.dao.MAssetsDao;
import com.eco2market.markets.model.MAssets;

@Path("/Asset")
@WebService(endpointInterface = "com.eco2market.markets.webServices.MAssetsWebService")
public class MAssetsWebServiceImpl implements MAssetsWebService
{

    @Autowired
    private MAssetsDao ma;

    public MAssets getAssetV1(Integer id){
        return ma.getAsset(id);
    }

    public List <MAssets> getMAssetsV1()
    {
        return ma.getMAssets();
    }

}
package com.eco2market.markets.webServices;
导入java.util.List;
导入javax.jws.WebService;
导入javax.ws.rs.Path;
导入org.springframework.beans.factory.annotation.Autowired;
import com.eco2market.markets.dao.MAssetsDao;
导入com.eco2market.markets.model.MAssets;
@路径(“/Asset”)
@WebService(endpointInterface=“com.eco2market.markets.webServices.MAssetsWebService”)
公共类MAssetsWebService Impl实现MAssetsWebService
{
@自动连线
马岛私人按摩院;
公共MAssets getAssetV1(整数id){
返回ma.getAsset(id);
}
公共列表getMAssetsV1()
{
返回ma.getMAssets();
}
}
我的web服务界面:

package com.eco2market.markets.webServices;

import java.util.List;

import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;


import com.eco2market.markets.model.MAssets;


@WebService
public interface MAssetsWebService 
{
    @WebMethod( operationName="getAssetV1")
    @Path("/getAsset/{id}")
    @GET
    @Produces({"application/xml","application/json"})
    public MAssets getAssetV1(@PathParam(value = "id")Integer id);


    @WebMethod( operationName="getMAssetsV1")
    @Path("/getMAssets")
    @GET
    @Produces({"application/xml","application/json"})
    public List <MAssets> getMAssetsV1();
}
package com.eco2market.markets.webServices;
导入java.util.List;
导入javax.jws.WebMethod;
导入javax.jws.WebService;
导入javax.ws.rs.GET;
导入javax.ws.rs.Path;
导入javax.ws.rs.PathParam;
导入javax.ws.rs.products;
导入com.eco2market.markets.model.MAssets;
@网络服务
公共接口MAssetsWebService
{
@WebMethod(operationName=“getAssetV1”)
@路径(“/getAsset/{id}”)
@得到
@产生({“application/xml”、“application/json”})
公共MAssets getAssetV1(@PathParam(value=“id”)整数id);
@WebMethod(operationName=“getMAssetsV1”)
@路径(“/getMAssets”)
@得到
@产生({“application/xml”、“application/json”})
公共列表getMAssetsV1();
}
我把@XmlRootElement放在模型上。 在spring应用程序上下文xml文件中:

 <tx:annotation-driven  proxy-target-class="true"/>
    <bean id="MAssetsWebService" class="com.eco2market.markets.webServices.MAssetsWebServiceImpl" autowire-candidate="false"/>

这是我的web.xml:

     <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
  <!-- 
        CONFIG FILE OF ALL COMPONENTS' ECO2DATA-APPLICATION
   -->      
    <!-- Application's name in the browser -->
    <display-name>Spring BlazeDS Integration Samples</display-name>


      <!--############################# Spring BlazeDS Integration servlet #######################-->
      <servlet>
        <servlet-name>flex</servlet-name> 
           <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
           <load-on-startup>1</load-on-startup> 
        </servlet> 


     <!-- Path of the spring's config-files :
         applicationContext-config.xml : containts the general configs (beans, hibernate configs)        
         applicationContext-security.xml : containts the security configs (roles, ..)
     -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            /WEB-INF/spring/applicationContext-*.xml,
            /WEB-INF/spring/applicationContextLoc-*.xml
        </param-value>
    </context-param>
     <listener>    
         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

     <!-- Http Flex Session attribute and binding listener support-->
    <listener>
        <listener-class>flex.messaging.HttpFlexSession</listener-class>
    </listener>

    <filter>
        <filter-name>encoding-filter</filter-name>
        <filter-class>
            org.springframework.web.filter.CharacterEncodingFilter
        </filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
    </filter>

    <filter-mapping>
        <filter-name>encoding-filter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>


    <filter>
     <filter-name>springSecurityFilterChain</filter-name>
     <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
 </filter> 

    <filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
              <url-pattern>/*</url-pattern>
</filter-mapping>




                <!-- servelet RDS -->
    <servlet>
        <servlet-name>RDSDispatchServlet</servlet-name>
        <servlet-class>flex.rds.server.servlet.FrontEndServlet</servlet-class>
        <init-param>
            <param-name>messageBrokerId</param-name>
            <param-value>_messageBroker</param-value>
        </init-param>
        <init-param>
            <param-name>useAppserverSecurity</param-name>
            <param-value>false</param-value>
        </init-param>
        <load-on-startup>10</load-on-startup>
    </servlet>

    <servlet-mapping id="RDS_DISPATCH_MAPPING">
        <servlet-name>RDSDispatchServlet</servlet-name>
        <url-pattern>/CFIDE/main/ide.cfm</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
          <servlet-name>flex</servlet-name>
          <url-pattern>/messagebroker/*</url-pattern>
     </servlet-mapping> 



     <welcome-file-list>
           <welcome-file>index.jsp</welcome-file>
           <welcome-file>index.html</welcome-file>
     </welcome-file-list>



  </web-app>

SpringBlazeDS集成示例
弯曲
org.springframework.web.servlet.DispatcherServlet
1.
上下文配置位置
/WEB-INF/spring/applicationContext-*.xml,
/WEB-INF/spring/applicationContextLoc-*.xml
org.springframework.web.context.ContextLoaderListener
flex.messaging.HttpFlexSession
编码过滤器
org.springframework.web.filter.CharacterEncodingFilter
编码
UTF-8
编码过滤器
/*
springSecurityFilterChain
org.springframework.web.filter.DelegatingFilterProxy
springSecurityFilterChain
/*
RDSDispatchServlet
flex.rds.server.servlet.FrontEndServlet
messageBrokerId
_消息代理
useAppserverSecurity
假的
10
RDSDispatchServlet
/CFIDE/main/ide.cfm
弯曲
/消息代理/*
index.jsp
index.html
合并xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

  <display-name>Spring BlazeDS Integration Samples</display-name>

      <filter>
        <filter-name>encoding-filter</filter-name>
        <filter-class>
            org.springframework.web.filter.CharacterEncodingFilter
        </filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
    </filter>

  <filter>
                <filter-name>springSecurityFilterChain</filter-name>
                <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
            </filter>

  <filter>
    <filter-name>http-request-context</filter-name>
    <filter-class>org.codehaus.enunciate.webapp.HTTPRequestContextFilter</filter-class>
  </filter>

  <filter>
    <filter-name>wsdl-filter</filter-name>
    <filter-class>org.codehaus.enunciate.webapp.WSDLFilter</filter-class>
    <init-param>
      <param-name>assumed-base-address</param-name>
      <param-value>http://localhost:8080/Eco2Data-webApp</param-value>
    </init-param>
  </filter>

  <filter>
    <filter-name>wadl-filter</filter-name>
    <filter-class>org.codehaus.enunciate.webapp.WADLFilter</filter-class>
    <init-param>
      <param-name>assumed-base-address</param-name>
      <param-value>http://localhost:8080/Eco2Data-webApp</param-value>
    </init-param>
  </filter>

  <filter>
    <filter-name>wsdl-redirect-filter-ns1</filter-name>
    <filter-class>org.codehaus.enunciate.webapp.WSDLRedirectFilter</filter-class>
    <init-param>
      <param-name>wsdl-location</param-name>
      <param-value>/api/ns1.wsdl</param-value>
    </init-param>
  </filter>

  <filter-mapping>
        <filter-name>encoding-filter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

  <filter-mapping>
              <filter-name>springSecurityFilterChain</filter-name>
              <url-pattern>/*</url-pattern>
            </filter-mapping>

  <filter-mapping>
    <filter-name>http-request-context</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

  <filter-mapping>
    <filter-name>wsdl-filter</filter-name>
    <url-pattern>/api/ns1.wsdl</url-pattern>
  </filter-mapping>

  <filter-mapping>
    <filter-name>wadl-filter</filter-name>
    <url-pattern>/api/application.wadl</url-pattern>
  </filter-mapping>

  <filter-mapping>
    <filter-name>wsdl-redirect-filter-ns1</filter-name>
    <url-pattern>/soap/MAssetsWebServiceService</url-pattern>
  </filter-mapping>


  <listener>
        <listener-class>flex.messaging.HttpFlexSession</listener-class>
    </listener>

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

  <listener>
    <listener-class>org.codehaus.enunciate.modules.spring_app.SpringComponentPostProcessor</listener-class>
  </listener>

  <servlet>
        <servlet-name>flex</servlet-name> 
           <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
           <load-on-startup>1</load-on-startup> 
        </servlet>

  <servlet>
        <servlet-name>RDSDispatchServlet</servlet-name>
        <servlet-class>flex.rds.server.servlet.FrontEndServlet</servlet-class>
        <init-param>
            <param-name>messageBrokerId</param-name>
            <param-value>_messageBroker</param-value>
        </init-param>
        <init-param>
            <param-name>useAppserverSecurity</param-name>
            <param-value>false</param-value>
        </init-param>
        <load-on-startup>10</load-on-startup>
    </servlet>

  <servlet>
    <servlet-name>jaxws-MAssetsWebServiceService</servlet-name>
    <servlet-class>org.codehaus.enunciate.modules.jaxws_ri.WSSpringServlet</servlet-class>
  </servlet>

  <servlet>
    <servlet-name>jersey</servlet-name>
    <servlet-class>org.codehaus.enunciate.modules.jersey.EnunciateJerseyServletContainer</servlet-class>
    <init-param>
      <param-name>org.codehaus.enunciate.modules.jersey.config.ServletPath</param-name>
      <param-value>/rest</param-value>
    </init-param>
  </servlet>

  <servlet-mapping id="RDS_DISPATCH_MAPPING">
        <servlet-name>RDSDispatchServlet</servlet-name>
        <url-pattern>/CFIDE/main/ide.cfm</url-pattern>
    </servlet-mapping>

  <servlet-mapping>
          <servlet-name>flex</servlet-name>
          <url-pattern>/messagebroker/*</url-pattern>
     </servlet-mapping>

  <servlet-mapping>
    <servlet-name>jaxws-MAssetsWebServiceService</servlet-name>
    <url-pattern>/soap/MAssetsWebServiceService</url-pattern>
  </servlet-mapping>

  <servlet-mapping>
    <servlet-name>jersey</servlet-name>
    <url-pattern>/json/Asset/getAsset/*</url-pattern>
  </servlet-mapping>

  <servlet-mapping>
    <servlet-name>jersey</servlet-name>
    <url-pattern>/json/Asset/getMAssets</url-pattern>
  </servlet-mapping>

  <servlet-mapping>
    <servlet-name>jersey</servlet-name>
    <url-pattern>/rest/Asset/getAsset/*</url-pattern>
  </servlet-mapping>

  <servlet-mapping>
    <servlet-name>jersey</servlet-name>
    <url-pattern>/rest/Asset/getMAssets</url-pattern>
  </servlet-mapping>

  <servlet-mapping>
    <servlet-name>jersey</servlet-name>
    <url-pattern>/xml/Asset/getAsset/*</url-pattern>
  </servlet-mapping>

  <servlet-mapping>
    <servlet-name>jersey</servlet-name>
    <url-pattern>/xml/Asset/getMAssets</url-pattern>
  </servlet-mapping>

  <mime-mapping>
    <extension>wsdl</extension>
    <mime-type>text/xml</mime-type>
  </mime-mapping>

  <mime-mapping>
    <extension>xsd</extension>
    <mime-type>text/xml</mime-type>
  </mime-mapping>

  <welcome-file-list>
           <welcome-file>index.jsp</welcome-file>
           <welcome-file>index.html</welcome-file>
     </welcome-file-list>

</web-app>

SpringBlazeDS集成示例
编码过滤器
org.springframework.web.filter.CharacterEncodingFilter
编码
UTF-8
springSecurityFilterChain
org.springframework.web.filter.DelegatingFilterProxy
http请求上下文
org.codehaus.enunciate.webapp.HTTPRequestContextFilter
wsdl过滤器
org.codehaus.enunciate.webapp.WSDLFilter
假定基址
http://localhost:8080/Eco2Data-网络应用
滤池
org.codehaus.enunciate.webapp.WADLFilter
假定基址
http://localhost:8080/Eco2Data-网络应用
wsdl-redirect-filter-ns1
org.codehaus.enunciate.webapp.wsdlf
wsdl位置
/api/ns1.wsdl
编码过滤器
/*
springSecurityFilterChain
/*
http请求上下文
/*
wsdl过滤器
/api/ns1.wsdl
滤池
/api/application.wadl
wsdl-redirect-filter-ns1
/soap/MassetSwebService服务
flex.messaging.HttpFlexSession
org.springframework.web.context.ContextLoaderListener
org.codehaus.enunciate.modules.spring_app.springcomponent后处理器
弯曲
org.springframework.web.servlet.DispatcherServlet
1.
RDSDispatchServlet
flex.rds.server.servlet.FrontEndServlet
messageBrokerId
_消息代理
useAppserverSecurity
假的
10
jaxws MassetSwebService服务
org.codehaus.enunciate.modules.jaxws_ri.WSSpringServlet
运动衫
org.codehaus.enunciate.modules.jersey.EnunciateJerseyServletContainer
org.codehaus.enunciate.modules.jersey.config.ServletPath