java - 链接到 webservice 外部的属性文件

标签 java web-services rest tomcat jersey

我有一个使用 Java、REST、Jersey 并在 Tomcat8 上运行的网络服务。 Web 服务需要访问数据库。根据我们在流程中所处的位置,我们可能会使用测试数据库、生产数据库或其他数据库。理想情况下,我们希望能够设置要使用的数据库,而无需更改代码和重新编译。

我们尝试过的方法是使用一个属性文件来定义数据库参数,并使用一个环境变量来指向该文件。事实证明这很麻烦,首先我们很难在 Tomcat 服务器上定义我们可以从应用程序读取的系统属性,而且似乎所有文件都必须在类路径上定义,即已经提前配置和代码库的一部分。

这似乎是相当常见的情况,所以我确定有推荐的方法来处理这种情况?

最佳答案

Zack Macomber 在这里有一个观点。不要让您的应用/服务动态查找其设置。

让您的构建过程动态化。

Maven、Gradle 和 friend 都提供了根据构建参数和/或任务/配置文件修改输出的简单方法。

在您的代码中始终链接到相同的文件(名称)。然后将根据您的任务和/或构建环境包含实际文件。用于测试的测试配置。生产的生产配置。

在许多情况下,完全重新编译是不必要的,因此将被跳过(当然,这取决于您的工具)。

根本没有代码更改。此外,代码将非常愚蠢,因为它不需要了解任何有关上下文的信息。

尤其是在与多人一起工作时,这种方法提供了最稳定的长期解决方案。可以为那些需要一些特殊的本地配置的人定制,最重要的是对所有不需要或不想了解运行时环境要求的人透明!

关于java - 链接到 webservice 外部的属性文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33653495/

相关文章:

java - 将 JSONArray 发布到 REST 服务

java - 如何根据我在 JComboBox 中单击的项目更新 Jtable?

java - Web View 中的 HTML Iframe 视频无法播放

web-services - Azure:将应用程序服务移动到另一个现有的应用程序服务计划

html - Byethost 网络服务将无法工作。它不会与端口 21 上的 ftp 服务器连接

json - 使用 Django Rest Framework,我如何上传文件并发送 JSON 有效负载?

java - 如何使用Java读取CSV中第 'x'行和第 'y'列的值?

java - 有没有办法将 Gradle/Cucumber/Selenium 测试集成到 Browserstack (Java) 中?

java - 由于异常 : Unable to create StAX reader or writer at com. sun.xml.internal.ws.encoding.SOAPBindingCodec.decode,无法创建 SOAP 消息

java - Spring 在哪里创建 RestTemplate?