阿男的小窝

View the Project on GitHub

resteasy-spring-webapp

resteasy把tjws服务器废除了,所以需要用undertow重新支持嵌入式spring的运行环境,最近这两周在做这个任务,把分析的内容记录下。之前tjws的resteasy-spring容器已经从master代码里删除了,我给整理到了这里作为参考:

tjws的实现主要是注入org.springframework.context.ApplicationContext

可以看到org.springframework.context.ApplicationContextorg.springframework.web.servlet.DispatcherServlet的搭配使用是核心。

对应实际的web项目结构,我创建了一个sample project

项目结构如下:

如上所示,经典的web项目的配置入口为web.xml,主要是设置org.springframework.web.servlet.DispatcherServlet

DispatcherServlet默认会读取WEB-INF/spring-servlet.xml,所以使用默认的话不需要设置。下面是spring-servlet.xml的具体设置:

可以看到两个设置,一个是设置spring要扫描的jaxrs的resources。还有就是包含了springmvc-resteasy.xml这个配置文件。这个文件是resteasy-spring这个模块提供的,里面是resteasy和spring整合的一些默认配置。

最后看一下FooResource

需要注意的点是这个resource class必须要包含spring的@Controller标记:

这样spring就可以加载这个class。此外可以看到,这样的配置不需要Application类了。

因此undertow的container可以借鉴上面两个项目的思路进行实现。