【问题标题】:Access a spring context from separate context从单独的上下文访问弹簧上下文
【发布时间】:2014-05-31 06:18:35
【问题描述】:

我的主 Spring 上下文是在我的应用程序启动时创建的。在此上下文中是数据库连接和嵌入式 Web 服务器。

嵌入式网络服务器随后以 DispatcherServlet 和它自己的 Spring 上下文启动。

我希望从其中一个 DispatcherServlet 访问数据库,但由于连接不在其上下文中,我不能。

解决这个问题的Java/Spring方法是什么?

这是我的 web.xml

<servlet>
    <servlet-name>App</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:/jettycontext.xml</param-value>
    </init-param>
</servlet>

这是入口主方法

try (ConfigurableApplicationContext context = new GenericXmlApplicationContext("maincontext.xml")) {

    JServer server = context.getBean(JServer.class);
    server.start();
}

这是 JServer.start() 方法

server = new Server(8080);        
server.setHandler(new WebAppContext("./webapp", "/"));
server.start();
server.join();

【问题讨论】:

  • 能否发布您正在使用的 web.xml(如果您确实在使用)?

标签: java spring embedded-jetty


【解决方案1】:

尝试添加

<context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath*:maincontext.xml</param-value> <!-- or wherever else you have the maincontext.xml file-->
</context-param>

<listener>
   <listener-class>
      org.springframework.web.context.ContextLoaderListener
   </listener-class>
</listener>

web.xml

请参阅 thisthisthis 教程。

Thisthisthis SO 问题描述了两种上下文之间的区别

【讨论】:

  • 呃,我是 Java 新手,但我 99.99% 确信这不是我想要的。这不会只是再次加载主上下文,而是在 servlet 中。
  • 它应该使主上下文成为 Web 上下文的父级(您现在正在 Dispatcher Servlet 中加载它),从而使 Web 上下文的 bean 可以访问根上下文的 bean。这是您在多个教程中遇到的相当标准的设置(我自己也有很多次)
  • 能否将我链接到其中一个教程?
猜你喜欢
  • 2015-10-22
  • 1970-01-01
  • 2018-05-06
  • 2020-01-10
  • 1970-01-01
  • 2013-04-07
  • 2022-01-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多