2010-04-14 6 views
2

J'ai essayé de mettre en place un projet simple avec annotation spring et enunciate + jax-ws/jax-rs, mais je n'ai pas réussi.Enunciate http error 404

J'ai utilisé un grand tutoriel pour le tutoriel d'intégration enunciate

Enunciate créer l'api pages comme dans le tutoriel, mais je reçois cette erreur: Si j'ouvre un point de montage, par exemple le REST un (/ repos/service/getService/1), je vais obtenir une erreur 404: NOT_FOUND

est Voici un exemple de mon code:

   <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> 

mon service Web Application:

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

} 

mon service Web Interface:

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

et je mets @XmlRootElement sur le modèle. Et dans l'application du printemps fichier xml contexte:

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

voici mon 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> 

la fusion-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> 

vous pouvez voir la configuration sur Flex , maillot et printemps et énonciations. J'ai essayé plusieurs configuration, je ne pouvais pas obtenir la réponse xml ou json ... juste 404. Est-ce que personne ne sait ce qui ne va pas? enter code here

Répondre

1

J'ai eu le même problème. Le problème était qu'Eclipse créait un fichier web.xml. Ce fichier a remplacé le fichier web.xml créé par enunciate