将Web项目War包部署到Tomcat服务器基本步骤(完整版)

1. 常识:

1.1 War包

War包一般是在进行Web开发时,通常是一个网站Project下的所有源码的集合,里面包含前台HTML/CSS/JS的代码,也包含Java的代码。

当开发人员在自己的开发机器上调试所有代码并通过后,为了交给测试人员测试和未来进行产品发布,都需要将开发人员的源码打包成War进行发布。

War包可以放在Tomcat下的webapps或者word目录下,随着tomcat服务器的启动,它可以自动被解压。

1.2 Tomcat服务器

Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选,最新的Servlet和JSP规范总是能在Tomcat中得到体现。

2. 配置Java运行环境

2.1 下载并安装JDK

从官网上下载最新的JDK:http://java.sun.com/javase/downloads/index.jsp ,下载后安装,选择想把JDK安装到的目录。JRE是包含在JDK中的,所以不需要再另外安装JRE了。

2.2 设置JDK环境变量

右击“计算机”,点击“属性”,点击弹出窗口中左侧的“高级系统设置”,在弹出的选项卡中选择“高级->环境变量”。

假设你本地JAVA的JDK安装的位置为:C:\Program Files\Java\jdk1.7.0_45。

在这里,新建2个环境变量,编辑1个已有的环境变量。如下:

新建变量名:JAVA_HOME;

变量值:你安装JDK的安装目录,在这里为C:\Program Files\Java\jdk1.7.0_45。

新建变量名:CLASSPATH

变量值:

.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%TOMCAT_HOME%\BIN

(注意最前面有个.号)

编辑环境变量的路径:

变量名:Path;

变量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

(将此处的字符串粘贴到变量值的最前面)

2.3 验证是否JDK环境变量设置成功

点击开始并输入CMD,在命令行分别输入:java; javac; java –version.

如果分别显示如下信息,说明你的Java环境变量已经配置成功。

输入Java,显示:

输入Javac,显示:

输入java –version,显示:

3. 部署Tomcat服务器

3.1 下载Tomcat到本地硬盘

从官网上下载Tomcat服务器。官网上下载的文件都是绿色免安装的。

下载地址为:http://tomcat.apache.org/download-70.cgi

下载后解压缩,如E:\apache-tomcat-7.0.26。

3.2 设置Tomcat环境变量

依然是点开电脑的环境变量对话框。

新建一个环境变量:

变量名:TOMCAT_HOME

变量值:你的TOMCAT解压后的目录,如E:\apache-tomcat-7.0.26。

3.3 验证Tomcat环境变量的配置是否成功

运行Tomcat解压目录下的 bin/startup.bat,启动Tomcat服务器。在任何一款浏览器的地址栏中输入http://localhost:8080 ,如果界面显示如下图,则说明Tomcat的环境变量配置成功。

tomcat启动的窗口为:

4. 部署Web项目的War包到Tomcat服务器

4.1 FTP获取war包和sql脚本

从本地FTP服务器上下载Daily Building出的最新的项目包。解压后一般由两个文件组成,database文件夹和projectName.war包。

运行database文件中的xxxxx.sql脚本文件,便可以生成最新的数据库和表结构。

4.2 配置Web项目的虚拟目录

将projectName.war包,复制到Tomcat的webapp下。这样当配置好后的访问路径便为:http://localhost:8080/projectName/login.jsp

在访问之前,需要修改tomcat服务器的配置文件,打开:

tomcat解压目录\conf\context.xml。将运行该web项目时,需要配置的数据库连接字符串增加到该xml文件中。增加后的context.xml为:

<Context>

<!-- Default set of monitored resources -->

<WatchedResource>WEB-INF/web.xml</WatchedResource>

<!-- Uncomment this to disable session persistence across Tomcat restarts -->

<!--

<Manager pathname="" />

-->

<!-- Uncomment this to enable Comet connection tacking (provides events

on session expiration as well as webapp lifecycle) -->

<!--

<Valve className="org.apache.catalina.valves.CometConnectionManagerValve" />

-->

(这里填写本Web项目运行时,需要连接的数据库配置。)

</Context>

4.3 访问web项目的登录页

连接串设置完毕后,便可以基于Tomcat服务器来访问web项目了。

首先运行Tomcat的bin目录下的startup.bat,当Tomcat启动完毕后,

在浏览器输入:localhost:8080/projectName/login.jsp时,如果出现该Web项目的login界面时,则表明war包已成功地部署到tomcat服务器上,并可成功访问了。

(下面是Tomcat的具体配置方法)

Tomcat数据库连接池的配置方法总结

数据库连接是一种关键的有限的昂贵的资源,这在多用户网页应用程序中体现的尤为突出.对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标,数据库连接池正是针对这个问题提出的.

数据库连接池负责分配,管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏,这样可以明显提高对数据库操作的性能.

数据库连接池在初始化的时将创建一定数量的数据库连接放到连接池中,这些数据库连接的数量是由最小数据库连接数来设定的,无论这些数据库连接是否被使用,连接池都将一直保证至少拥有这么多的连接数,当应用程序向连接池请求的连接数超过最大连接数量时,这些请求将被加入到等待队列中.

数据库连接池的最小连接数和最大连接数的设置要考虑到下列几个因素:

1.最小连接数是连接池一直保持的数据库连接,所以如果应用程序对数据库连接的使用量不大,将会有大量的数据库连接资源被浪费.

2.最大连接数是连接池申请的最大连接数,如果数据库连接请求超过次数,后面的数据库连接请求将被加入到等待对列中,这会影响之后的数据库操作

如果最小连接数与最大连接数相差太大,那么最先的连接请求将会获利,之后超过最小连接数量的连接请求等价于建立一个新的数据库连接,不过,这些小于最小连接数的数据库连接在使用完不会马上被释放,它将被放到连接池中等待重复使用或是空闲超时被释放.

实例使用的Tomcat版本为6.0

方法一: 在Tomcat的conf/context.xml中配置
在Tomcat\apache-tomcat-6.0.33\conf目录下的context.xml文件中配置默认值如下:

<?xml version=‘1.0‘ encoding=‘utf-8‘?>
<Context>
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>

配置连接池:

<?xml version=‘1.0‘ encoding=‘utf-8‘?>

<Context>
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
    <!--配置oracle数据库的连接池-->
    <Resource name="jdbc/oracleds"
        author="Container"
        type="javax.sql.DataSource"
        maxActive="100"
        maxIdle="30"
        maxWait="10000"
        username="scott"
        password="tiger"
        driverClassName="oracle.jdbc.dirver.OracleDriver"
        url="jdbc:oracle:thin:@127.0.0.1:1521:ora9" />

    <!--配置mysql数据库的连接池,
        需要做的额外步骤是将mysql的Java驱动类放到tomcat的lib目录下
        maxIdle 连接池中最多可空闲maxIdle个连接
        minIdle 连接池中最少空闲maxIdle个连接
        initialSize 初始化连接数目
        maxWait 连接池中连接用完时,新的请求等待时间,毫秒
        username 数据库用户名
        password 数据库密码
        -->
    <Resource name="jdbc/mysqlds"
        auth="Container"
        type="javax.sql.DataSource"
        username="root"
        password="root"
        maxIdle="30"
        maxWait="10000"
        maxActive="100"
        driverClassName="com.mysql.jdbc.Driver"
        url="jdbc:mysql://127.0.0.1:3306/db_blog" />

</Context>

配置好后需要注意的两个步骤

1.将对应数据库的驱动类放到tomcat的lib目录下

2.重新启动tomcat服务器,让配置生效

在web应用程序的web.xml中设置数据源参考,如下:

在<web-app></web-app>节点中加入下面内容

 <resource-ref>

      <description>mysql数据库连接池</description>
      <!-- 参考数据源名字,同Tomcat中配置的Resource节点中name属性值"jdbc/mysqlds"一致 -->
      <res-ref-name>jdbc/mysqlds</res-ref-name>
      <!-- 资源类型 -->
      <res-type>javax.sql.DataSource</res-type>
      <res-auth>Container</res-auth>
      <res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>

错误解决:

javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial

    at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645)
    at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)
    at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:325)
    at javax.naming.InitialContext.lookup(InitialContext.java:392)
    at com.iblog.util.DBPoolUtil.<clinit>(DBPoolUtil.java:34)

解决方案:

上面的异常信息是配置文件中JNDI没有初始化造成的

如果下面的问题都不存在

1.要去检查下配置文件中连接数据库的URL参数是否正确2.以及是否导入了正常的包3.检查在Tomcat中conf/server.xml文件,检查是否设置useNaming="false",如果是,去掉

2.那就是通过main方法测试的,这个数据源不支持这样的测试方法,程序要运行在Tomcat中才能找到相应的数据源.[我在测试时犯这样的错导致上面错误出现]

<%@ page language="java" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%>

<%@ page import="java.sql.*" %>
<%@ page import="javax.naming.*" %>
<%@ page import="javax.sql.DataSource" %>
<html>
<head>
<title>Tomcat6.0 JNDI!</title>
</head>
  <body>
   Tomcat连接池测试,获取数据源 <br>
    <%
        try {
            //初始化查找命名空间
            Context ctx = new InitialContext();
            //参数java:/comp/env为固定路径
            Context envContext = (Context)ctx.lookup("java:/comp/env");
            //参数jdbc/mysqlds为数据源和JNDI绑定的名字
            DataSource ds = (DataSource)envContext.lookup("jdbc/mysqlds");
            Connection conn = ds.getConnection();
            conn.close();
            out.println("<span style=‘color:red;‘>JNDI测试成功<span>");
        } catch (NamingException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    %>
  </body>
</html>   

运行效果:

方法二:在Tomcat的conf/server.xml中配置

打开tomcat的conf/server.xml文件,找到<GlobalNamingResources></GlobalNamingResources>节点,默认的内容如下

 <GlobalNamingResources>

    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>

在该节点中加入相关的池配置信息,如下

  <GlobalNamingResources>

             <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />

             <!--配置mysql数据库的连接池,
                需要做的额外步骤是将mysql的Java驱动类放到tomcat的lib目录下
               -->
             <Resource name="jdbc/mysqlds"
              auth="Container"
              type="javax.sql.DataSource"
              username="root"
              password="root"
              maxIdle="30"
              maxWait="10000"
              maxActive="100"
              driverClassName="com.mysql.jdbc.Driver"
              url="jdbc:mysql://127.0.0.1:3306/db_blog" />
  </GlobalNamingResources>

在tomcat的conf/context.xml文件中的<Context></Context>节点中加入如下内容

<ResourceLink name="jdbc/mysqlds" global="jdbc/mysqlds" type="javax.sql.DataSource"/>

然后在web项目中的WEB-INF目录下的web.xml中配置

 <resource-ref>

      <description>mysql数据库连接池</description>
      <!-- 参考数据源名字,同Tomcat中配置的Resource节点中name属性值"jdbc/mysqlds"一致 -->
      <res-ref-name>jdbc/mysqlds</res-ref-name>
      <!-- 资源类型 -->
      <res-type>javax.sql.DataSource</res-type>
      <res-auth>Container</res-auth>
      <res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>

同样配置好后,需要重新启动服务器,让配置生效.

方法三:在Tomcat的conf/server.xml中配置虚拟目录时配置

在配置虚拟目录时,也就是在配置conf下面的server.xml时,在context标签内添加池配置.

在说该方法之前,先说一下,如何用tomcat配置虚拟目录

在tomcat\conf下server.xml中找到

<Host name="localhost"  appBase="webapPS"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
</Host>

在其中添加:

<Context path="/website" docBase="F:/myweb" reloadable="true"></Context>

注意:

docBase要改成你的项目目录。

path为虚拟路径,访问时的路径,注意:一定要加“/” debug建议设置为0

reloadable设置为true。

这样重新启动tomcat

实例中如下配置

<Context path="/website" docBase="D:/program files/Tomcat/apache-tomcat-6.0.33/webapps/iblog.war" reloadable="true">
</Context>

接下来添加池配置,如下

<!--配置虚拟目录-->

<Context path="/website" docBase="D:/program files/Tomcat/apache-tomcat-6.0.33/webapps/iblog.war" reloadable="true">
            <Resource name="jdbc/mysqlds"
            auth="Container"
            type="javax.sql.DataSource"
            username="root"
            password="root"
            maxIdle="30"
            maxWait="10000"
            maxActive="100"
            driverClassName="com.mysql.jdbc.Driver"
            url="jdbc:mysql://127.0.0.1:3306/db_blog"
            />
</Context>

启动服务器,测试,注意因为我们配置了path值为”/website”,所以访问的路径应该为website.如下图:

方法四:在Web项目中的META-INF目录下新建一个文件context.xml,写入配置

注意:是META-INF目录下,不是WEB-INF目录下

<?xml version=‘1.0‘ encoding=‘utf-8‘?>

<Context>
    <Resource name="jdbc/mysqlds"
        auth="Container"
        type="javax.sql.DataSource"
        username="root"
        password="root"
        maxIdle="30"
        maxWait="10000"
        maxActive="100"
        driverClassName="com.mysql.jdbc.Driver"
        url="jdbc:mysql://127.0.0.1:3306/db_blog"
        logAbandoned="true" />
</Context>
时间: 2024-10-14 09:12:27

将Web项目War包部署到Tomcat服务器基本步骤(完整版)的相关文章

将Web项目War包部署到Tomcat服务器基本步骤

参考来源: http://www.cnblogs.com/pannysp/archive/2012/03/07/2383364.html   1. 常识: 1.1 War包 War包一般是在进行Web开发时,通常是一个网站Project下的所有源码的集合,里面包含前台HTML/CSS/JS的代码,也包含Java的代码. 当开发人员在自己的开发机器上调试所有代码并通过后,为了交给测试人员测试和未来进行产品发布,都需要将开发人员的源码打包成War进行发布. War包可以放在Tomcat下的webap

java web项目war包部署,使用tomcat对指定接口设置身份认证

先简单说一下需求: 将一个基于springboot2.0开发的java web项目打成war包,通过tomcat部署到一台linux服务器上,项目相关的一些图片等资源也按照一定规则放置在服务器构建好的目录下.现在需要让用户通过http网页链接的方式(在浏览器端)访问图片,为了访问安全,需要在中间加一层用户认证.认证过程希望尽量简单些,所以就尝试用tomcat自带的身份认证来做. 话不多说,直接上实现流程: 首先,由于要访问本地的静态资源,所以在springboot启动类中加了一项静态资源的映射,

Web项目打成war包部署到tomcat时报MySQL Access denied for user &#39;root&#39;@&#39;localhost&#39; (using password: YES)错误解决方案

Web项目使用使用root账号root密码进行部署,通过Eclipse加载到Tomcat服务器可以发布成功,打成war包放到tomcat的webapps目录无法发布成功,报错: jdbc.properties涉及Mysql配置: 错误很明显,与MySQL密码有关,但是两种方式部署项目使用的jdbc.properties配置文件是一样的.所以肯定不是密码不对引起的,只好找度娘,O(∩_∩)O哈哈~. 网上大部分帖通过运行mysql -u root -p命令登录时也会报这个错误,所以,我就尝试这种方

SpringBoot之打成war包部署到Tomcat

正常情况下SpringBoot项目是以jar包的形式,正常情况下SpringBoot项目是以jar包的形式,并且SpringBoot是内嵌Tomcat服务器,所以每次重新启动都是用的新的Tomcat服务器.正因如此,也出现了一个问题:    上传到项目的文件,如果是保存在项目中的,那么重启过后文件就会丢失.比如我们上传了一个头像,重启项目后,这个头像就没了.而如果将文件保存在本地磁盘中的话,html中标签没办法获取(当然,企业项目中一般是有专门的图片服务器的).因此,我们才需要将SpringBo

(转)用 Maven 部署 war 包到远程 Tomcat 服务器

转自蒋国纲 www.cnblogs.com/guogangj/p/5505228.html 用Maven部署war包到远程Tomcat服务器 过去我们发布一个Java Web程序通常的做法就是把它打成一个war包,然后用SSH这样的工具把它上传到服务器,并放到相应的目录里,让Tomcat自动去解包,完成部署. 很显然,这样做不够方便,且我们在用SSH把文件拽上去的时候很可能会搞错.(当然了大厂就不会有这样的问题,因为人家有运维团队专门来干这个事情,哈哈) 现在我要的是:一行命令部署到本地服务器,

用Maven部署war包到远程Tomcat服务器

原文:http://www.cnblogs.com/guogangj/p/5457959.html#3574439 过去我们发布一个Java Web程序通常的做法就是把它打成一个war包,然后用SSH这样的工具把它上传到服务器,并放到相应的目录里,让Tomcat自动去解包,完成部署. 很显然,这样做不够方便,且我们在用SSH把文件拽上去的时候很可能会搞错.(当然了大厂就不会有这样的问题,因为人家有运维团队专门来干这个事情,哈哈) 现在我要的是:一行命令部署到本地服务器,在本地测试一番,没有问题的

Eclipse中的Web项目自己主动部署到Tomcat

一.原因. 1.写java程序有一段时间了,但非常久没用eclipse了.所以使用eclipse编写的web项目部署到tomcat 的方式也不是非常清楚,以下记录一下将Eclipse 上的web项目自己主动部署到tomcat 上的方式: 二.部署问题 1.这里就有个问题.是怎么把Eclipse中的站点项目自己主动部署到tomcat中. 在Eclipse中做的Web项目默认是不支持将项目公布到Webserver上的,会公布到工作空间的某个文件夹下,因此无法在外部启动Tomcat来执行Web项目,仅

eclipse项目转移至IDEA与IDEA tomcat报错(idea自带tomcat版本太高)与war包部署到win服务器与idea提交git的总结

eclipse导出项目到idea时,不要导出target: idea打开eclipse项目后,出现junit找不到的问题,原因是jar包缺失,而maven配置的低版本的junit也显示找不到,解决办法: <!-- https://mvnrepository.com/artifact/junit/junit --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifac

将web项目打成war包部署在tomcat步骤

1.将自己的项目打成war包. 2.将打包好的war复制到${tomcat.home}/webapps项目下. 3.在${tomcat.hom}/conf目录下打开server.xml文件,找到Host节点,在Host节点下添加: <Context docBase="D:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\Products.war" path="/Products" relo