我应该将 Spring applicationContext.xml 保存在 EAR 中的哪里

发布于 2024-12-01 15:57:07 字数 204 浏览 1 评论 0原文

我有部署在 EAR 中的服务类,没有 WAR 或 Web 应用程序。理想情况下,我应该将 applicationContext.xml 存储在什么文件夹结构中?

目前我们将其加载为

Resource res = new ClassPathResource("META-INF/applicationContext.xml");

I have service classes which are deployed in an EAR with no WAR or Web apps. In what folder structure should I ideally store the applicationContext.xml?

Currently we load it as

Resource res = new ClassPathResource("META-INF/applicationContext.xml");

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

琴流音 2024-12-08 15:57:07

那是个好地方。这并不重要,而且我不知道这方面有任何约定。

That's as good a place as any. It doesn't really matter, and I'm not aware of any convention for this.

冰雪梦之恋 2024-12-08 15:57:07

如果您在 Web 应用程序中使用 Spring,则不应手动加载 ClasspathXmlApplicationContext。您的上下文将是 Web 应用程序上下文,而不是类路径应用程序上下文,并且如果您将以下内容放入 web.xml 中,则会自动加载:

代码:

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

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/spring-config.xml</param-value>
</context-param>

假设您的主 Spring 配置文件名为 spring-config.xml 并位于WEB-INF 文件夹。

对于 Web 应用程序来说,以编程方式加载类路径上下文总是错误的,您应该由侦听器加载一个上下文,并且(可选)由 DispatcherServlet 加载另一个上下文(如果您使用 Spring Web Mvc 作为您的 MVC 框架)。我建议您首先阅读一些文档并尝试 Petclinic 示例,以深入了解如何在 Web 应用程序中正确使用 Spring。

另外,你的耳朵包装策略是错误的;您的 Spring 配置是特定于 Web 应用程序的,因此您应该将 Spring 配置文件放在 WAR 中,位于 Web 应用程序的根目录下(可能最好的位置是 WEB-INF 下的某个位置,与 web.xml 和其他描述符一起)。如果您有像 ejb 和 webapp 使用的类这样的资源,您应该将这些类打包到一个 jar 中,将该 jar 放在您耳朵中的 lib 目录下,并在 webapp & 的 MANIFEST.MF 中为该 jar 添加一个 Class-Path 条目;每个 ejb jar。如果您的配置文件具有与环境相关的属性(例如 jdbc 配置和磁盘路径),则不应将它们打包到您的耳朵中,而是让应用程序从文件系统外部读取它(PropertyPlaceholderConfigurer 是您最好的选择)。

对于初学者,我建议您在开始使用 ant 构建项目之前使用 Eclipse Ear 创建功能来查看如何打包您的 Web 应用程序。

我还建议您将 Maven 视为您的编译 - 构建 - 打包策略,因为这将使项目自动化和标准化,并且 Web 应用程序 Maven 原型将让您瞬间为 j2ee Web 应用程序创建正确的模式。

If you are using Spring in a web application, you shouldn't ever load a ClasspathXmlApplicationContext manually. Your context will be a web application context, not a classpath application context, and will be loaded automatically if you put the following in your web.xml:

Code:

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

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/spring-config.xml</param-value>
</context-param>

assuming your main Spring config file is called spring-config.xml and is located in the WEB-INF folder.

Loading classpath context programmatically is always wrong for web app, you should have one context loaded by listener and (optionally) one more context loaded by DispatcherServlet (if you use Spring web mvc as your mvc framework). I suggest you start by reading some documentation and try the Petclinic example to gain some insight in how to correctly use Spring in a web application.

Also, your ear packaging strategy is wrong; your Spring configuration is webapp specific so you should put your Spring config files inside the WAR, under the root of the web app (probably the best place is somewhere under WEB-INF, alongside web.xml and other descriptors). If you have resources like classes used by both ejb and webapp, you should package those classes inside a jar, put this jar under the lib directory in your ear and add a Class-Path entry for the jar in the MANIFEST.MF of webapp & each of the ejb jars. If you have config files with environment-dependant properties (like jdbc config and disk paths) you shouldn't package them inside your ear but instead let the application read it externally from the file system (PropertyPlaceholderConfigurer is your best shot).

For starters, I suggest you use Eclipse ear creation function to see how your web app should be packaged before you start using ant to build your project.

I also suggest you consider Maven as your compile - build - package strategy since this will automate and standardize the project and the web app maven archetype will let you create a correct pattern for j2ee web app in a blink.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文