2016-11-27 1 views
0

Spring 및 REST 기술을 연구하기 위해 만든 RESTful 서비스가 거의없는 소규모 SpringBoot 프로젝트가 있습니다. Spring-boot를 통해 실행하면 : 컨트롤러에서 @RequestMapping에 적어 둔 localhost : 8080/+에서 제대로 작동하도록 실행하십시오. 예에서, 로컬 호스트 : 8080/restapp/테스트/{ID} :임베디드 Tomcat에서 시작하는 프로젝트이지만 전체 Tomcat에서 작동하지 않습니다.

@RequestMapping(value = "http ://localhost:8080/restapps-0.0.1-SNAPSHOT/restapp/test/{id}", 
     method = RequestMethod.GET) 
    public String getWelcome(@PathVariable(value = "id") String id) { 
    return "Welcome to jax-rs " + id; 
} 

전체 톰캣에 배포하지만, 로컬 호스트에서 시작 : 생성하는 동안 테스트를 위해 추가 whitch 8080/project_version 그것은 (index.html을 오픈 프로젝트) 나는 내 서비스에 액세스하지 못했습니다. 나는 시도 :

로컬 호스트 : 8080/project_version/restapp/테스트/{ID}

로컬 호스트 : 8080/project_version/테스트/{ID}

로컬 호스트 : 8080/project_version/프로젝트 이름/restapp/테스트/{id}

하지만 404 오류 만 있습니다.

Application.java

@Configuration 
@EnableAutoConfiguration 
@ComponentScan 
public class Application { 
    public static void main(String[] args) { 
     ApplicationContext ctx = SpringApplication.run(Application.class, args); 
    } 
} 

Controller.java

@RestController 
public class Controller extends ApplicationConfig { 

    @Override 
    public Set<Class<?>> getClasses() { 
     Set<Class<?>> s = new HashSet<Class<?>>(); 
     s.add(Controller.class); 
     return s; 
    } 

    @RequestMapping(value = "http ://localhost:8080/restapps-0.0.1-SNAPSHOT/restapp/test/{id}", 
      method = RequestMethod.GET) 
    public String getWelcome(@PathVariable(value = "id") String id) { 
     return "Welcome to jax-rs " + id; 
    } 
} 

ApplicationConfig - 응용 프로그램을 확장 빈 클래스.

모든 조언/답변에 대해 고맙습니다.

@RestController 
@RequestMapping(value="/test") 
public class Controller extends ApplicationConfig { 

    @RequestMapping(value = "{id}", method = RequestMethod.GET) 
    public String getWelcome(@PathVariable(value = "id") String id) { 
     return "Welcome to jax-rs " + id; 
    } 
} 

당신은 할 수 있어야 : 그것은 변경해야하므로 컨트롤러 @RequestMappingvalue는 만 상대 경로가 아닌 절대 경로 여야하기 때문에 다음과 같이

+0

한 가지 더 - Application.java가 전혀 시작되지 않는 것처럼 보입니다. 왜냐하면'Logger log = Logger.getLogger (Application.class.getName()); log.info ("///////// Application started successfully, ////////") Tomcat 로그 파일에서 아무 것도 변경하지 마십시오. 프로젝트 배포에 대한 정보 만 있습니다. – WildTigerrr

답변

0

응용 프로그램을 SpringBootServletInitializer에서 확장하여 문제를 해결했습니다.

0

컨트롤러 매핑이 올바르지 않습니다 (자원 ID 1) 아래의 URL을 사용하여 컨트롤러 방법에 액세스 : 응용 프로그램 클래스에 @SpringBootApplication 또는 @EnableWebMvc을 추가 할 수

http ://localhost:8080/restapps-0.0.1-SNAPSHOT/test/1 
+0

나도 알다시피, 그것은 원래'@RestController @RequestMapping (value = "/ restapp")와 같았다. public class Controller는 ApplicationConfig {... @RequestMapping (value = "/ test/{id}", method = RequestMethod)를 확장한다. GET) public String getWelcome (@PathVariable (value = "id") 문자열 ID) {return "Welcome to jax-rs"+ id; }}' 나는 그것을 작동 시키려고 했으므로 다른 방법으로 경로를 변경하십시오. – WildTigerrr

0

시도합니다. 다음은 javaguy의 답변을 참조하십시오.

+0

그러나 @ SpringBootApplication은 이미 가지고있는 @ Configuration, @ EnableAutoConfiguration 및 @ ComponentScan을 사용하는 것과 같습니다. 그리고 @ EnableWebMvc는 필요한 경우 Configuration 클래스에서만 사용할 수 있습니다. – WildTigerrr

관련 문제