Java 从单独的上下文访问spring上下文

Java 从单独的上下文访问spring上下文,java,spring,embedded-jetty,Java,Spring,Embedded Jetty,我有我的主Spring上下文,它是在我的应用程序启动时创建的。在此上下文中是数据库连接和嵌入式web服务器 然后,嵌入式Web服务器由一个具有自己的Spring上下文的DispatcherServlet启动 我希望从一个DispatcherServlet访问数据库,但由于连接不在其上下文中,因此无法访问 Java/Spring解决这个问题的方法是什么 这是我的web.xml: <servlet> <servlet-name>App</servlet-name

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

然后,嵌入式Web服务器由一个具有自己的Spring上下文的
DispatcherServlet
启动

我希望从一个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();
}
server = new Server(8080);        
server.setHandler(new WebAppContext("./webapp", "/"));
server.start();
server.join();
这是JServer.start()方法:

<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();
}
server = new Server(8080);        
server.setHandler(new WebAppContext("./webapp", "/"));
server.start();
server.join();
尝试添加

<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>

上下文配置位置
classpath*:maincontext.xml
org.springframework.web.context.ContextLoaderListener
web.xml

请参见,和教程


,所以问题描述了这两种上下文之间的区别

你能发布你正在使用的web.xml吗(如果你确实在使用的话)?呃,我是Java新手,但我99.99%确定这不是我想要的。这不只是再次加载maincontext,而是在servlet中加载。它应该使maincontext成为web上下文(您现在正在DispatcherServlet中加载)的父上下文,从而使web上下文的bean能够访问根上下文的bean。这是一个相当标准的设置,你在多个教程中都会遇到(我自己也有过很多次),你能把我链接到其中一个教程吗?