当前位置: 首页 > 知识库问答 >
问题:

使用jersey-spring3和现有的Spring应用程序上下文RestWeb服务

廉高邈
2023-03-14

我有一个现有的Spring应用程序,它有自己的上下文,从Spring xml文件的douzens中引导。Grizzly web服务器开始发布Soap服务。

现在我也想满足同一只灰熊的Rest请求。我使用的是jersey-spring3,但它从所需的applicationContext.xml中启动自己的、独立的应用程序上下文。

这是创建注册Rest和Soap Web服务的Grizzly HttpServer的代码:

    //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上下文创建)具有来自第一个应用程序上下文的注入依赖项。这些注射显然不起作用。目前,我自己手动注入一些黑客代码。

在现有应用程序中为 Rest 请求处理注入 Spring 服务的正确方法是什么,其中 jersey 重用现有上下文?

共有1个答案

苏凯
2023-03-14

看看GitHub上Jersey项目的helloworld spring注释。您只需要在Jersey应用程序中设置“contextConfig”属性,其值为SpringApplicationContext的实例

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

然后,您应该能够将Spring组件@Autowired到泽西岛组件中。

另请参见:

  • 结合Spring项目和泽西岛

 类似资料:
  • Spring Boot对于如何使用Spring构建应用程序有一个看法:例如它具有常规配置文件的常规位置,以及用于常见管理和监视任务的端点。Spring Cloud建立在此之上,并添加了一些可能系统中所有组件将使用或偶尔需要的功能。 引导应用程序上下文 一个Spring Cloud应用程序通过创建一个“引导”上下文来进行操作,这个上下文是主应用程序的父上下文。开箱即用,负责从外部源加载配置属性,还解

  • 我多年来一直在使用Spring MVC,我试图理解与Spring Boot的一些关键区别。 你能帮我确认一下吗?或者让我明白我在这里遗漏了什么?

  • 我知道我需要在servlet上下文中注册用注释的类,以使webapp可访问。通常,我会按照以下方式来做: 我添加到根应用程序上下文中的所有其他配置类。下面是我的dispatcher初始值设定项通常的样子: 但是当我开始使用WebSockets时,事情变得更有趣了。要使websockets工作,必须将WebSoketConfig.class放到servlet上下文中。下面是我的WebSocketCo

  • 我正在阅读spring framework文档,现在我正在讨论应用程序范围概念。关于这个概念的文档是这样说的: 这有点类似于Spring单例bean,但有两个重要的区别:它是每个ServletContext的单例,而不是每个Spring ApplicationContext的单例 对我来说,不清楚的是我们如何想象Spring应用程序上下文和Servlet上下文之间的关系。 那么,Spring应用程

  • 问题内容: 有没有办法在Spring应用程序中静态/全局地请求ApplicationContext的副本? 假设主类启动并初始化了应用程序上下文,它是否需要通过调用堆栈将其向下传递给需要它的任何类,或者是否有一种方法可以让类要求先前创建的上下文?(我认为必须是单身人士?) 问题答案: 如果需要访问容器的对象是容器中的Bean,则只需实现BeanFactoryAware或ApplicationCon