2013-02-12 117 views
12

是否可以配置Tomcat,使其在开发过程中在我的'webapp'目录的单独位置查找?如何在不重新启动Tomcat的情况下更改HTML/JS/CSS?

我在一个目录中有我的git源代码,而在另一个目录中安装了tomcat。我不希望在两个地方进行更改,或者手动复制文件,或者每次对CSS或Javascript进行简单更改时重新生成/部署。


编辑 - 2013年2月21日

遗憾的是没有任何的建议工作,我怀疑这可能是因为我没有提供关于如何我有事情奠定了足够的信息。

我有Tomcat安装在我的主目录(我在Mac上)名为“开发”的目录中。

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

我在我旁边有我的git源代码。

/Users/dbrogdon/Development/myproject 

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

/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?

+0

应该是tomcat的默认配置。请看看这个线程http://stackoverflow.com/questions/3942655/getting-tomcat-to-reload-a-web-app-with-a-static-context – carlosavoy 2013-02-21 13:20:47

回答

1

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

看到这个问题的一个例子,如何重写JS文件:HOWTO: rewrite requests for images, css and js to different folders for each application?

现在你可以配置Apache去到Tomcat的Tomcat的网址,但在Apache的配置和CSS/JS/HTML文件执行这些重写可以完全从另一个文件夹中拾取。

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

+1

这是解决问题的办法之一,Apache是​​一个Web服务器,Tomcat是一个Java Web容器。无论如何,您不会在生产环境中将Tomcat用作独立Web服务器,因此开发人员必须使用Apache + Tomcat。 downvote意味着答案是没有用的。 – cowls 2013-02-21 21:22:49

+0

我的歉意。我想我误解了Tomcat的目的。 – 2013-02-21 21:57:12

-2

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

+0

但是,如果我不想要运行IDE?我是一名UI开发人员,不会执行任何Java编码,所以我更愿意使用TextMate编辑HTML/CSS/JS。 – 2013-02-12 03:43:43

2

在你的tomcat安装目录下的“conf”下,你会发现一个文件server.xml。在该文件中搜索标签“主机”。你会发现像

<Host name="localhost" appBase="webapps" 
      unpackWARs="true" autoDeploy="true"> 

变化应用平台到Web应用程序目录的父文件夹。所以说你的应用程序“myapp”目录下是说c:\ git \ source,把appBase作为“c:\ git \ source”

重新启动你的tomcat。现在你的tomcat看起来 “C:\ git的\源” 为所有网络应用中,具有代替部署的的webapps

链接到Tomcat的配置描述应用平台使用 http://tomcat.apache.org/tomcat-7.0-doc/config/host.html

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

+1

@darrell不知道如果评估上述选项?如果你所需要的只是在你的开发环境中的tomcat指向一个不是默认的“webapps”的文件夹,那么上面的解决方案应该足够好了。 – Zenil 2013-02-21 02:30:23

+0

OP想要这样做_without_ restarting tomcat。 – Raad 2013-02-21 15:20:22

+0

@Raad这是一次性设置。基本上告诉tomcat寻找他的开发环境目录而不是默认的“webapps”目录。之后,不需要重新启动,不需要部署或复制。 – Zenil 2013-02-21 18:21:42

2

方法可以做到你在找什么期待

  • 配置Apache Web服务器提供静态内容和路由动态内容到Tomcat服务器。这是使用该代理的JSP请求到tomcat但通过这个代理的,JS等

使用完成在worker.properties

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

这可能不是最好的服务,如图片的静态内容MOD JK连接器完成因为它改变了你的所有部署架构

  • 是Zenil提出的server.xml配置在conf下的解决方案

这个限制将是在你的tomcat中部署的所有应用程序都将从D:/newWebApps提供服务。这可能不符合你的目的,因为只需要将源代码库中的应用程序映射到你的tomcat。

  • 我想下面将给出 情景

更适合你创建一个文件applicationName.xml &限定以下

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

,并把这个文件放在\conf\Catalina\localhost目录。将tomcat会选择这个时自动

现在,您可以通过

http://servername:8080/applicationName/js/anything.js 

访问此请参阅此http://tomcat.apache.org/tomcat-7.0-doc/config/context.html的更多详细信息设置的docBase外面的Tomcat默认diretories

您的server.xml
+0

我尝试了第二次建议创建applicationName.xml。不幸的是,这样做会导致所有内容都变为404。 – 2013-02-21 19:56:04

+0

我应该注意到你的答案可能没有错。我的实施是。 – 2013-02-21 21:57:42

1

更新和修改“主机“为你的应用程序有两个目的:

1)指向您的git源代码目录为tomcat启动您的应用程序。这将避免必须在两个地方进行更改或复制更改。

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

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

2)添加不同的地点供服务您的静态内容。这将帮助你避免重新启动Tomcat的每次你改变你的CSS/JS

更改所需:添加上下文的服务你的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> 
+1

经过更新以反映OP提供的新信息。 – MickJ 2013-02-21 20:21:10

1

如果我没有理解这个问题吧,你只是想Tomcat的webapps/MY_WEBAPP指向您检出git存储库的内部,因此您可以将其修改为“一次”。假设你只编辑静态资源,我不认为tomcat缓存它们,所以你可能会从tomcat的webapps /到你的git文件夹位置创建一个符号链接。或者从webapps/x/y的符号链接回到你的git等效文件夹(甚至特定的文件)。

我还听说谣言的tomcat可以“热插拔” JSP类和静态的,所以如果它是相关的:how to enable hot deploy in tomcat

相关问题