您的位置:首页 > 运维架构 > Tomcat

tomcat下发布自己的WEB项目

2014-09-16 19:13 246 查看

Tomcat和jboss 热部署调试Web应用,不重启Server

常用的web服务器一般为tomcat和jboss,现一一做介绍。

1.tomcat热部署

在 tomcat中支持热部署有两种方式(在原理上来说,这两种方式是一致的,只是放的位置不同)

a)在 catalina_base/conf/catalina/localhost/中依照manager.xml定义一个xml文件,比如我的项目称作 sodoperation,我们就可以写一个sodoperation.xml,内容如下:

<context path="/sodoperation" docBase="d:/myportal/sodoperation/src/webapp"/>

其中,path指的是你在tomcat中的项目名称,就像manager一样,docBase是指你的项目所在的web目录。一直到欢迎页面为止(也就是 web-inf的前一个目录)。但是一般来说,这个目录中最好不要有中文,如果有的话,可以在文件开始加入

<?xml version='1.0" encoding='utf-8' ?>来试一下,即整个文件变为:

<?xml version='1.0" encoding='utf-8' ?>

<context path="/sodoperation" docBase="d:/myportal/sodoperation/src/webapp"/>

这样就可以了,如果用这种广告,同时使用myeclipse的部署的话,轻易不要remove,这样会使文件都会被删掉,不能持久。所以,建议使用第二种方法。

b)第二种方法和第一种方法在原理上是一致的,其区别就是位置的不同,这次在catalina_base/conf下的server.xml,在文件末加入:

<context path="/sodoperation" docBase="d:/myportal/sodoperation/src/webapp"/>

<Context path="/oa" docBase="D:/workspace/firstoa/webapp" debug="0"reloadable="false">

reloadable="false"这个菜是关键!要么不用写这个参数,要么设为false

解释和上面一样,这种方法在启动tomcat后,会在catalina_base/conf/catalina/localhost/中加入一个与第一种方法的文件。这样保证,只要对 server.xml不做修改,你可以随便对新生成的文件删除,对热部署没有任何问题。

例如:

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

unpackWARs="true" xmlNamespaceAware="false" xmlValidation="false">

<!-- SingleSignOn valve, share authentication between web applications

Documentation at: /docs/config/valve.html -->

<!--

<Valve className="org.apache.catalina.authenticator.SingleSignOn" />

-->

<!-- Access log processes all example.

Documentation at: /docs/config/valve.html -->

<!--

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"

prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/>

-->

<Context docBase="D:/work/work/WebContent"

path="/app1">

</Context>

</Host>

2.jboss热部署

在 jboss中做热部署也有两种方法,因为jobss集成了tomcat,也可以说这两种方法是在jobss上的一个修改。

a)修改jboss-4.0.4RC1/server/default/deploy/jbossweb-tomcat55.sar/context.xml

<Context cookies="true" crossContext="true"antiResourceLocking="true" antiJARLocking="true">

<Manager pathname=""/>

<InstanceListener>org.jboss.web.tomcat.security.RunAsListener</InstanceListener>

</Context>

加上红色的部分,重启jboss,再用myeclipse
Redeploy project的时候就不需要重启,部署完了直接开浏览器预览啦

************************************************************************

找到%tomcathome%\conf\server.xml文件,在<host>标签中加入:

<Context path="/虚拟目录名" docBase="本地路径" debug="0"

reloadable="true" crossContext="true">

</Context>

这样将你的jsp文件放到"本地路径"下,然后在浏览器中输入http://127.0.0.1:8080/虚拟目录名/xxx.jsp即可执行.

注意!!!还没有完!!这时候你的这个虚拟目录还没有执行servlet的能力(当然如果你不用servlet那就令当别论了).

下面是一个范例:

<Context path="/bbs" docBase="work" debug="0"

reloadable="true" crossContext="true">

</Context>

你要建一个名叫work的目录在webapps\下

要使这个work目录可以执行servlet,要有一个配置文件--web.xml,内容为:

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app

PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"

"http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>

<display-name>MyWEB</display-name>

<servlet-mapping>

<servlet-name>invoker</servlet-name>

<url-pattern>/servlet/*</url-pattern>

</servlet-mapping>

</web-app>

这个使最小配置,仅仅是指明servlet的位置.要把这个文件放到webapps\work\WEB-INF\下,你自己的servlet放到webapps\work\WEB-INF\classes\下.

**********************************************************************************************

tomcat部署工程有很多种:

1、最常用的方法是在开发阶段通过Myeclipse直接部署,然后可以进行调试等操作。

2、把工程目录下的WebRoot目录直接复制到tomcat目录webapps中。

3、把工程打包成war包直接复制到tomcat目录webapps中。

4、使用context节点配置工程路径:

1、将工程打包成war之后,在server.xml配置context节点。

Xml代码


<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Context path="/demo" docBase="E:\demo.war" reloadable="false" privileged="true" debug="0"/>
</Host>

注意的是:path不能为空,因为有时可能不需要输入工程名或者path配置的访问路径来访问我们的站点(http://127.0.0.1:8080/),就把path设置为空,但是war包是需要解压到tomcat目录webapps中,如果path为空,tomcat就不知道压缩包解压之后应该取一个什么样的文件夹名,所以部署不成功。

2、直接将context节点中的docBase属性指向工程目录的WebRoot目录(或者是解压war包之后的文件夹目录,如果不想通过项目名访问就不要将解压文件夹放在webapps目录下)

Xml代码


<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="E:\demo\WebRoot" reloadable="false" privileged="true" debug="0"/>
</Host>

path可以为空也可以设置一个访问路径,如:/demo。如果只想通过IP来访问,就把端口设置为80,把path设置为空。

这里要注意的是:在工程中lib目录中的jar包应该全部放在lib目录下,不要在lib目录下建文件夹并且把jar放到文件夹中,这样做在tomcat启动的时候(如果在web.xml中配置了监听器,而监听器的jar包在lib目录下的文件夹中)就会抛出java.lang.ClassNotFoundException,如果没有配置日志,直接启动tomcat,就只会显示严重错误:Error
listenerStart与Context [] startup failed due to previous errors。(通过MyEclipse部署项目与通过war包部署项目,当工程部署成功之后,去看webapps中部署的工程中的lib目录,会发现,所有原本被放在自己建的文件夹中的jar包,现在全部放到了lib目录下)

3、很灵活,在conf目录中,新建 Catalina\localhost目录,在该目录中新建一个xml文件,名字可以随意取,与path后的那个名字也可以不一致,但是访问的时候,必须是xml文件的名字。如:xml文件名为demo,path的名称为hello,那么访问的时候为:http://localhost:8080/demo/,如果为http://localhost:8080/hello/就会出现404错误。(红色部分自己改的,原文地址:http://laotu5i0.iteye.com/blog/577204)

Xml代码


<Context path="/hello" docBase="E:\workspace\hello\WebRoot" debug="0" privileged="true">
</Context>

5、下面一个内容以前用过,但是忘了,在找问题解决办法时候找到了,这里记录下:

原文地址:/article/4185298.html

修改操作系统的hosts文件

按照路径C:\windows\system32\drivers\etc找到hosts文件

添加: 127.0.0.1
www.dai.com

请注意:“127.0.0.1 ”为本地回环地址,“www.dai.com”为自定义域名(你可以自行定义)。

如果在其他电脑访问该项目也想使用该自定义域名,在其hosts文件中

添加: 所要访问服务器的ip
www.dai.com 即可。


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: