2010-04-14 2 views
2

나는 봄과 enunciate + jax-ws/jax-rs 어노테이션으로 간단한 프로젝트를 만들려고했으나 제대로 작동하지 않았다./ 을 내가 예를 나머지 하나 (들어, 마운트 지점을 열 경우 HTTP 오류 404를 표시하라.

나는

하게 발음이 튜토리얼 같은 API 페이지를 작성하게 발음 통합 자습서에 대한 몇 가지 좋은 자습서를 사용하지만, 나는이 오류 나머지/서비스 /의 getService/1), I는 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> 

내 웹 서비스 구현 :

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; 

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을 넣어. 그리고 스프링 애플리케이션 컨텍스트 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> 

, 저지 및 봄과 enunciate. 몇 가지 구성을 시도했는데 xml 또는 json 응답을 얻을 수 없습니다 ... 단지 404입니다. 무엇이 잘못되었는지 알지 못합니까? enter code here

답변

1

나는 동일한 문제가있었습니다. Eclipse가 web.xml 파일을 만들었다는 것이 문제였습니다. 이 파일은 enunciate가 만든 web.xml을 대체했습니다

관련 문제