`
voff12
  • 浏览: 97118 次
  • 来自: 北京
社区版块
存档分类
最新评论

在tomcat下用hibernate的尝试

阅读更多
用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服务器接口
分享到:
评论
6 楼 snowspice 2008-04-03  
[i][/i][b][/b][img][/img]
引用
  • [i][/i][/b][b][/b][b]
[url][/url][flash=200,200][/flash]
      
5 楼 voff12 2007-01-14  
http://www.x2blog.cn/ljj3336/
讲解得不错。有时间一定要好好调试一下。
4 楼 voff12 2007-01-14  
hibernate用tomcat的ds需要额外的配置,因为tomcat的ds是用的jakarta的dbcp套壳的。你为啥不用jboss呢?
3 楼 voff12 2007-01-14  
hibernate 有通过jdbc driver 和jndi 两个种方式连接数据库我只不过是使用jndi连接数据库遇到问题
2 楼 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应用访问
1 楼 voff12 2007-01-14  
Tomcat严格意义上并不是一个真正的App Server,它只是一个可以支持运行Serlvet/JSP的Web容器,不过Tomcat也扩展了一些App Server的功能,如JNDI,数据库连接池,用户事务处理等等。

相关推荐

    启动tomcat报错org.hibernate.cache.CacheProvider

    标题中的“启动tomcat报错org.hibernate.cache.CacheProvider”指的是在尝试启动Apache Tomcat服务器时遇到了与Hibernate缓存提供者相关的错误。这通常涉及到Hibernate框架的配置或运行时环境问题。Hibernate是一个...

    tomcat报错Service Temporarily Unavailable tomcat解决方式

    在 Tomcat 的 conf 目录下,我们需要建立 workers.properties 文件,并在文件中添加相应的配置参数。 三、APACHE 错误日志分析 在 APACHE 的错误日志文件中,我们可以看到一些错误信息,例如: * [warn] (OS 64) ...

    apache-tomcat-9.0.44.tar.gz

    在实际应用中,Tomcat经常与Spring Boot、Hibernate等框架结合使用,构建高效的企业级Web应用。同时,由于其轻量级和易于管理的特性,Tomcat也常作为开发和测试环境的选择。不过,对于大型高并发的生产环境,可能...

    tomcat启动的错误

    4. **测试连接**:在Tomcat完全启动后,尝试使用管理工具或编程方式连接数据库,验证连接是否成功。 通过以上步骤,可以有效地解决Tomcat启动时出现的与MySQL JDBC驱动相关的错误。此外,在进行SSH框架整合时,还...

    Tomcat6连接池配置详解(自动重连)

    对于使用Hibernate框架的应用,需要在项目的hibernate配置文件中进行相应的配置调整,确保能够正确地从JNDI环境中查找数据源。具体配置方法依赖于所使用的Hibernate版本及应用的具体需求。 #### 六、修改`web.xml`...

    Struts2+hibernate3

    在开发Java Web应用程序时,`Struts2`和`Hibernate3`经常被组合使用,以构建数据驱动的交互式Web应用。`Struts2`是一个强大的MVC框架,负责处理用户请求并展示结果,而`Hibernate3`则作为对象关系映射(ORM)工具,...

    Java常见异常集-Java,Hibernate,Tomcat异常

    在Java编程中,异常处理是不可或缺的一部分,尤其是在开发复杂的企业级应用时,如使用Hibernate进行对象关系映射和Tomcat作为应用服务器。本篇将详细解释一些常见的Java、Hibernate以及与Tomcat相关的异常,帮助...

    Struts Spring Hibernate整合实践.doc

    此外,对于Hibernate的使用,推荐安装Hibernate Synchronizer Eclipse Plugin,它可以帮助开发者更便捷地同步Hibernate实体类和数据库表。 在Eclipse中创建一个新的Dynamic Web Project,命名为TestSSH,并指定为...

    HibernateDao 通用

    开发环境配置包括使用JDK 1.6作为Java运行环境,Tomcat作为应用服务器,Mysql作为数据库。项目使用Maven进行自动构建,通过Subversion进行版本控制,使用Trac进行项目管理。所有这些工具的下载地址和配置信息都在...

    seam+hibernate注册例子

    在这个"seam+hibernate注册例子"中,我们将探讨如何在Eclipse 3.4环境下,结合Tomcat 6.0服务器,搭建一个使用Seam和Hibernate的注册系统。 首先,确保你已经安装了Eclipse IDE和Tomcat 6.0服务器。Eclipse 3.4版本...

    采用p6spy完整显示hibernate的SQL语句

    在开发和调试基于Hibernate的Java应用时,有时我们需要获取到SQL语句的完整形式,而不仅仅是Hibernate默认输出的参数化形式。在这种情况下,P6Spy是一个非常有用的工具。P6Spy是一个开源的JDBC代理库,它允许我们...

    java.lang.NoClassDefFoundError: Lorg/hibernate/cache/CacheProvider

    在Java编程中,`java.lang.NoClassDefFoundError` 是一个常见的运行时异常,它发生在类加载器尝试加载一个在编译时存在但在运行时找不到的类定义时。这个错误通常意味着类路径设置不正确或者依赖项没有正确地被包含...

    Eclipse搭建SSH(Struts2+Spring3+Hibernate3)框架项目教程

    教程中,作者尝试使用Hibernate 4.0.0版本遇到了问题,最终选择了Hibernate 3.6.10.Final版本。这一部分会让开发者学会如何配置Hibernate,包括Session管理、配置Hibernate的SessionFactory以及如何通过...

    Windows 下整合 weblogic10 jsf1.2 hibernate3

    本标题主要涉及的是在 Windows 操作系统环境下如何整合 WebLogic 10、JSF 1.2 和 Hibernate 3 这三个技术组件。这种整合常见于企业级 Java 应用服务器的开发环境中,特别是那些基于 Java EE 标准的应用。 - **...

    hibernate 排错 宝典1

    在IT领域,尤其是在Java开发与Hibernate框架的使用中,遇到各种各样的错误是家常便饭。本文将根据提供的文件信息,深入解析几个常见的Hibernate错误及其解决方案,旨在为开发者提供一份排错宝典,帮助他们迅速定位并...

    Tomcat6配置连接池

    在配置过程中,需要注意的是,Eclipse中的Tomcat服务器配置可能不会立即反映对`server.xml`的更改,因此如果遇到连接问题,尝试删除并重新创建服务器实例。此外,配置参数如`maxActive`、`maxIdle`等应根据实际应用...

    struts-hibernate-nested-demo学习实例

    "nested"可能指的是在Struts中处理嵌套表单或对象的情况,这种情况下,一个表单可能会包含多个子表单或者对象,需要在ActionForm中进行处理。在Hibernate中,这可能涉及到一对多或多对多的关系映射,比如一个用户...

    Spring-Struts2-Hibernate登录打印日志

    关于“登录完成日志文件在web下本人用的是tomcat”,这意味着日志信息被记录在服务器的Tomcat日志目录下。Tomcat是流行的Java应用服务器,它默认会记录应用的请求和错误信息。开发者可以通过配置`logging.properties...

    struts2+hibernate3.3+spring3.0配置

    - **解决数据库映射问题**:在使用Hibernate进行数据库映射时,确保正确设置了数据库连接参数,并检查数据库驱动是否正确安装。 **3. Spring配置** - **添加Spring库**:手动添加Spring的相关JAR包至项目的lib目录...

Global site tag (gtag.js) - Google Analytics