春季与泽西+码头挑战

时间:2012-05-08 15:12:33

标签: spring dependency-injection jetty jersey

我是Spring的依赖注入的新手,面临着一个看似具有挑战性的场景。

我的应用程序通过普通旧套接字从遗留系统接收数据,对数据进行有趣的事情(tm),然后使用嵌入式Jetty实例通过HTML5 Web套接字抽出真正有趣的结果(tm)。此外,Jetty服务器托管一个Jersey servlet,为所有有趣的东西(tm)提供RESTful接口。

我想使用Spring将共享DAO和应用程序服务对象注入遗留方和我的Jersey资源。这要求在遗留组件和Jersey之间共享ApplicationContext。似乎我需要创建应用程序上下文,将其连接到我的遗留组件,然后在配置嵌入式Jetty服务器(我目前以编程方式进行)时将应用程序上下文传递给Jersey ServletContext。

不幸的是,我不清楚如何将现有的应用程序上下文传递给Jersey ServletContext。可以吗?有更好的方法吗?

我想要注意的是,这与我在SO上发现的其他Jersey + Jetty + Spring问题不同,后者不需要在Jersey之外共享应用程序上下文。

1 个答案:

答案 0 :(得分:1)

我假设您启动Jetty的代码类似于:

Server server = new Server(...);
server.setHandler(new WebAppContext(...));

您可以从ServletContext获取WebAppContext并在其上设置SpringContext:

WebAppContext wac = new WebAppContext(...);
ServletContext sc = wac.getServletContext();
sc.setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, springContext);