resteasy-spring-webapp
resteasy把tjws服务器废除了,所以需要用undertow重新支持嵌入式spring的运行环境,最近这两周在做这个任务,把分析的内容记录下。之前tjws的resteasy-spring容器已经从master代码里删除了,我给整理到了这里作为参考:
tjws的实现主要是注入org.springframework.context.ApplicationContext
可以看到org.springframework.context.ApplicationContext
和org.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可以借鉴上面两个项目的思路进行实现。