使用jersey-spring3和现有的Spring应用程序上下文来支持Web服务

时间:2014-12-04 14:54:19

标签: java spring rest jersey-2.0 grizzly

我有一个现有的Spring应用程序,我自己的上下文被引导 来自几十个Spring xml文件。 Grizzly Web服务器开始发布Soap服务。

现在我也想从同一个Grizzly那里提供休息请求。 我使用的是jersey-spring3,但它启动了自己独立的应用程序上下文 的applicationContext.xml。

这是创建Grizzly HttpServer的代码,其中包含Rest和Soap Web服务 已注册:

    //rest services
    ResourceConfig resourceConfig = new ResourceConfig(
            RestService1.class, //these are 
            RestService2.class //jersey-spring services
    );
    HttpServer httpServer = GrizzlyHttpServerFactory.createHttpServer(URI.create("http://localhost:8080/rest"), resourceConfig, false);

    //soap services
    HttpHandler httpHandler = new JaxwsHandler(mySoapWebService, false);
    httpServer.getServerConfiguration().addHttpHandler(httpHandler, myPath);

    httpServer.start();

My Rest服务(由第二个Spring上下文创建)具有来自第一个应用程序上下文的注入依赖项。 这些注射显然不起作用。 Curreetly我自己用一些hacky代码手动注入它们。

在现有应用程序中为Rest请求处理注入Spring服务的正确方法是什么,其中 球衣重新利用现有的背景?

1 个答案:

答案 0 :(得分:3)

在GitHub上查看Jersey项目的helloworld-spring-annotations。您只需要在Jersey应用程序中set the "contextConfig" property,其值为Spring的实例ApplicationContext

resourceConfig.property("contextConfig", 
        new AnnotationConfigApplicationContext(SpringAnnotationConfig.class));

然后你应该能够将你的Spring组件@Autowired放入Jersey组件中。

另见: