2010-04-14 53 views
2

我试图用spring创建一个简单的项目并声明+ jax-ws/jax-rs注释,但我没有得到它的工作。阐明http错误404

我用于字正腔圆整合教程一些很好的教程

字正腔圆创建API页像教程,但我得到这个错误: 如果我开一个挂接点,例如REST一个(/休息/服务/的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> 

enunciate.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(); 
    } 

} 

我的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(); 
} 

,我把@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> 

合并的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> 

你可以看到有关弹性一些配置,运动衫和春天和发音。 我已经尝试了几种配置,我无法得到xml或json响应...只有404。 没有人知道什么是错的? enter code here

回答

1

我有同样的问题。问题在于Eclipse创建了一个web.xml文件。该文件替换了由发音

创建的web.xml