用Test.java类成功测试了hibernate的使有。但在tomcat下却失败了。看来这个入门还挺复杂的。
引用

JNDI的原理我原来也比较糊涂,后来是把Sun网站的JNDI的指南下载下来,一点点啃完以后就搞清楚了。JNDI通俗来说就是一个命名和查找资源的机制,把App Server中的所有资源对象进行统一的编号,并且把这些编号放在一个树装结构中,这样你要找什么资源,就按照编号去找这颗树就行了,就可以在相应的位置找到这个编号对应的“对象”(其实就是映射)。就好像我们每个人作为一个实体,都有一个姓名来映射。而每个App Server中的资源(这些资源包括数据库连接池对象,EJB对象等等)都有一个JNDI名字来映射。而所有的这些JNDI名字和他们对应的这些对象就统称Context。而这种映射和查找机制就叫做JNDI(Java Naming and Directory Interface)。


tomcat的运行原理;
Tomcat是一个带有jsp环境的servlet容器.servlet容器是一个根据用户的行为可以管理和激活servlet的运行时的shell. 
  
  粗略地可以将servlet容器分为如下几类: 
  
  独立的servlet容器 
  
  内置有web服务器的一部分.指当使用基于Java的web服务器的情形,例如servlet容器是JavaWebServer的一个部分. 独立的servlet容器是Tomcat的默认模式. 
  
  大多数的web服务器并非基于Java,因此,我们可以得出如下两种容器的模式. 
  
  进程内的servlet容器 
  
  servlet容器作为web服务器的插件和Java容器的实现.Web服务器插件在内部地址空间打开一个JVM(java virtual machine)使Java容器得以在内部运行.如有某个需要调用servlet的请求,,插件将取得对此请求的控制并将他传递(使用JNI)给Java容器.进程内容器对于多线程,单进程的服务器非常合适并且提供很好的运行速度,但伸缩性有所不足. 
  
  进程外的servlet容器 
  
  servlet容器运行于web服务器之外的地址空间且作为web服务器的插件和Java容器的实现的结合.web服务器插件和Java容器 JVM使用IPC机制(通常是TCP/IP)进行通讯.当一个调用servlet的请求到达时,插件将取得对此请求的控制并将其传递(使用IPC等)给Java容器,进程外容器的反应时间或进程外容器引擎不如进程内容器,但进程外容器引擎在许多其他可比的范围内更好(伸缩性,稳定性等). 
  
  Tomcat既可作为独立的容器(主要是用于开发与调试)又可作为对现有服务器的附加(当前支持Apache,IIS和Netscape服务器).即任何时候配置Tomcat你都必须决定如何应用他,如选择第二或第三种模式,你还需要安装一个web服务器接口
评论
snowspice 2008-04-03
[/i][/b][img][/img]
引用
  • [i][b][/b][b][b][/b]
[url][/url][flash=200,200][/flash]
voff12 2007-01-14
http://www.x2blog.cn/ljj3336/
讲解得不错。有时间一定要好好调试一下。
voff12 2007-01-14
hibernate用tomcat的ds需要额外的配置,因为tomcat的ds是用的jakarta的dbcp套壳的。你为啥不用jboss呢?
voff12 2007-01-14
hibernate 有通过jdbc driver 和jndi 两个种方式连接数据库我只不过是使用jndi连接数据库遇到问题
voff12 2007-01-14
tomcat服务器是一种Servlet/jsp容器,更实质性的说是Servlet容器,因为jsp最终还是被编译成servlet来执行的。而对于servlet来说,其最长见的用途是扩展java web服务器功能,为来自web客户的请求提供服务。它完全运行在java虚拟机上。由于它的运行在服务器端,因此他的运行不依赖于浏览器。

tomcat作为servlet容器,负责处理客户请求,把请求传给servlet并把结果返回给客户。servlet容器与servlet之间的接口是由java servlet api定义的,在此api中定义了servlet的各种方法,这些方法在servlet生命周期的不容阶段被servlet容器调用,servlet api还定义了servlet容器传递给servlet的对象类,如请求对象ServletRequest和相应对象ServletResponse

tomcat服务器是由一系列可配置的组件构成,其中核心组件是Catalina Servlet容器,它是所有其他tomcat组件的顶层容器。tomcat的组件可以在conf/server.xml文件当中进行配置,每个tomcat组件在server.xml文件中进行配置,每个tomcat组件在server.xml文件中对应一种配置元素。具体见下:
<server>
<service>

<Connector>
</Connector>

<Engine>
<Host>
<Context></Context>
</Host>
</Engine>

</service>
</server>

1.顶层类元素:
<Server>和<Service>,他们位于整个配置文件的顶层
<Server>元素代表整个Catalina Servlet容器,它是tomcat实例的顶层元素。<Server>元素当中可包含一个或多个<service>元素。
<service>元素中包含一个<Engine>元素,以及一个或多个<Connector>元素,这些<Connector>元素共享同一个<Engine>元素

2.连接器类元素:
connector,它代表了介于客户与服务器之间的通信接口,负责将客户的请求发送给服务器,并将服务器的相应结果传递给客户。
3.容器类元素
<Engine>,<Host>和<context〉
其中<Engine>组件处理在同一个<service>中所有<Connector>元素接受到的客户请求
<Host>组件为特定的虚拟机处理所有客户请求。每个<Host>元素定义了一个虚拟主机,它可以包含一个或多个web应用。
<context>组件为特定的web应用处理所有客户请求。它是使用最频繁的元素。每个<Context>元素代表了运行在虚拟机上的单个web应用,一个<Host>元素中可以包含多个<context>元素
说到<context>元素,java web应用的主要特征之一就是它与Context的关系,每个web应用有唯一的Context。当java web应用运行时,Servlet容器为每个web应用创建唯一的ServletContext对象,它被整个web应用中所有的组件共享。
如下代码:
<Context path="/reglog" docBase="reglog" debug="0"
crosscontext="true" reloadable="true">
</Context>
你可以自己在server.xml当中定义一个context元素,设定你所存在项目的参数及属性。其中path指定访问web应用的url入口
docBase指定web应用的文件路径,可以给定绝对路径,也可以给定向对于host的appBase属性的相对路径
reloadable,如果这个属性设为true,tomcat服务器在运行状态下会监视在WEB-INF/classes和WEB-INF/lib目录下class文件的改动,如果监测到有class文件被更新,服务器会自动重新加载web应用。

另外说一下tomcat的运行脚本
如果仔细研究一下tomcat的启动和关闭脚本,会发现startup.bat和shutdown.bat都执行同一个目录下的catalina.bat脚本。其实质是这样的:执行startup.bat脚本,相当于执行了catalina start命令,执行shutdown.bat相当于执行了catalina stop命令。

common\lib,server\lib,shared\lib这三个目录相信大家都见过吧,但具体是干什么用的呢?
其中server\lib下的jar文件只能被tomcat服务器访问。
shared\lib下的jar文件可以被所有的web应用访问,但不能被tomcat服务器访问。
common\lib目录下的jar文件可以被tomcat服务器和所有的web应用访问
voff12 2007-01-14
Tomcat严格意义上并不是一个真正的App Server,它只是一个可以支持运行Serlvet/JSP的Web容器,不过Tomcat也扩展了一些App Server的功能,如JNDI,数据库连接池,用户事务处理等等。
发表评论

您还没有登录,请登录后发表评论

voff12
搜索本博客
我的相册
E40c72b1-2573-4abd-87b9-95db0c4a53e0-thumb
podcast2
共 2 张
最近加入圈子
存档
最新评论