如何使用Java EE servlet的一些配置文件?

时间:2009-10-07 10:55:19

标签: java deployment configuration servlets java-ee

我需要从servlet访问服务器上的一些文件。它们在我的开发机器和部署服务器上有不同的路径。我想把一些配置文件(带路径)放在某处(比如shared dir在capistrano部署中),所以应用程序可以读取它。或者可以在应用程序服务器上设置一些属性或类似的东西。我可以使用Tomcat,Jetty或Glassfish。

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

你能建议更好的解决方案吗?

3 个答案:

答案 0 :(得分:2)

SO中有几个类似的问题。 This是我发现的,我记得还有更多。

无论如何,上述答案中的link可能会有所帮助。

您的选项摘要如下:

  • 如果您有数据库,请在那里存储选项。
  • 您还可以使用JNDI直接存储属性或配置文件的路径。
  • 您可以使用环境变量来存储配置文件的路径。

答案 1 :(得分:1)

执行此操作的常用方法是在servlet容器中配置依赖项,并通过JNDI公开它们。在您的情况下,只使用路径公开String可能就足够了。

JNDI tutorialTomcat's JNDI docs可以帮助您入门。如果你使用Spring IOC容器,JNDI也很好地与Spring集成。

答案 2 :(得分:1)

我同意kgiannakakis,但也有一些限制   - 存储属性/ xml配置    在数据库中绝对是一个选项    但如果它是像XML这样的非属性资源,则并不总是可行。   - JNDI查找是性能受损    而你也不能存储xml   - 如果你有多份副本    应用程序部署在同一台服    环境变量不能使用。   - 以上所有都不能用来做    就像是    MyClass.getResourceAsStream()

如果上面的解决方案还可以,那么你可以使用共享库的概念。我不确定它如何与您提到的上述应用服务器一起工作,但下面给出的是Geronimo,WASCE,IBM Websphere的链接。概念是在部署期间为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

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