在其他查询中看到相同的问题,但没有找到答案,因此重新发布。
在Rest中创建了一个示例Helloworld服务,并将其部署在Tomcat-Jersey中。不使用Maven。 在applicationContext.xml中注入一个spring bean定义,它存在于WEB-INF目录中。
在Eclipse中的Tomcat中部署服务。 但是当我执行其余服务时,找不到文件applicationContext.xml。 将文件复制到 WEB-INF / classes 后,就可以了。
通过仅将其保留在 WEB-INF 中,使其工作的方法是什么?
web.xml:
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
Rest服务代码段:
ctx = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
答案 0 :(得分:1)
在/WEB-INF/classes
下删除上下文描述符时,工作似乎是合理的,因为此位置是classpath
的根。
如果要删除 WEB-INF 文件夹下的 applicationContext.xml ,请尝试使用以下uri(不带前缀)加载:
ctx = new ClassPathXmlApplicationContext("/WEB-INF/applicationContext.xml");
否则,您能否解释为什么要在Web应用程序中加载 applicationContext.xml ?
或者,您可以按照以下方式以编程方式加载应用程序上下文:
ApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(this.getServletContext());
BR。
答案 1 :(得分:0)
如果您使用Intellj IDEA
并遇到ApplicationContext.xml
路径问题;
转到File
,然后点击Project Structure
。在Project Settings
下,点击Facets
,在Web
部分,您会看到Web Resource Directories
。您应该将Web Resource Directory
定义到/WEB-INF
文件夹。如果您的/WEB-INF
文件夹位于子路径中,如下所示;
/网络/ WEB-INF /...
然后选择/web
目录以覆盖您的所有文件。