如何在不重启Tomcat的情况下更改HTML / JS / CSS?

时间:2013-02-12 00:33:51

标签: tomcat tomcat7

是否可以配置Tomcat,使其在开发过程中查找我的'webapp'目录的单独位置?

我将git源放在一个目录中,将tomcat安装在另一个目录中。我不想在两个地方进行更改,或者每次我对CSS或Javascript进行简单的更改时手动复制文件,或重建/部署。

<小时/> 编辑 - 2013年2月21日

不幸的是,这些建议都没有奏效,我怀疑这可能是因为我没有提供足够的信息来说明我的方法。

我将Tomcat安装在我的主目录(我在Mac上)的目录中,名为“Development”。

/Users/dbrogdon/Development/apache-tomcat-7.0.35

我旁边有我的git来源。

/Users/dbrogdon/Development/myproject

在myproject目录中,我的实际网络文件位于:

/Users/dbrogdon/Development/myproject/application/appname/src/main/webapp

当我编译时,我将appname.war放入

/Users/dbrogdon/Development/apache-tomcat-7.0.35/webapps

根据更新的信息,我应该在我的conf/server.xmlconf/Catalina/localhost/appname.xml中作为我的docBase提供什么?

7 个答案:

答案 0 :(得分:3)

在tomcat安装中,在目录“conf”下,您将找到文件server.xml。在该文件中搜索标记“Host”。你会发现像

这样的东西
<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">

appbase 更改为您的网络应用程序目录的父文件夹。所以说您的应用程序“myapp”目录位于c:\ git \ source下,将appBase设置为“c:\ git \ source “

重启你的tomcat。现在你的tomcat看起来里面“c:\ git \ source”用于它必须部署的所有Web应用程序,而不是 webapps

链接到描述 appbase 用法的tomcat配置 http://tomcat.apache.org/tomcat-7.0-doc/config/host.html

  

此虚拟主机的Application Base目录。这是   可能包含Web应用程序的目录的路径名   部署在此虚拟主机上。 您可以指定绝对路径名,   或相对于$ CATALINA_BASE目录的路径名。看到   自动应用程序部署有关自动的更多信息   识别和部署Web应用程序。 如果未指定,则   将使用 webapps 的默认值。

答案 1 :(得分:2)

可能的方法来做你期待的事情

  • 配置Apache Web服务器以提供静态内容并将动态内容路由到Tomcat服务器。这是使用mod jk连接器完成的,它将JSP请求代理到tomcat,但通过传递此代理来提供静态内容,如image,js等。

worker.properties

中完成使用
<Location *>
SetHandler jakarta-servlet
SetEnvIf REQUEST_URI \.(html|png|gif|jpg|css|js)$ no-jk
</Location>

这可能不太合适,因为它会更改所有部署架构

  • Zenil建议在您的conf中配置server.xml的解决方案

限制将是tomcat中部署的所有应用程序都将从D:/newWebApps提供。这可能不适合您的目的,因为您只需要在源存储库中映射的应用程序你的雄猫。

  • 我认为以下内容对您来说更合适 方案

创建文件applicationName.xml&amp;定义以下

<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="D:\newWebApps" path="/js/*" />

并将此文件放在\conf\Catalina\localhost目录中。 tomcat会自动选择它

现在您可以通过

访问它
http://servername:8080/applicationName/js/anything.js

有关在tomcat default diretories

之外设置docBase的更多详细信息,请参阅此http://tomcat.apache.org/tomcat-7.0-doc/config/context.html

答案 2 :(得分:1)

您可以使用本地Apache服务器,并重写要从单独位置拾取的HTML / CSS / JS /文件。

有关如何重写JS文件的示例,请参阅此问题:HOWTO: rewrite requests for images, css and js to different folders for each application?

现在你可以配置Apache去Tomcat寻找tomcat的URL,但是在apache配置中执行这些重写,css / js / html文件可以完全从另一个文件夹中获取。

您可以使用此Tomcat过滤器:http://tuckey.org/urlrewrite/,虽然您仍然需要一个apache Web服务器来托管静态文件,但您可以使用Tomcat访问主要的tomcat URL并向您的apache添加重定向所有静态文件的实例。这节省了必须使用Apache配置mod_jk或其他东西。

答案 3 :(得分:1)

更新您的server.xml并修改应用程序的“主机”有两个目的:

1)指向tomcat的git源目录以启动你的应用程序。这样可以避免在两个地方进行更改或复制更改。

需要更改:更新应用程序的“主机”,并将“appBase”设置为您的git源目录。

<Host name="localhost"  appBase="/Users/dbrogdon/Development/myproject/application/appname/src/main/webapp"
            unpackWARs="true" autoDeploy="true">

2)添加单独的位置以提供静态内容。这可以帮助您避免每次更改css / js时重新启动tomcat

需要更改:添加用于投放js和css的上下文

<Host name="localhost"  appBase="/Users/dbrogdon/Development/myproject/application/appname/src/main/webapp"
            unpackWARs="true" autoDeploy="true">
    <Context docBase="/Users/dbrogdon/Development/myproject/application/appname/src/main/webapp/js/" path="/js/*" />
    <Context docBase="/Users/dbrogdon/Development/myproject/application/appname/src/main/webapp/css/" path="/css/*" />
</Host>

答案 4 :(得分:1)

如果我理解正确的问题,你只需要tomcat的webapps / MY_WEBAPP指向你检查你的git存储库的内部,这样你就可以修改它们&#34;一次&#34;。假设您只编辑静态资源,我不认为tomcat会对它们进行缓存,因此您可以从tomcat的webapps /到git文件夹位置创建符号链接。或者从webapps / x / y返回到你的git等效文件夹(甚至特定文件)的符号链接。

我也听说过tomcat可以&#34; hotswap&#34; JSP类和静态,以防它相关:how to enable hot deploy in tomcat

答案 5 :(得分:0)

答案 6 :(得分:-2)

在IDE中打开git源代码后,添加tomcat服务器后,可以配置tomcat的“Runtime Environment”来引用tomcat目录中的那个。