首页 文章

使开源Java Web应用程序易于在Tomcat,Jetty等上安装和部署

提问于
浏览
0

我正在分发一个简单的Java webapp作为开源 . 需要先配置webapp才能运行 - 需要创建配置文件,并且需要将该配置文件的位置作为 web.xml 中的参数告知webapp .

现在我的问题是如何最好地打包和分发webapp以便于安装,以及如何在文档中描述该安装过程 . 我能想到的选择是:

  • 将webapp分发为WAR归档文件 . 建议用户将WAR部署到他们的Tomcat / Jetty /中,然后将他们的配置文件放入 /webapps/ myapp /WEB-INF ,并相应地修改 /webapps/ myapp /WEB-INF/web.xml

  • 将webapp作为源分发 . 建议用户将其配置文件放入 /src/main/webapp/WEB-INF 文件夹,然后相应地修改它们的 /src/main/webapp/WEB-INF/web.xml ,然后使用Ant或Maven构建WAR,并将其部署到其servlet容器中 .

可能还有其他一些我无法想到的选择 .

对于需要安装,配置和部署webapp的用户来说,哪种设置最方便?

Edit: 我应该添加配置文件isn 't just a few lines – it'是一个包含数据库模式和其他内容的大文件,并且可能使用外部编辑器生成;因此,提供良好的默认值不是一种选择 .

4 回答

  • 0

    外部化此配置并可能提供一些默认值 . 如果您制作应用程序的新版本,每个人都必须记住备份该配置文件,然后重新部署然后复制该文件 - >这是一场噩梦 .

    将配置放在其他地方有很多种方法 . 例如,您可以使用Java Preferences .

  • 1

    我会说WAR,虽然不需要配置可能会更方便:)

    什么是松散的,必须配置,以便每个人都没有合理的默认值?网址字符串?

  • 2

    在对此问题进行更多阅读后,提供了我自己的答案:JNDI似乎是“官方”,尽管有点重量级,解决这个问题的方法 . 使用JNDI,可以在 web.xml 中声明配置选项(如我需要的完整配置文件的位置),并且可以在位于Tomcat的 /webapps 目录(或 /contexts )中的per-webapp _3014848中设置其实际值 . 码头目录) . 此设置具有许多优点:

    • 大配置文件可以存在于servlet容器和webapp之外

    • 可以更新webapp而不会丢失配置

    • 不需要修改或重建分布式战争

    缺点:它有点复杂,需要弄乱XML,而在Tomcat上配置JNDI与Jetty的工作方式不同(需要两倍的文档) .

  • 1

    也许使用系统属性作为配置文件位置 . 可以轻松地在命令行中以 -Dorg.example.config.file=/foo/bar ,在启动脚本或Java代码中传递 . 我想我已经看过一些工具,例如记录框架,在webapps中使用类似事物的系统属性 .

相关问题