나는 봄과 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