2015-06-24 4 views
0
  1. Я пишу простое веб-приложение на основе Spring MVC. Everything run Ok. Затем я создаю Endpoint и HandShake класс Terminal (C# Application) связывается с сервером через Websocket.Весна 4 WebSocket интегрируется в приложение Spring MVC

    • WebsocketEndPoint.java:

      public class WebsocketEndPoint extends BinaryWebSocketHandler { 
      
          @Override 
          public void afterConnectionEstablished(WebSocketSession session) throws Exception { 
           System.out.println("After Connection Established !!!!"); 
          } 
      
          @Override 
          protected void handleBinaryMessage(WebSocketSession session, BinaryMessage message) throws Exception { 
           session.sendMessage(message); 
          } 
      
          @Override 
          public void afterConnectionClosed(WebSocketSession session, CloseStatus closeStatus) throws Exception { 
           System.out.println("After Connection Closed !!!!"); 
          } 
      
      } 
      
    • HandshakeInterceptor.java:

      public class HandshakeInterceptor extends HttpSessionHandshakeInterceptor{ 
      
          @Override 
          public boolean beforeHandshake(ServerHttpRequest request, 
           ServerHttpResponse response, WebSocketHandler wsHandler, 
      Map<String, Object> attributes) throws Exception { 
           System.out.println("Before Handshake"); 
           return super.beforeHandshake(request, response, wsHandler, attributes); 
          } 
      
          @Override 
          public void afterHandshake(ServerHttpRequest request, 
      ServerHttpResponse response, WebSocketHandler wsHandler, Exception ex) { 
           System.out.println("After Handshake"); 
           super.afterHandshake(request, response, wsHandler, ex); 
          } 
      } 
      
    • XML для настройки обработчика WebSocket и перехватчик: websocketconfig.xml

      <beans xmlns="http://www.springframework.org/schema/beans" 
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
          xmlns:websocket="http://www.springframework.org/schema/websocket" 
          xsi:schemaLocation=" 
           http://www.springframework.org/schema/beans 
           http://www.springframework.org/schema/beans/spring-beans.xsd 
           http://www.springframework.org/schema/websocket 
           http://www.springframework.org/schema/websocket/spring-websocket.xsd"> 
      
           <bean id="websocket" class="com.javahash.spring.WebsocketEndPoint"/> 
      
           <websocket:handlers> 
            <websocket:mapping path="/PaymentHandler" handler="websocket"/> 
            <websocket:handshake-interceptors> 
            <bean class="com.javahash.spring.HandshakeInterceptor"/> 
            </websocket:handshake-interceptors> 
           </websocket:handlers> 
      </beans> 
      
  2. Добавить websocketconfig.xml в контексте Spring Application:

    • web.xml:

      <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"> 
      
          <display-name>Web server</display-name> 
      
          <servlet> 
           <servlet-name>webserver</servlet-name> 
           <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
           <load-on-startup>1</load-on-startup> 
          </servlet> 
      
          <servlet-mapping> 
           <servlet-name>dispatcher</servlet-name> 
           <url-pattern>/</url-pattern> 
          </servlet-mapping> 
      
          <context-param> 
           <param-name>contextConfigLocation</param-name> 
           <param-value> 
            /WEB-INF/dispatcher-servlet.xml 
            /WEB-INF/websocketconf.xml 
           </param-value> 
          </context-param> 
      
          <listener> 
           <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
          </listener> 
      </web-app> 
      
  3. После добавления websocketconfig.xml в контексте Спринг Application:

    • терминал (C# приложение) can communicate with Server via Socket но я can not access web.
    • У меня есть WARNING: No mapping found for HTTP request with URI [Spring4MVCHelloWorld/hello]] in DispatcherServlet with name 'dispatcher'
    • диспетчерскую-servlet.xml:

      <beans xmlns="http://www.springframework.org/schema/beans" 
      xmlns:context="http://www.springframework.org/schema/context" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation=" 
      http://www.springframework.org/schema/beans 
      http://www.springframework.org/schema/beans/spring-beans-4.0.xsd 
      http://www.springframework.org/schema/context 
      http://www.springframework.org/schema/context/spring-context-4.0.xsd"> 
      
          <context:component-scan base-package="com.javahash.spring.controller" /> 
      
          <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
           <property name="prefix"> 
            <value>/WEB-INF/views/</value> 
           </property> 
           <property name="suffix"> 
            <value>.jsp</value> 
           </property> 
          </bean> 
      </beans> 
      
    • HelloWorldController.java:

      package com.javahash.spring.controller; 
      
      import org.springframework.stereotype.Controller; 
      import org.springframework.ui.Model; 
      import org.springframework.web.bind.annotation.RequestMapping; 
      import org.springframework.web.bind.annotation.RequestParam; 
      
      @Controller 
      public class HelloWorldController { 
      
          @RequestMapping("/hello") 
          public String hello(@RequestParam(value="name", required=false, defaultValue="World") String name, Model model) { 
           model.addAttribute("name", name); 
           return "helloworld"; 
          } 
      
      } 
      
    • Кажется @Controller not effect.

ли я пропустить что-нибудь?

ответ

1

Я думаю, что вам не хватает <mvc:annotation-driven/> в вашем файле dispatcher-servlet.xml. Spring проверила ваши компоненты Controller, но Spring MVC не зарегистрировала ваши сопоставления.

Смежные вопросы