我有一个REST服务器,它被打包到WAR中并在Heroku上使用Jetty运行。我有一个新的要求来提供一些简单的静态内容。
这很简单,我可以将静态内容放入我的“src / main / webapp”中,默认的servlet将处理它。
但是,每次我们的HTML人员更新静态内容时,我都不想重建我的WAR。所以我有两个问题。
目前部署很简单,我只需要担心代码更改,所以我只是从git放到heroku,它调用mvn包并重新启动我的dynos。但是对于静态内容只有变化,我不希望这种情况发生。
谢谢!
答案 0 :(得分:0)
有几种选择。
WEB-INF/web.xml
etc/jetty.xml
etc/my-external-static.xml
contexts-available/resources.xml
以获取示例。etc/jetty.xml
etc/my-external-resources.xml
etc/jetty-fileserver.xml
以获取示例。context/javadoc.xml
文件。我会尝试的第一种技术是......
etc/webdefault.xml
。default
DefaultServlet的servlet的<servlet>
声明。<servlet>
定义复制到您的网络应用WEB-INF/web.xml
<servlet-name>
重命名为default
以外的其他内容(其特殊保留名称)。让我们称之为<servlet-name>extrastatic</servlet-name>
<init-param>
,定义一个resourceBase
值,指向磁盘上的位置以查找内容。<init-param>
<param-name>resourceBase</param-name>
<param-value>/var/web/static/</param-value>
</init-param>
<servlet-mapping>
部分,定义从中提供此静态内容的网址格式。<servlet-mapping>
<servlet-name>extrastatic</servlet-name>
<url-pattern>/static/*</url-pattern>
</servlet-mapping>
这是如何工作的......现在你在webapp之外有了额外的静态内容。
假设你已将战争部署到上下文/myapp
,那么像这样的URL请求将提供来自这个新extrastatic
servlet的内容。
http://machine.corp.com/webapp/static/
serves: /var/web/static/ (possibly index.html - see dirAllowed init-param)
http://machine.corp.com/webapp/static/css/main.css
serves: /var/web/static/css/main.css
http://machine.corp.com/webapp/static/js/jquery-min.js
serves: /var/web/static/js/jquery-min.js