Tomcat 服务器 部署项目 需要注意

一:基本配置文件

  1:基本目录结构

    bin--tomcat批处理文件的存放目录  通过bin/startup.bat启动tomcat , bin/shutdown.bat关闭tomcat
    conf--tomcat配置文件所在的目录, 其中server.xml是tomcat的核心配置文件,端口号(通过命令好看端口号 netstat -ano)
    lib--tomcat运行时所依赖的jar包存放的目录.
    logs--tomcat日志文件所在的目录
    temp--tomcat运行时产生的临时文件存放的目录
    webapps--是localhost虚拟主机管理的目录, 放在这个目录下的web应用可以通过浏览器访问localhost主机来访问
    work--tomcat运行时产生的工作文件存放目录. 是tomcat的工作目录

二:项目部署

  1:最简单直接的方式,将项目war包直接放在webapps下,启动Tomcat,会自动解压war包,此种方式其实就是默认的虚拟主机的管理目录是webapps

  2:在tomcat/conf/server.xml文件中<Engine>标签下<Host>标签内部添加一个<Context path="web应用的虚拟路径" docBase="web应用的真实路径"/>,这种配置方式每次都要重启服务器, 只要将path的值设置为空, 当前web应用就是缺省的web应用.

  3:虚拟主机在配置的时候可以指定一个默认管理的目录, 只需要将web应用放在这个默认管理的目录中既可 ,这种配置方式不需要重启服务器就可以起作用,如果虚拟路径想用多级路径表示, 可以在文件名中用#代替/,只要将web应用的文件夹的名称设置为ROOT, 当前web应用就是缺省的web应用  **可以通过修改web.xml为当前web应用配置主页!

三:配置虚拟主机 

  所谓的虚拟主机就是tomcat服务器中配置的一个站点,在访问时就好像访问一台真实的主机一样
  tomcat服务器中可以配置多个站点, 一个站点就是一台虚拟主机

  在[tomcat]/conf/server.xml文件中<Engine>标签内添加一个<Host>就可以配置一台虚拟主机.<Host name="虚拟主机的名字" appBase="虚拟主机的管理目录"> 其中name属性是必须存在的, appBase属性可以没有, 如果没有表示该虚拟主机不管理任何目录.

  配置后还需要到DNS服务器里做域名和IP地址的映射, 但DNS一般不能随便改动, 可以通过hosts文件来模拟DNS的功能, 完成实验(C:\Windows\System32\drivers\etc\hosts)[域名,地址]

  配置缺省虚拟主机:在server.xml中 配置缺省的虚拟主机。 在<Engine>标签上的defaultHost属性可以指定缺省虚拟主机. 当用户通过IP地址来访问无法确定访问哪个虚拟主机时, 将会访问缺省的虚拟主机.

四:配置数据源

  1:单个应用独享数据源   优点:简单 缺点:重用性差

    1)用第二种部署项目的时候,找到Tomcat的server.xml找到工程的Context节点,添加一个私有数据源

 <Context docBase="F:\Workspaces\IdeaProjects\payment\target\payment" path="/payment" reloadable="true" source="org.eclipse.jst.j2ee.server:payment">
  <Resource    name="jdbc/mysql"   scope="Shareable"   type="javax.sql.DataSource"   factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"   url="jdbc:mysql://localhost:3306/test"   driverClassName ="com.mysql.jdbc.Driver"   username="root"    password="root"    />
</Context>

 

  2:配置全局JNDI数据源,应用到单个应用  优点:重用性,可控性 缺点:配置相对繁琐一点,每个工程都得配

    1)找到Tomcat的server.xml中GlobalNamingResources节点,在节点下加一个全局数据源

 <GlobalNamingResources>
  <!--Tomcat中默认配置的--> <!-- Editable user database that can also be used by UserDatabaseRealm to authenticate users --> <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" /> <Resource name="jdbc/mysql" scope="Shareable" type="javax.sql.DataSource" factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory" url="jdbc:mysql://localhost:3306/test" driverClassName ="com.mysql.jdbc.Driver" username="root" password="root" /> </GlobalNamingResources>

    2)找到部署工程的 context节点,引入全局数据源

<Context"F:\Workspaces\IdeaProjects\payment\target\payment" path="/payment">
  <ResourceLink global="jdbc/mysql" name="jdbc/mysql" type="javax.sql.DataSource" />
</Context>

 

 

  3:配置全局JNDI数据源,应用到所有Tomcat下部署的应用  优点:重用性,一次性到位 缺点:没有可控性

    1)同方法二的第一步,

    2)找到Tomcat的context.xml,在Context节点下加一个ResourceLink节点对第一步配置的数据源进行引用

1 <Context>  
2     <ResourceLink global="jdbc/mysql" name="jdbc/mysql" type="javax.sql.DataSource" />  
3    <WatchedResource>WEB-INF/web.xml</WatchedResource>  
4 <Context>
View Code

   注意:

 

  如果现在假设是oracle 数据库的话,则直接换启动程序即可

  但是如果使用的tomcat 版本是6.0 ,想让一个数据源起作用的话,还必须在web.xml 文件之中完成配置

 <resource-ref>
    <res-ref-name>jdbc/mydata</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
   <res-auth>Container</res-auth>
</resource-ref>

 

    查找数据源

     数据源的操作使用的是JNDI 方式进行查找的,所以如果要想使用数据源取得数据库连接的话,则必须按照如下的步骤进行

  

 初始化名称查找上下文: Context ctx = new IntialContext();

   通过名称查找DataSource 对象: DataSource ds = (DataSource)ctx.lookup(JNDI名称)

   通过DataSource 取得一个数据库连接; Connection conn = ds.getConnection();

<HTML>  
 <HEAD>  
  <TITLE> New Document </TITLE>  
 <BODY>  
<%  
    String DSNAME = "jdbc/mydata";   //名称  
    Context ctx = new InitialContext();  
    DataSource ds = (DataSource) ctx.lookup(DSNAME);  
    Connection conn = ds.getConnection();  //从连接池中取连接  
%>  
<%=conn%>  
<%  
    conn.close();  //表示将连接放回到池子中  
%>  
 </BODY>  
</HTML> 

  对于这种资源的操作,本身是需要一个环境属性的支持的: java:comp/env, 但是Tomcat 服务器本身是免费,那么没有对这种属性提供支持,所以如果要想访问Tomcat中的名称服务的话,则要在前面加上此属性,即,现在的名称是:java:comp/env/jdbc/mydata

  以后程序中只认名字,而具体是哪个数据将由配置决定

//数据源的连接类
public
class DatabaseConnection { private static final String DSNAME = "java:comp/env/jdbc/mydat"; private Connection conn; public DatabaseConnection() throws Exception{ Context ctx = new InitialContext(); DataSource ds = (DataSource) ctx.lookup(DSNAME); this.conn = ds.getConnection(); } public Connection getConnection() { return this.conn; } public void close () throws Exception { if(this.conn != null) { try { this.conn.close(); } catch (Exception e) { throw e; } } }

    得到数据库连接池是在Tomcat 上配置的,所以此程序在WEB下运行,而不能使用Application 程序运行

 

转载于:https://www.cnblogs.com/yguangt/p/8318351.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值