代码之家  ›  专栏  ›  技术社区  ›  rkj

如何使用JavaEEservlet的一些配置文件?

  •  1
  • rkj  · 技术社区  · 16 年前

    我需要从servlet访问服务器上的一些文件。它们在我的开发机器和部署服务器上有不同的路径。我想把一些配置文件(带有路径)放在某个地方(比如 shared capistrano部署中的dir),以便应用程序可以读取它。或者在应用服务器上设置一些属性或类似的东西。我可以用野猫、码头或玻璃鱼。

    目前,我在WEB-INF中创建了一个配置文件,其中包含本地机器的配置。在服务器上复制.war的部署脚本,通过将服务器配置文件放入其中来修改war文件。它可以工作,但不太好,如果服务器上的路径发生变化,我将不得不更改本地文件并重新部署应用程序。

    你能提出更好的解决方案吗?

    3 回复  |  直到 13 年前
        1
  •  2
  •   Community Mohan Dere    9 年前

    在SO中有几个类似的问题。 This 是我找到的一个,我记得还有更多。

    不管怎样,这个 link 从上面的答案可能会有所帮助。

    您的选择摘要如下:

    • 如果您有一个数据库,请将您的选项存储在那里。
    • 可以使用环境变量存储配置文件的路径。
        2
  •  1
  •   Henning    16 年前

    JNDI . 在您的情况下,仅公开一个带有路径的字符串可能就足够了。

    这个 JNDI tutorial 和 Tomcat's JNDI docs 应该可以帮助你开始。如果您使用SpringIoC容器,JNDI还可以很好地与Spring集成。

        3
  •  1
  •   Gladwin Burboz    16 年前

    我同意Kgianakakis的观点,但也有一些局限性 -存储属性/xml配置 在数据库中,这无疑是一个选项 但并不总是可行的,特别是如果它是像XML这样的非属性资源。 -JNDI查找的性能受到影响 而且也不能在那里存储xml -如果您有多份 应用程序部署在同一服务器上, 无法使用环境变量。 -以上这些都不能用来做 差不多 MyClass.getResourceAsStream()

    如果上面的解决方案还可以,那么您可以使用共享库的概念。我不确定它如何与您提到的上述应用程序服务器配合使用,但下面给出了Geronimo、WASCE、IBMWebSphere的链接。概念是在部署期间为EAR指定额外的类路径。

    Geronimo http://cwiki.apache.org/GMOxDOC21/configuring-geronimo-eclipse-plugin-to-publish-maven-dependencies-as-shared-library.html

    WASCE 2.1.0 http://publib.boulder.ibm.com/wasce/V2.1.0/en/shared-library.html

    http://publib.boulder.ibm.com/infocenter/wasinfo/v5r1//index.jsp?topic=/com.ibm.websphere.base.doc/info/aes/ae/rxml_library.html