编程语言
首页 > 编程语言> > 使用jersey-spring3和现有的Spring应用程序上下文来休息Web服务

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

作者:互联网

我有一个现有的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服务的正确方法是什么?
球衣重新利用现有的背景?

解决方法:

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

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

然后你应该能够将你的Spring组件@Autowired到你的Jersey组件中.

也可以看看:

> Combining Spring project and Jersey

标签:java,rest,spring,jersey-2-0,grizzly
来源: https://codeday.me/bug/20190628/1319368.html