Tomcat 部署方式
一、静态部署
1 、直接将web 项目文件件拷贝到webapps 目录中
Tomcat 的 Webapps 目录是 Tomcat 默认的应用目录,当服务器启动时,会加载所有这个目录下的应用。所以可以将 JSP 程序打包成一个 war 包放在目录下,服务器会自动解开这个 war 包,并在这个目录下生成一个同名的文件夹。一个 war 包就是有特性格式的 jar 包,它是将一个 web 程序的所有内容进行压缩得到。具体如何打包,可以使用许多开发工具的 IDE 环境,如 Eclipse 等。也可以用 cmd 命令: jar -cvf mywar.war
myweb
webapps 这个默认的应用目录也是可以改变。打开 Tomcat 的 conf 目录下的 server.xml 文件,找到下面内容:
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
将 appBase 修改即可。
2 、在server.xml 中指定
在 Tomcat 的配置文件中,一个 Web 应用就是一个特定的 Context ,可以通过在 server.xml 中新建Context 里部署一个 JSP 应用程序。打开 server.xml 文件,在 Host 标签内建一个 Context ,内容如下。
在 tomcat 中的 conf 目录中,在 server.xml 中的, <host/> 节点中添加:
<Context path ="/hello" docBase ="D:/ workspace/hello/WebRoot" debug ="0" privileged ="true">
</Context>
或者
<Context path ="/myapp" reloadable ="true" docBase ="D:/myapp" workDir ="D:/myapp/work"/>
或者
<Context path ="/sms4" docBase ="D:/workspace/sms4/WebRoot"/>
说明:
path 是虚拟路径;
docBase 是应用程序的物理路径;
workDir 是这个应用的工作目录,存放运行时生成的与这个应用相关的文件;
debug 则是设定 debug level, 0 表示提供最少的信息, 9 表示提供最多的信息
privileged 设置为 true 的时候,才允许 Tomcat 的 Web 应用使用容器内的 Servlet
reloadable 如果为 true ,则 tomcat 会自动检测应用程序的 /WEB-INF/lib 和 /WEB-INF/classes 目录的变化,自动装载新的应用程序,可以在不重起 tomcat 的情况下改变应用程序,实现热部署
antiResourceLocking 和 antiJARLocking 热部署是需要配置的参数,默认 false 避免 更新了某个 webapp ,有时候 Tomcat 并不能把旧的 webapp 完全删除,通常会留下 WEB-INF/lib 下的某个 jar 包,必须关闭 Tomcat 才能删除,这就导致自动部署失败。设置为 true , Tomcat 在运行对应的 webapp 时,会把相应的源文件和 jar 文件复制到一个临时目录里。
3 、创建一个Context 文件
在 conf 目录中,新建 Catalina \ localhost 目录,在该目录中新建一个 xml 文件,名字不可以随意取,要和path 后的那个名字一致,按照下边这个 path 的配置, xml 的名字应该就应该是 hello ( hello.xml ),该 xml 文件的内容为:
<Context path="/hello" docBase="E:/workspace/hello/WebRoot" debug="0" privileged="true"></Context>
tomcat 自带例子如下:
<Context docBase="${catalina.home}/server/webapps/host-manager"
privileged="true" antiResourceLocking="false" antiJARLocking="false">
</Context>
这个例子是 tomcat 自带的,编辑的内容实际上和第二种方式是一样的,其中这 xml 文件名字就是访问路径,这样可以隐藏应用的真实名字。
4 、注意:
删除一个 Web 应用同时也要删除 webapps 下相应的文件夹和 server.xml 中相应的 Context ,还要将 Tomcat的 conf/catalina/localhost 目录下相应的 xml 文件删除,否则 Tomcat 仍会去配置并加载。。。
二动态部署
登陆 tomcat 管理控制台: http://localhost:8080/ ,输入用户名和密码后便可管理应用并动态发布。
在 Context Path(option): 中输入 /yourwebname ,这代表你的应用的访问地址。
XML Configration file URL 中要指定一个 xml 文件,比如我们在 F:/ 下建立一个 hmcx.xml 文件,内容如下:<Context reloadable="false" /> 其中 docBase 不用写了,因为在下一个文本框中填入。或者更简单点,这个文本框什么都不填,在 WAR or Directory URL: 中键入 F:/hmcx 即可,然后点击 Deploy 按钮,上面就可以看到了web 应用程序,名字就 Context Path(option): 中的名字。
如果部署 .war 文件还有更加简单的方式,下面还有个 Select WAR file
uploae 点击浏览选择 .war 文件,然后点击 Deploy 也可以。
三 CONTEXT配置
conf/Context.xml是Tomcat公用的环境配置;若在Server.xml中增加<Context
path="/test" docBase="D:\test" debug="0"
reloadable="false"/>的话,则myApp/META-INF/Context.xml就没用了(被server.xml中的Context替代),Jndi 数据源或其他资源可直接定在里面,如:
<Context path="/frame"
docBase="C:\Java\jboss-4.0.1sp1\server\default\deploy\webroot.war"
debug="0" reloadable="false">
<Resource name="UserTransaction"
auth="Container"
type="javax.transaction.UserTransaction"
factory="org.objectweb.jotm.UserTransactionFactory"
jotm.timeout="60" />
<Resource name="sharkdb"
type="javax.sql.DataSource"
password="helloworld"
driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
maxIdle="2" maxWait="5000" username="sa"
url="jdbc:microsoft:sqlserver://192.168.0.193:1433;DatabaseName=test_cyber3;SelectMethod=cursor"
maxActive="4"/>
<Resource name="cyberwaydb"
type="javax.sql.DataSource"
password="helloworld"
driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
maxIdle="2" maxWait="5000" username="sa"
url="jdbc:microsoft:sqlserver://192.168.0.193:1433;DatabaseName=test_cyber3"
maxActive="4"/>
</Context>
若在<GlobalNamingResources>中增加的JNDI或其他的,在App中需引用,才能使用,以下两种引用方式:
A:在WEB-INF/web.xml
中配置如下:
<resource-ref>
<description>DB
Connection</description>
<res-ref-name>jdbc/TestDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
B:在yoursApp\META-INF\context.xml, 如下:
<?xml version='1.0' encoding='utf-8'?>
<Context path="/yoursApp" docBase="yoursApp"
debug="5"
reloadable="true"
crossContext="true">
<ResourceLink name="mysqlDBConPool"
global="mysqlDBConPool" type="javax.sql.DataSource"/>
</Context>
posted on 2013-04-08 09:24 restService 阅读(295) 评论(0) 编辑 收藏 举报