tomcat部署多个项目
tomcat部署项目以及与IDEA集成的实现

tomcat部署项⽬以及与IDEA集成的实现⽬录tomcat部署项⽬的3种⽅式直接将项⽬放到webapps⽬录配置conf/server.xml⽂件(不推荐)在conf\catalina\localhost创建任意名称的xml⽂件。
(最推荐)(热部署)tomcat与IDEA集成集成配置创建web项⽬热部署tomcat部署项⽬的3种⽅式直接将项⽬放到webapps⽬录配置conf/server.xml⽂件在conf\catalina\localhost创建任意名称的xml⽂件。
直接将项⽬放到webapps⽬录新建⼀个haha⽂件夹,这个⽂件夹就是相当于⼀个项⽬⽂件夹中创建⼀个a.xml⽂件xml⽂件的内容为把项⽬复制到webapps⽬录,重启tomcat访问页⾯如果出现乱码,可以参考这个解决/haha:项⽬的访问路径-->虚拟路径/a.html:资源路径简化⽅式先把haha项⽬去掉我们的tomcat还运⾏着,没有关闭项⽬加多⼀个⽂件b.html将a.html和b.html打包把压缩⽂件后缀改成war包格式将war包放进webapps⽬录下,发现并没有⾃动解压⽂件查看⼀下⽇志从⽇志⽂件中,我们可以知道需要的是zip格式的,rar格式不⾏所以我们⽤7Zip压缩成zip格式,在把格式换成war格式再把c.war放进webapps⽬录下,发现⾃动解压了因为我们的tomcat并没有关闭,所以访问⼀下为什么?因为我们的虚拟⽬录改了啊,我们的war包是c.war,解压后虚拟⽬录是c啊,所以重新访问访问b⽂件tomcat运⾏状态下,把war包删除,那么相应的解压⽂件夹也会⾃动删除,也就删除了项⽬。
缺点:需要拷贝项⽬配置conf/server.xml⽂件(不推荐)现在我webapps⽬录先下已经没有⾃定义的项⽬在E盘的⽂件夹⾥⾯定⼀个heihei项⽬,⾥⾯只有a.html⽂件,⽂件内容为你红⾊字:嘿嘿侠找到配置⽂件server.xml找到Host标签加⼊以下配置:<Context docBase="E:\heihei" path="/lala" />注:docBase:项⽬的路径path:虚拟路径启动tomcat访问缺点:因为配置是写在server.xml⽂件⾥⾯,这个⽂件⾥的配置都是tomcat的核⼼配置,如果在这⾥配置部署,有可能会弄坏tomcat的配置,并且每次修改都要重启,所以这种⽅式不推荐。
tomcat单实例多应用、多实例多应用部署

tomcat单实例多应⽤、多实例多应⽤部署⼀般来说,tomcat部署需求分为以下⼏种场景:①单实例单应⽤(即⼀个tomcat⼀个web应⽤)②单实例多应⽤(即⼀个tomcat多个web应⽤)③多实例单应⽤(即多个tomcat都部署⼀个应⽤)④多实例多应⽤(多个tomcat部署多个不同的应⽤)第⼀个场景:⽐较常见,如果不要求周期性地维护tomcat版本,⼀般的做法是把打好的war包丢到webapps⽬录下,然后执⾏startup.sh脚本,并且可以在浏览器⾥访问就⾏了第三个场景:各个tomcat都运⾏同⼀个应⽤程序,对应地需要修改不同的监听端⼝,这种⽅式通常会和apache httpd或者nginx整合使⽤,做⼀些负载均衡的处理。
今天,主要针对第⼆个和第四个场景的部署做⼀下笔记:⼯具:tomca8、res规则平台、mysql数据库⼀、⾸先第⼆个场景:单实例多应⽤①⾸先,以res在tomcat下已配置好的基础上,修改tomcat下server.xml,增加⼀个服务,如下图:即再重新增加⼀个web服务,但两个web服务连接的数据库以及端⼝不同。
②:启动startup.bat,此时tomcat会报错闪退,并且⽣成⼀个webapps2⽂件夹(因没有对应war包资源所以闪退)③:将webapps⾥的war包复制到webapps2再次启动即可不⾜:这种⽅式要慎⽤在⽣产环境,因为重启或挂掉 Tomcat 后会影响另外⼀个应⽤的访问。
⼆、第四种场景:多实例多应⽤①:这种⽅式⽐较简单,直接copy⼀个副本即可,如下图当然,也是以res在tomcat下已配置好的基础上进⾏操作的②这两个tomcat配置也有区别:server.xml⾥的端⼝号不同,所连接的数据库也不同这种模式在服务器资源有限,或者对服务器要求并不是很⾼的情况下,可以实现多个不同项⽬部署在同⼀台服务器上的需求,来实现资源使⽤的最⼤化。
总结:以上内容为学习笔记,不⾜之处还望海涵,菜鸟⼀个,欢迎⼤⽜们评论指导!。
tomcat部署多个项目

tomcat部署多个项目最近有个项目需要在tomcat部署多个项目:(个人解决方案)第一种:在host中加:<Host name="localhost" appBase="webapps"unpackWARs="true" autoDeploy="true"xmlValidation="false" xmlNamespaceAware="false"><Context path="/xfpm222" docBase="D:\running\Xfpm2" debug="0"reloadable="true"><Resource name="jdbc/Oraclexfpm222" auth="Container"type="javax.sql.DataSource" maxActive="100" maxIdle="50" maxWait="-1" username="xfpm2"password="xfpm2" driverClassName="oracle.jdbc.driver.OracleDriver"url="jdbc:oracle:thin:@162.8.156.40:1521:orcl"/></Context></Host>报错1:ng.IllegalStateException: Web app root system property already set to different value: 'webapp.root' = [D:\running\Xfpm2\] instead of [C:\Program Files\T omcat 5.5\webapps\Xfpm2\] - Choose unique values for the 'webAppRootKey' context -param in your web.xml files!at org.springframework.web.util.WebUtils.setWebAppRootSystemProperty(Web Utils.java:132)at org.springframework.web.util.Log4jWebConfigurer.initLogging(Log4jWebC onfigurer.java:118)......解决1:是两个项目的设置重复了,导致出错,但我发现web.xml里并没有配置webAppRootKey项,然后查阅网上资料,原来是因为如果没有web.xm 内没有设置webAppRootKey项,是为默认设置public static void setWebAppRootSystemProperty(ServletContext servletContext)throws IllegalStateException {String param = servletContext.getInitParameter(WEB_APP_ROOT_KEY_PARAM);String key = (param != null ? param : DEFAULT_WEB_APP_ROOT_KEY);String oldValue = System .getProperty(key);if (oldValue != null ) {throw new IllegalStateException ("WARNING: Web app root system property already set: " + key + " = " +oldValue + " - Choose unique webAppRootKey values in your web.xml files!" );}String root = servletContext.getRealPath("/" );if (root == null ) {throw new IllegalStateException ("Cannot set web app root system property when WAR file is notexpanded");}System .setProperty(key, root);servletContext.log("Set web app root system property: " + key + " = " + root);}从代码看出,该方法其实就是把该web application的根目录的绝对文件路径作为属性保存在System的属性列表中。
tomcat配置入门和配置多个项目

tomcat配置入门和配置多个项目Tomcat 是一个小型的轻量级应用服务器,是开发和调试JSP 程序的首选。
因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。
tomcat有安装版和免安装版。
我常用的是"apache-tomcat-6.0.20"免安装版。
配置:1、配置JAVA_HOME先要安装好sun的jdk;右击桌面的“我的电脑”图标,选“属性”进入,选“高级”,点“环境变量”,在“系统变量”下的列表查看是否已经有JAVA_HOME,如果没有,点“系统变量”下的“新建”,弹出了“新建系统变量”对话框。
在“变量名:”填写:JAVA_HOME,在“变量值”填写你的jdk的安装目录路径,如我的jdk目录路径是这样:C:\Program Files\Java\jdk1.6.0_18,最后“确定”;在tomcat目录下的bin目录找到startup.bat文件用记事本编辑打开(注意:startup.bat就是tomcat的启动文件),在最后一行加上“pause;”,就是加一个pause单词和一个英文的分号。
这样做是为了显示startup.bat启动的信息。
然后双击startup.bat启动。
如果显示:The JAVA_HOME environment variable is not defined correctlyThis environment variable is needed to run this programNB: JAVA_HOME should point to a JDK not a JRE说明JAVA_HOME的jdk路径没有配置好。
这个NB提示好理解,JAVA_HOME应该指向JDK而不是JRE,(意思是找不到jdk)我们可以用另一种方法配置。
直接在tomcat目录下的bin目录的catalina.bat中的set CURRENT_DIR=%cd%后加入一行set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_18(注意:“=”后面的路径因人而异)这是将你的当前JDK目录写死进去,运行成功,这样也省得你Tomcat自个儿去找jdk了。
linux下部署多个tomcat

1. 环境:1.1. Centos 5.21.2. Tomcat 5.5.172. 需要解决一下几个问题2.1. 不同的tomcat启动和关闭监听不同的端口2.2. 不同的tomcat的启动文件startup.sh 中要指定各自的CATALINA_HOME 和CATALINA_BASE这两个环境变量。
先把tomcat解压到linux文件夹下:如/usr/local下#vi(gedit) /etc/profile在其中加入##########first tomcat###########CATALINA_BASE=/usr/local/tomcatCATALINA_HOME=/usr/local/tomcatTOMCAT_HOME=/usr/local/tomcatexport CATALINA_BASE CATALINA_HOME TOMCAT_HOME##########first tomcat######################second tomcat##########CATALINA_2_BASE=/usr/local/tomcat_2CATALINA_2_HOME=/usr/local/tomcat_2TOMCAT_2_HOME=/usr/local/tomcat_2export CATALINA_2_BASE CATALINA_2_HOME TOMCAT_2_HOME##########second tomcat##########保存退出。
#source /etc/profile来到第二个tomcat的bin目录下在catalina.sh中加入export JAVA_HOME=export PATH=export CLASSPATH=###以上三个环境变量就是JAVA的环境变量###export CATALINA_BASE=$CATALINA_2_BASEexport CATALINA_HOME=$CATALINA_2_HOME第一个安装的tomcat,保持解压后的原状不用修改, 最后修改第二个tomcat 修改server.xml配置和第一个不同的启动、关闭监听端口。
在同一台云服务器上部署多个Tomcat

在同一台云服务器上部署多个Tomcat在一台服务器上配置多个Tomcat,主要就是要避免Tomcat服务器的端口冲突的问题。
修改tomcat\conf\server.xml中的启动端口和连接端口就可以了!(为了方便测试,将Tomcat命名为:apache-tomcat-7.0.64-8082和apache-tomcat-7.0.64-8081)一、添加环境变量:右键单击我的电脑->选择属性->选择高级->选择环境变量:添加系统变量:变量名:CATALINA_HOME_8081变量值:D:apache-tomcat-7.0.64-8081变量名:D:CATALINA_HOME_8082变量值:D:\apache-tomcat-7.0.64-8081如图所示:二、配置Tomcat启动项,避免冲突①、打开文件D:\apache-tomcat-7.0.64-8081\bin\startup.bat 在文件最前面添加://JDK所在路径:SET JAVA_HOME=C:\Program Files\Java\jdk1.6.0_43//Tomcat所在路径:SET CATALINA_HOME=D:\apache-tomcat-7.0.64-8081如图所示:②、打开文件D:\apache-tomcat-7.0.64-8082\bin\startup.bat 在文件最前面添加://JDK所在路径:SET JAVA_HOME=C:\Program Files\Java\jdk1.6.0_43//Tomcat所在路径:SET CATALINA_HOME=D:\apache-tomcat-7.0.64-8082如图所示:三、修改启动端口和关闭端口:①、进入D:\apache-tomcat-7.0.64-8081\conf\server.xml,打开server.xml文件,修改下面两个地方:(1)<Server port="8006" shutdown="SHUTDOWN">修改这个port=”8006”,原来默认的为:8005,使得它的关闭端口和另一个关闭端口不发生冲突。
一台服务器上面运行多个tomcat服务的设置方法
项目软件使用了tomcat,在安装时自动注册为服务。
有一客户在安装时发现与另外一个软件的tomcat发生了冲突,两个软件都要使用,于是在网上查了一下资料,解决这个问题。
设置方法很简单,修改server.xml配置文件中的3个端口即可。
下面将简单总结一下如何在同一台服务器上部署多个tomcat服务。
1、下载tomcat zip版软件,分别解压到两个目录,如tomcat1和tomcat2;2、tomcat1的server.xml文件的端口设置保持默认不变;3、按照如下方法修改tomcat2的server.xml文件;∙修改8080端口。
将<Connector port="8080" maxThreads="150" minSpareThreads="25"maxSpareThreads="75" enableLookups="false" redirectPort="8443"acceptCount="100" debug="0" connectionTimeout="20000"disableUploadTimeout="true" />中的8080修改为与tomcat1中不同的端口(确保设置的端口未被使用),如9090;∙修改8005端口。
将<Server port="8005" shutdown="SHUTDOWN" debug="0">中俄8005端口修改为与tomcat1中不同的端口(确保设置的端口未被使用),如9005;∙修改8009端口。
将<Connector port="8009" enableLookups="false"redirectPort="8443" debug="0" protocol="AJP/1.3" />中的8009端口修改为与tomcat1中不同的端口(确保设置的端口未被使用),如9009;∙保存server.xml文件并关闭。
tomcat部署项目
第一种方法:在tomcat中的conf目录中,在server.xml中的,<host/>节点中添加:
<Context path="/hello" docBase="D:eclipse3.2.2forwebtoolsworkspacehelloWebRoot" debug="0" privileged="true">
runtime.getruntime().exec("cmd /c start "+strjavahome+"jar cvf hello.war c:\\tomcat5.0\\webapps\\root\\*");
}
catch(exception e){system.out.println(e);}
注意:删除一个Web应用同时也要删除webapps下相应的文件夹祸server.xml中相应的Context,还要将Tomcat的conf
\catalina\localhost目录下相应的xml文件删除。否则Tomcat仍会岸配置去加载。。。
webapps这个默认的应用目录也是可以改变。打开Tomcat的conf目录下的server.xml文件,找到下面内容:
<Host name="localhost" debug="0" appBase="webapps" unpackWARs="true" autoDeloy="true" xmlValidation="falase" xmlNamespaceAware="false">
Tomcat 部署项目的三种方法.doc
Tomcat 部署项目的三种方法1、下载Tomcat 服务器官网下载地址:/回到顶部2、启动并部署Tomcat 服务器①、解压tomcat 安装包到一个非中文目录下②、配置环境变量。
JA V A_HOME(指向JDK 安装的根目录)③、双击apache-tomcat-6.0.16\bin 目录下的startup.bat,启动服务器(如果一闪而过,那就是没有配置JA V A_HOME 的环境变量)④、在浏览器中输入http://localhost:8080注意:Tomcat 启动不了的时候注意配置JA V A_HOME:C:\ProgramFiles\Java\jdk1.6.0_43这是安装JDK的根目录回到顶部3、Tomcat 的目录结构4、部署项目的第一种方法(项目直接放入webapps 目录中)1、将编写并编译好的web项目(注意要是编译好的,如果是eclipse,可以将项目打成war 包放入),放入到webapps 中2、启动tomcat服务器(双击apache-tomcat-6.0.16\bin 目录下的startup.bat,启动服务器)3、在浏览器输入:http://localhost:8080/项目名/访问的文件名5、部署项目的第二种方法(修改conf/server.xml 文件)①、打开tomcat下conf/server.xml,在标签之间输入项目配置信息1path:浏览器访问时的路径名docBase:web项目的WebRoot所在的路径,注意是WebRoot的路径,不是项目的路径。
其实也就是编译后的项目reloadble:设定项目有改动时,tomcat是否重新加载该项目②、双击startup.bat,启动tomcat 服务器,然后在浏览器输入访问的项目名称路径注意:如果你配置的path="/xx",那么访问的时候就是这样:6、部署项目的第三种方法(apache-tomcat-7.0.52\conf\Catalina\localhost )①、进入到apache-tomcat-7.0.52\conf\Catalina\localhost 目录,新建一个项目名.xml 文件②、在那个新建的xml 文件中,增加下面配置语句(和上面的是一样的,但是不需要path 配置,加上也没什么用)1③、在浏览器输入路径:localhost:8080/xml文件名/访问的文件名总结:①、第一种方法比较普通,但是我们需要将编译好的项目重新copy 到webapps 目录下,多出了两步操作②、第二种方法直接在server.xml 文件中配置,但是从tomcat5.0版本开始后,server.xml 文件作为tomcat 启动的主要配置文件,一旦tomcat 启动后,便不会再读取这个文件,因此无法再tomcat 服务启动后发布web 项目③、第三种方法是最好的,每个项目分开配置,tomcat 将以\conf\Catalina\localhost 目录下的xml 文件的文件名作为web 应用的上下文路径,而不再理会中配置的path 路径,因此在配置的时候,可以不写path。
Tomcat多个应用配置方法
Tomcat多个应⽤配置⽅法复制代码代码如下:<?xml version='1.0' encoding='utf-8'?><!--Licensed to the Apache Software Foundation (ASF) under one or morecontributor license agreements. See the NOTICE file distributed withthis work for additional information regarding copyright ownership.The ASF licenses this file to You under the Apache License, Version 2.0(the "License"); you may not use this file except in compliance withthe License. You may obtain a copy of the License at/licenses/LICENSE-2.0Unless required by applicable law or agreed to in writing, softwaredistributed under the License is distributed on an "AS IS" BASIS,WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.See the License for the specific language governing permissions andlimitations under the License.--><!-- Note: A "Server" is not itself a "Container", so you may notdefine subcomponents such as "Valves" at this level.Documentation at /docs/config/server.html--><Server port="8005" shutdown="SHUTDOWN"><!--APR library loader. Documentation at /docs/apr.html --><Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /><!--Initialize Jasper prior to webapps are loaded. Documentation at /docs/jasper-howto.html --><Listener className="org.apache.catalina.core.JasperListener" /><!-- JMX Support for the Tomcat server. Documentation at /docs/non-existent.html --><Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" /><Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" /><!-- Global JNDI resourcesDocumentation at /docs/jndi-resources-howto.html--><GlobalNamingResources><!-- Editable user database that can also be used byUserDatabaseRealm to authenticate users--><Resource name="UserDatabase" auth="Container"type="erDatabase"description="User database that can be updated and saved"factory="ers.MemoryUserDatabaseFactory"pathname="conf/tomcat-users.xml" /></GlobalNamingResources><!-- A "Service" is a collection of one or more "Connectors" that sharea single "Container" Note: A "Service" is not itself a "Container",so you may not define subcomponents such as "Valves" at this level.Documentation at /docs/config/service.html--><Service name="Catalina"><!--The connectors can use a shared executor, you can define one or more named thread pools--> <!--<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"maxThreads="150" minSpareThreads="4"/>--><!-- A "Connector" represents an endpoint by which requests are receivedand responses are returned. Documentation at :Java HTTP Connector: /docs/config/http.html (blocking & non-blocking)Java AJP Connector: /docs/config/ajp.htmlAPR (HTTP/AJP) Connector: /docs/apr.htmlDefine a non-SSL HTTP/1.1 Connector on port 8080--><Connector server="mws" address="127.0.0.1" port="80" maxHttpHeaderSize="8192" maxThreads="1024" enableLookups="false" redirectPort="8443" acceptCount="100"connectionTimeout="20000" disableUploadTimeout="true"compression="on" compressableMimeType="text/html,text/xml,text/plain" bufferSize="10240" URIEncoding="GBK"/> <!-- A "Connector" using the shared thread pool--><!--<Connector executor="tomcatThreadPool"port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" />--><!-- Define a SSL HTTP/1.1 Connector on port 8443This connector uses the JSSE configuration, when using APR, theconnector should be using the OpenSSL style configurationdescribed in the APR documentation --><!--<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"maxThreads="150" scheme="https" secure="true"clientAuth="false" sslProtocol="TLS" />--><!-- An Engine represents the entry point (within Catalina) that processesevery request. The Engine implementation for Tomcat stand aloneanalyzes the HTTP headers included with the request, and passes themon to the appropriate Host (virtual host).Documentation at /docs/config/engine.html --><!-- You should set jvmRoute to support load-balancing via AJP ie :<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">--><Engine name="Catalina" defaultHost="localhost"><!--For clustering, please take a look at documentation at:/docs/cluster-howto.html (simple how to)/docs/config/cluster.html (reference documentation) --><!--<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>--><!-- The request dumper valve dumps useful debugging information aboutthe request and response data received and sent by Tomcat.Documentation at: /docs/config/valve.html --><!--<Valve className="org.apache.catalina.valves.RequestDumperValve"/>--><!-- This Realm uses the UserDatabase configured in the global JNDIresources under the key "UserDatabase". Any editsthat are performed against this UserDatabase are immediatelyavailable for use by the Realm. --><Realm className="erDatabaseRealm"resourceName="UserDatabase"/><!-- Define the default virtual hostNote: XML Schema validation will not work with Xerces 2.2.--><Host name="" appBase=""unpackWARs="true" autoDeploy="true"xmlValidation="false" xmlNamespaceAware="false"><Context path="" docBase="/export/wwwroot/" debug="0"></Context></Host><Host name="" appBase=""unpackWARs="true" autoDeploy="true"xmlValidation="false" xmlNamespaceAware="false"><Context path="" docBase="/export/wwwroot/" debug="0"></Context></Host><Host name="" appBase=""unpackWARs="true" autoDeploy="true"xmlValidation="false" xmlNamespaceAware="false"><Context path="" docBase="/export/wwwroot/" debug="0"></Context></Host><Host name="" appBase=""unpackWARs="true" autoDeploy="true"xmlValidation="false" xmlNamespaceAware="false"><Context path="" docBase="/export/wwwroot/" debug="0"></Context></Host><Host name="" appBase=""unpackWARs="true" autoDeploy="true"xmlValidation="false" xmlNamespaceAware="false"><Context path="" docBase="/export/wwwroot/" debug="0"> </Context></Host><Host name="" appBase=""unpackWARs="true" autoDeploy="true"xmlValidation="false" xmlNamespaceAware="false"><Context path="" docBase="/export/wwwroot/" debug="0"></Context></Host></Engine></Service></Server>。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
tomcat部署多个项目最近有个项目需要在tomcat部署多个项目:(个人解决方案)第一种:在host中加:<Host name="localhost" appBase="webapps"unpackWARs="true" autoDeploy="true"xmlValidation="false" xmlNamespaceAware="false"><Context path="/xfpm222" docBase="D:\running\Xfpm2" debug="0"reloadable="true"><Resource name="jdbc/Oraclexfpm222" auth="Container"type="javax.sql.DataSource" maxActive="100" maxIdle="50" maxWait="-1" username="xfpm2"password="xfpm2" driverClassName="oracle.jdbc.driver.OracleDriver"url="jdbc:oracle:thin:@162.8.156.40:1521:orcl"/></Context></Host>报错1:ng.IllegalStateException: Web app root system property already set to different value: 'webapp.root' = [D:\running\Xfpm2\] instead of [C:\Program Files\T omcat 5.5\webapps\Xfpm2\] - Choose unique values for the 'webAppRootKey' context -param in your web.xml files!at org.springframework.web.util.WebUtils.setWebAppRootSystemProperty(Web Utils.java:132)at org.springframework.web.util.Log4jWebConfigurer.initLogging(Log4jWebC onfigurer.java:118)......解决1:是两个项目的设置重复了,导致出错,但我发现web.xml里并没有配置webAppRootKey项,然后查阅网上资料,原来是因为如果没有web.xm 内没有设置webAppRootKey项,是为默认设置public static void setWebAppRootSystemProperty(ServletContext servletContext)throws IllegalStateException {String param = servletContext.getInitParameter(WEB_APP_ROOT_KEY_PARAM);String key = (param != null ? param : DEFAULT_WEB_APP_ROOT_KEY);String oldValue = System .getProperty(key);if (oldValue != null ) {throw new IllegalStateException ("WARNING: Web app root system property already set: " + key + " = " +oldValue + " - Choose unique webAppRootKey values in your web.xml files!" );}String root = servletContext.getRealPath("/" );if (root == null ) {throw new IllegalStateException ("Cannot set web app root system property when WAR file is notexpanded");}System .setProperty(key, root);servletContext.log("Set web app root system property: " + key + " = " + root);}从代码看出,该方法其实就是把该web application的根目录的绝对文件路径作为属性保存在System的属性列表中。
该属性的名字,由web.xml文件中的名为"webAppRootKey"的参数值指出。
如果不在web.xml中定义webAppRootKey参数,那么属性名就是缺省的"webapp.root".在我们的petclinic项目中已经定义了webAppRootKey参数,其值为"petclinic.root",因此,属性的名字就是"petclinic.root".最后将webAppRootKey项配置好,错误解决。
以上解释懂一点,但是自己解决方法:在web.xml中加:<context-param><param-name>webAppRootKey</param-name><param-value>web1.root</param-value></context-param>另一个项目中加:<context-param><param-name>webAppRootKey</param-name><param-value>web2.root</param-value></context-param>报错2:Caught exception while loading file struts-default.xml - [unknown location] at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loa dConfigurationFiles(XmlConfigurationProvider.java:795)at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loa dDocuments(XmlConfigurationProvider.java:132)......解决2:可能是出现包之间的冲突,可以把冲突的包放在tomcat的common中(xerces-2.6.2.jar)报错3:ng.NullPointerExceptionat jimmystudio.util.table.TableParser.getPageCount(Unknown Source)at jimmystudio.util.table.TableParser.getPage(Unknown Source)at jimmystudio.util.table.TableUtils.init(Unknown Source)at org.apache.jsp.util.table.table_jsp._jspService(table_jsp.java:57)at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)解决3:这是同一数据库,出现找不到数据(不知道是页面缓存的问题,还是数据库连接的问题)如果数据用同一数据库可能出现报错!!解决另外建立数据库、用户名和密码,分开连接。
第二种:增加虚拟目录,配置多个项目(自己还未实践)想要通过tomcat访问你的项目,第一种方法就是把你的项目复制到tomcat目录下的webapps目录里。
第二种方法就是配置要运行的项目的路径,如下:打开tomcat目录下的conf目录找到server.xml用记事本打开,找到<Host ....></Host>标记,先看看我的tomcat的server.xml里的Host标记里的配置:<Host name="127.0.0.1" appBase="webapps"unpackWARs="true" autoDeploy="true"xmlValidation="false" xmlNamespaceAware="false"><Context path="" docBase="D:\HtmlTools\xinjing\yangWork\homework\web" debug="0" reloadable="true" crossContext="true"></Context><!-- 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"/>--></Host><Host name="localhost" appBase="webapps"unpackWARs="true" autoDeploy="true"xmlValidation="false" xmlNamespaceAware="false"><Context path=""docBase="D:\HtmlTools\xinjing\teacher\GWTGXT_TEST_4\web" debug="0" reloadable="true" crossContext="true"></Context></Host>我的配了两个Host,每一个Host配了一个项目,就是说我的tomcat配了两个项目。