2014-06-10 3 views
2

스프링 4의 새로운 웹 소켓 기능을 기존의 엔터프라이즈 스프링 웹 애플리케이션에 추가하려고합니다.스프링 4 웹 소켓을 이용한 DispatcherServlet 매핑

여기에 나와있는 대부분의 예제는 Spring의 주석 구성과 더 중요한 Spring Boot를 사용하는 것을 기반으로합니다. 내 응용 프로그램은 둘 다 사용하지 않으며 변환하기 위해 시간/관심이 없습니다.

많은 연구가 있었지만 예제 (XML 구성 및 Eclipse의 Tomcat 서버에 대한 배포)와 약간 다른 방식으로 응용 프로그램을 구성하는 데 따른 대부분의 문제점을 해결했습니다.

방금 ​​직면 한로드 블록은 DispatcherServlet의 매핑입니다.

<servlet> 
    <servlet-name>dispatcher</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <init-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/mvc-context.xml</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
    <async-supported>true</async-supported> 
</servlet> 

<servlet-mapping> 
    <servlet-name>dispatcher</servlet-name> 
    <url-pattern>/</url-pattern> 
</servlet-mapping> 

은 단순히 어떤 다른 방법을 찾을 수 없습니다 : 뭔가를

<servlet> 
    <servlet-name>dispatcher</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <init-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/mvc-context.xml</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>dispatcher</servlet-name> 
    <url-pattern>*.htm</url-pattern> 
    <url-pattern>*.json</url-pattern> 
    <url-pattern>*.tpl</url-pattern> 
    <!-- REST web services location --> 
    <url-pattern>/api/*</url-pattern> 
    <url-pattern>/gadget/*</url-pattern> 
    <url-pattern>/rr/*</url-pattern> 
    <url-pattern>/public/*</url-pattern> 
</servlet-mapping> 

이처럼 보였다 다음 WebSocket을 작동시킬 수하기 위해 나는이처럼 보였다 뭔가를 이동했다 DispatcherServlet이 모든 웹 소켓 통신을 선택하도록하십시오. 그것은 대부분 괜찮아요. 루트 매핑 "/"는 시작 파일 목록 당신이에 제공 할 수있는 것을 사용하여 실제 문제에 대한 지금

<mvc:resources mapping="/resources/**" location="/resources/" /> 
<mvc:resources mapping="/**/favicon.ico" location="/favicon.ico" /> 

: 난 아직도 정적 리소스를 제공 할 수 있도록 내 컨텍스트 XML에 다음을 추가 web.xml이 완전히 무시되었습니다. 내 web.xml 파일의 맨 아래에 다음과 같은 목록을 사용하고 있습니다 :

<welcome-file-list> 
    <welcome-file>index.htm</welcome-file> 
</welcome-file-list> 

빈 URL 경로에서로드되는 유형이 지정되지 않은 "index.htm으로"에 의존하는 우리의 응용 프로그램의 URL 경로 수십있다, 예를 https://somesite.com/member/account/ I 중 하나가 바로 "/"매핑 다시 일하기 시작 파일 목록을 내 웹 소켓 통신을 집어 또는 얻을의 DispatcherServlet에 특정 매핑을 할 수있는 방법

?

답변

3

내가 잘 작동하는 것 같다 해결책을 발견했다. 나는 기존의 서블릿 매핑과 새로운 "/"매핑을 상호 배타적 인 것으로 생각하고 있었지만 그렇지 않습니다. 내 기존 파일에 "/"매핑을 추가하기 만하면 DispatcherServlet이 JSP, JSON 및 websocket 요청에 환영 파일 URL 경로를 포함하여 아무런 문제가없는 것으로 보입니다.

1

이 대한의 ViewController를 등록 할 수 있습니다 :

@Configuration 
public class YourWebConfig extends WebMvcConfigurerAdapter { 

    @Override 
    public void addViewControllers(ViewControllerRegistry registry) { 
    registry.addViewController("/").setViewName("forward:/index.html"); 
    } 
} 
+0

그건 참신한 아이디어이고 루트 URL에는 잘 작동하지만 환영 파일에 의존하는 수십 개의 다른 URL 경로에도 비슷한 매핑을 추가해야합니다. 예를 들어, https://somesite.com/member/account/ 또한 Chris

관련 문제