【问题标题】:How to let user configure a file inside the war file如何让用户在war文件中配置文件
【发布时间】:2014-09-15 12:04:12
【问题描述】:

有一个应用程序,比如 myApp.war(使用 Spring MVC 开发),我让用户将其部署在他们的 tomcat webapp 文件夹中。当用户启动tomcat时,战争爆发了,然后我让用户去myApp/WEB-INF/classes/persistence.properties 并要求他只编辑一个属性名称(实际上是一个HSQLDB路径)。发布我要求用户停止tomcat,删除war文件并再次启动tomcat服务器。并且应用程序已启动并运行。

虽然用户没有抱怨,但我相信必须有更好的方法来做到这一点。例如,当用户部署 wordpress 或 hudson 并且他们第一次尝试访问该应用程序时。他们被重定向到一个安装页面,在那里他们进行基本配置并且他们启动并运行。我怎样才能在这里实现它。

【问题讨论】:

  • 对不起,配置路径的想法对我来说似乎真的很糟糕。如果您(用户)重新部署应用程序会发生什么?该文件以前已经存在,对吗?如果您更改了此文件中的任何注释、提示、占位符..,它将在部署时被覆盖,并且用户配置消失。最好将配置文件从应用程序容器中取出并将其放在更常见的位置(/opt、$HOME 或类似的东西)

标签: java tomcat spring-mvc web-applications


【解决方案1】:

我过去曾使用 JNDI 来解决这个问题。这是一个很好的示例,向您展示如何使用 Spring 执行此操作:

http://www.journaldev.com/2597/spring-datasource-jndi-with-tomcat-example

【讨论】:

  • 感谢 Jason,虽然解决方案看起来不错,但普通用户可能不愿意修改位于 apache-tomcat/conf/ 中的 server.xml。
  • 我猜这取决于用户。如果我们谈论的是 devops,那么他们会欢迎这种类型的解决方案。另一种方法是让 Jenkins(CI 系统)连线来完成这类工作;但是,由于我们谈论的是 HSQLDB,所以我不得不考虑 DevOPS 类型。
【解决方案2】:

结帐JMX 可以允许即时配置,或者有一个obix 框架

【讨论】:

    【解决方案3】:

    为什么不这样:

    使用带有sysprops 的相对路径,例如${user.home}/path-to-hsqldb。如果用户以“jim”用户身份运行tomcat,它将在c:\users\jim\path-to-hsqldb (Windows) 或/usr/jim/path-to-hsqldb (Linux) 中查找

    您可能需要使用 Spring 的 <context:property-placeholder/> 来启用此功能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-09
      • 2011-12-30
      • 1970-01-01
      • 2016-01-25
      • 2014-12-23
      • 2023-03-07
      • 2010-12-12
      相关资源
      最近更新 更多