RESTEasy Асинхронный HTTP с Spring MVC - PullRequest
0 голосов
/ 22 февраля 2011

Есть ли какой-нибудь удобный способ использовать поддержку RESTEasy Asynchronous HTTP (в моем случае на Tomcat 6) в сочетании со средой Spring MVC.Я нашел полезные статьи об использовании RESTEasy с Spring, но ни одна из них не охватывает асинхронную поддержку, которая в настоящее время кажется чем-то вроде шипа, из-за запроса другого класса сервлета в зависимости от контейнера (например, Tomcat6CometDispatcherServlet для Tomcat).

Спасибо, FB

Ответы [ 2 ]

0 голосов
/ 01 июля 2011

Для всех, кто заинтересовался, мне пришлось использовать Tomcat6CometDispatcherServlet вместо Spring DispatcherServlet, чтобы мое приложение работало.

У меня все еще есть Spring ContextLoaderListener для создания различных bean-компонентов внутри моего контекста приложения, но мне приходится использовать далеко не идеальные средства доступа к ним из моих классов контроллера, которые теперь аннотированы JAX-RS, а не Spring MVC. , (Существуют различные статьи, которые Google быстро раскроет при программном доступе к контексту Spring.)

Вот очищенная версия моего 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" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>myapp</display-name>
<description>My App</description>

    <context-param>
        <param-name>log4jConfigLocation</param-name>
        <param-value>classpath:log4j.properties</param-value>
    </context-param>

    <context-param>
        <param-name>webAppRootKey</param-name>
        <param-value>myapp.root</param-value>
    </context-param>

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>

    <context-param>
        <param-name>resteasy.scan</param-name>
        <param-value>true</param-value>
    </context-param>

    <filter>
       <filter-name>TrustedIPFilter</filter-name>
       <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>TrustedIPFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <filter>
        <filter-name>UrlRewriteFilter</filter-name>
        <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
    </filter>    
    <filter-mapping>
        <filter-name>UrlRewriteFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>    

    <listener>
        <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
    </listener>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <servlet>
       <servlet-name>PollServlet</servlet-name>
       <servlet-class>org.jboss.resteasy.plugins.server.servlet.Tomcat6CometDispatcherServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>PollServlet</servlet-name>
        <url-pattern>/poll/*</url-pattern>
    </servlet-mapping>

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

    <error-page>
        <exception-type>java.lang.Exception</exception-type>
        <location>/WEB-INF/jsp/uncaughtException.jsp</location>
    </error-page>

</web-app>
0 голосов
/ 22 февраля 2011

Я создал пример приложения с использованием Comet, Bayeux, Java, Maven и внешнего интерфейса Raphael JS и написал сообщение об этом в блоге. Вы можете использовать его в качестве основы для своего приложения, просто добавив текущий код сервиса в REST.

http://geeks.aretotally.in/thinking-in-reverse-not-taking-orders-from-yo

Надеюсь, это поможет вам.

...