使用hibernate和c3p0和mysql在Tomcat 7.x下运行的Java Servlet的最佳实践

时间:2015-07-01 16:17:56

标签: mysql hibernate tomcat servlets c3p0

有人可以总结一下我的方法,对于我在Tomcat下运行的JAVA servlet吗?这个特定的Servlet没有框架,但是使用服务器/客户端服务,我已经为客户端用户请求编写了支持后端类和方法。在那些后端自定义类中,我使用Hibernate(希望使用c3p0连接池管理),并且Hibernate连接到常驻MySql服务器。

     现在,似乎我已经通过在Servlet的lib目录下推送Hibernate JAR和C3P0 JAR以及JDBC JAR来强制一切工作,但我想知道我是否真的做了正确的事情?我在Tomcat日志中看到它看到Hibernate允许C3P0产生一个线程(这就是它的作用),它警告我,如果它需要它可能不会杀死它并且它可能是内存泄漏。所以,虽然我认为C3P0肯定在运行,因为我已经配置了Hibernate,并且它已经找到了对C3P0类的引用,我可以做一些不那么优化的东西吗?

     我的Tomcat实例仅用于我提到的servlet,我应该在Tomcat库级别安装Hibernate,C3P0和Mysql JDBC资源吗?如果是这样,我需要做什么才能使用新设置?在Tomcat中配置文件? Servlet的后端用户定义的JAVA类需要做什么才能在servlet的父级(Tomcat)上使用这些资源?

每个工具都有自己的文档,我已经找到了如何为每个工具设置的简单例子,但没有告诉我这个场景的最佳选择。

非常感谢您的倾听/阅读,并希望能帮助我完成这项工作。

这个论坛非常棒,我依靠参与者的知识使自己每天都有用。

卡尔

1 个答案:

答案 0 :(得分:0)

首先,有很多关于这些问题的博客文章。据我所知,我试着总结一下。其中一些可能是也可能不是最佳实践。

Servlet是java web开发的基础技术。如果您没有开发框架,我不建议使用它。是的,它是出于这个目的,但在开发servlet时很难将业务逻辑和您的视图分开。当事情变得复杂时,servlet变得更难维护。您应该尝试在servlet体系结构之上开发的其他框架。如果您指定开发servlet应用程序的初始目的,我可以提供帮助。

Tomcat作为servlet容器,处理所有连接并将请求传递给相应的servlet。您的应用程序(.WAR文件)将在servlet容器之上运行。此外,servlet容器必须遵循一些规则和规范。因此,如果使用servlet开发应用程序,则可以运行它所需的servlet容器。 Tomcat还可以管理您的资源,例如JDBC连接。您可以使用JNDI访问这些资源。

但是如果您想自己管理资源,则无需将依赖项添加到tomcat / lib文件夹。您可以将依赖项保存在WEB-INF / lib文件夹下。

有关于开发Web应用程序的模式。你必须检查什么是MVC。将应用程序分成不同的层是一种很好的做法。每一层都必须负责单件事。这是一个例子,假设您想要开发一个从hibernate读取数据的Web应用程序。您的第一层必须负责从数据库中获取数据。该层通常称为DAO层。在该层之上,您可以放置​​有时称为服务层的业务逻辑。最后你的观点,在这种情况下你的servlet。您可以找到an example DAO layer here

起初,将所有框架粘合起来似乎有点困难,但相信我并不是那么难。而且你总是可以用Spring来粘合它们。

关于线程,没有源代码,很难识别问题。