- 浏览: 63877 次
- 性别:
- 来自: 上海
文章分类
最新评论
最近有个项目需要在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:
java.lang.IllegalStateException: Web app root system property already set to dif
ferent 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 not
expanded");
}
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:
java.lang.NullPointerException
at 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配了两个项目。(如果没有Context path...,可以自己加上去)注意:两个Host的name就不能相同,这个name就是访
问tomcat的域名,也就是说这里每个项目配置了独立的域名。我试过在同一个Host里配两个项目(就是在</Context>后加一个<Context path>),可是这样会出错,就是说同一个域名不能配
两个项目。访问时要注意:第一个是:http://127.0.0.1:8080/Homework.html,第二个是:http://localhost:8080/GWTGXTTest.html;我的tomcat的端口配置是8080;同在server.xml配置
访问端口:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
maxThreads="500" minSpareThreads="50" maxSpareThreads="500"
enableLookups="false" acceptCount="500"
redirectPort="8443" URIEncoding="UTF-8" useBodyEncodingForURI="true"/>
GET方式URL乱码问题解决也是在这里,其中的UTF-8 请根据你的需要自己修改,比如GBK。
tomcat的权限请看conf目录下tomcat-users.xml,在这不多说了。
第一种:
在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:
java.lang.IllegalStateException: Web app root system property already set to dif
ferent 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 not
expanded");
}
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:
java.lang.NullPointerException
at 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配了两个项目。(如果没有Context path...,可以自己加上去)注意:两个Host的name就不能相同,这个name就是访
问tomcat的域名,也就是说这里每个项目配置了独立的域名。我试过在同一个Host里配两个项目(就是在</Context>后加一个<Context path>),可是这样会出错,就是说同一个域名不能配
两个项目。访问时要注意:第一个是:http://127.0.0.1:8080/Homework.html,第二个是:http://localhost:8080/GWTGXTTest.html;我的tomcat的端口配置是8080;同在server.xml配置
访问端口:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
maxThreads="500" minSpareThreads="50" maxSpareThreads="500"
enableLookups="false" acceptCount="500"
redirectPort="8443" URIEncoding="UTF-8" useBodyEncodingForURI="true"/>
GET方式URL乱码问题解决也是在这里,其中的UTF-8 请根据你的需要自己修改,比如GBK。
tomcat的权限请看conf目录下tomcat-users.xml,在这不多说了。
发表评论
-
struts2升级到struts2.3.32(报错、找不到action)
2017-03-20 17:32 948struts2 低版本有漏洞问题,升级到struts2.3.3 ... -
mybatis 插件分页
2013-11-08 18:36 961Mybatis的分页功能很弱,它是基于内存的分页(查出所有记录 ... -
中等数据量的数据去重
2013-09-05 10:54 601最近遇到去重的问题,在此写一下处理的方法! 场景:短信平台有 ... -
部署Openfire源码
2013-07-08 15:39 727部署Openfire源码 1. 获取O ... -
log4j输出多个自定义日志文件、log4j 多进程不同日志文件
2013-05-06 14:09 2407最近在用多个线程走多个任务,但是日志用一个文件总有的线程输出不 ... -
spring与mybatis三种整合方法
2012-09-28 13:42 847以下原文摘自 http://www.cnblogs.com/t ... -
java 获取客户端MAC地址
2012-07-05 17:53 1235从网上查找资料java/jsp获得客户端(IE)网卡MAC地址 ... -
sping bean 作用域
2012-07-02 19:47 916ingleton:返回bean的同一个 ... -
struts1中的不同的form配置形式
2010-08-12 13:56 11661.先看看我们以前使用FormBean的方式 继承Actio ... -
Java中用URLConnection和HttpsURLConnection访问的问题
2010-07-29 15:12 2208虽然用的不多,但是还是要收藏!!!积累中.... 在web应用 ... -
StringUtils工具类的常用方法
2010-07-29 14:11 740StringUtils 方法的操作对象是 java.lang. ... -
tomcat 热部署
2010-07-29 09:56 1260在tomcat中支持热部署有 ... -
删除集合重复的元素
2010-07-21 18:06 909import java.util.Arrays; im ... -
求两日期之间的天数
2010-07-21 17:59 9591. 以系统当前日期为起 ... -
Singleton 模式讲解
2010-07-21 17:56 992Singleton 模式的宗旨在于确保某个类只有一个实例,别且 ... -
最近面试中sql题
2010-07-10 21:14 1110一.SQL问答题 SELECT * FROM TABLE ... -
hibernate和ibatis
2010-07-05 21:07 752简介 iBATIS一词来源 ... -
oracle 锁概念
2010-07-05 18:38 1155希望能与大家共同分享。本人还是不太懂,但是还是收藏一下,以后摸 ... -
表单提交中Get和Post方式的区别
2010-07-05 14:09 959表单提交中Get和Post方式的区别有6点: 1. ge ... -
hibernate 中Criteria 和CriteriaSpecification 的应用
2010-07-02 16:51 2657设计上可以灵活的根据 ...
相关推荐
Tomcat 部署多个项目解决方案 在 Tomcat 中部署多个项目时,可能会遇到一些问题,例如多个项目间的配置冲突、日志记录问题等。以下是解决这些问题的方法和相关知识点。 问题 1:java.lang.IllegalStateException ...
Tomcat下部署多个项目 Tomcat是Apache软件基金会的一个开源的Web应用服务器,能够运行Java Servlet和JavaServer Pages(JSP)。在Tomcat中部署多个项目是一种常见的需求,下面将介绍如何在Tomcat中部署多个项目。 ...
### 如何在一个Tomcat服务器上部署多个项目:多种解决方案及详细步骤 #### 一、前言 在实际的开发和测试环境中,经常需要在同一台服务器上部署多个项目,以满足不同场景的需求。本文将详细介绍如何在一个Tomcat...
绝对成功,自己要用到的环境,千方百计寻找总结出的 亲测有效!
根据提供的文件信息,下面详细介绍在Tomcat7上部署多个Web项目的方法,这些知识点包括了配置文件的编辑、部署路径的管理以及特定开发环境下的项目结构调整。 首先,Tomcat作为一个应用服务器,用于托管Java Web应用...
标题中的“tomcat部署java项目jar”指的是在Apache Tomcat服务器上部署Java Web应用程序,通常以JAR(Java Archive)格式打包。Tomcat是一个开源的轻量级应用服务器,主要用于运行Servlet和JSP(JavaServer Pages)...
【Tomcat部署WAR项目操作文档】 Tomcat是一个广泛使用的开源Java Servlet容器,它允许开发者部署Web应用程序,包括WAR(Web Application Archive)格式的文件。以下是一份详细的步骤指南,涵盖了从打包WAR文件到在...
本教程将深入探讨如何配置Apache Tomcat 8.5.11以支持在一个实例中同时运行多个项目,每个项目绑定到不同的端口,以实现资源的有效利用和管理。 首先,我们需要了解Tomcat的基本结构。在解压的`apache-tomcat-...
总之,部署Java Web项目到Tomcat服务器是一个多步骤的过程,涉及到服务器配置、项目打包以及服务器管理等多个环节。理解这些知识点有助于优化开发流程,提高效率。在实际操作中,应根据具体需求选择适合的部署方式,...
在 Tomcat 服务器中,我们可以配置单点登录,以便实现多个应用程序之间的身份验证共享。在 server.xml 文件中,我们添加了一个单点登录 valve,如下所示: ```xml <!-- ...
通过这种方式,可以在同一台服务器上运行多个独立的Tomcat实例,每个实例监听不同的端口,实现多应用的并行部署。 总之,理解Tomcat的部署机制和Context配置对于高效、灵活地管理Web应用至关重要。无论是静态部署、...
关键词“整合”意味着这个项目可能包含了多个组件或模块,已经经过了集成测试,形成了一个完整的系统。同时,项目包含了“源码”,意味着我们可以深入研究项目的编程细节和实现逻辑。此外,“tomcat部署文件”表明...
### 同一服务器部署多个Tomcat的方法 在实际的应用场景中,有时我们可能需要在同一台服务器上部署多个Tomcat实例来满足不同的应用需求或进行负载均衡。本文将详细介绍如何在同一台Windows服务器上部署多个Tomcat...
标题"服务器部署多个tomcat方法"暗示我们将探讨如何在单个服务器上配置和管理多个独立运行的Tomcat实例,以实现应用隔离、负载均衡或服务多样化。这通常涉及到配置、端口管理、目录结构和启动脚本的调整。 首先,...
在Linux环境下安装并配置Tomcat以及部署Web项目是一项重要的技术任务,涉及到多个环节的设置与调整。以下将详细介绍整个过程中的关键步骤及注意事项。 #### 二、安装JDK 1. **下载JDK安装包**:首先需要从Oracle...
以下是一份详细的Tomcat部署项目指南: 1. **安装Tomcat** - 首先,你需要下载Apache Tomcat的最新版本。访问官方网站`https://tomcat.apache.org/download-90.cgi`,根据你的操作系统(Windows、Linux或Mac)选择...
本文将详细介绍如何在一台新机器上部署一个项目到Tomcat服务器,包括安装Tomcat、配置Java环境以及启动项目。 1. **安装Tomcat** 首先,你需要获取Tomcat的安装包。在本例中,安装包是`apache-tomcat-6.0.18.zip`...