在Weblogic上配置Hibernate为JNDI

一、首先需要把Hibernate 用到的jar包和配置文件都放到Weblogic能够搜索到的CLASSPATH路径上。单单这一步就有很多人很迷茫,其实去仔细看看Weblogic的启动脚本文件startWeblogic.cmd和startWLS.cmd,我想大部分人都知道该怎么配置了。

我机器上的有个Hibernate的项目,在D:\test\oracle目录下,该目录下的结构是:

java代码:

D:\test\oracle\lib 放置hibernate的所有jar包
D:\test\oracle\src 放置源代码
D:\test\oracle\classes 编译好的代码和hibernate的配置文件(hibernate.properties, log4j.properties, cache.ccf)

现在需要把D:\test\oracle\lib目录下那些jar文件和D:\test\oracle\classes目录都放置到Weblogic的 CLASSPATH里面去,所以修改mydomain里面的Weblogic启动脚本startWeblogic.cmd,在启动Weblogic之前,插入设置CLASSPATH的命令,如下:

java代码:

@rem set hibernate classpath
set HIBERNATE_LIB=D:\test\oracle\lib
set HIBERNATE_CLASSES=D:\test\oracle\classes
set CLASSPATH=%HIBERNATE_LIB%\cglib-asm.jar;%HIBERNATE_LIB%\commons-beanutils.jar;%HIBERNATE_LIB%\commons-collections.jar;%HIBERNATE_LIB%\commons-lang.jar;%HIBERNATE_LIB%\commons-logging.jar;%HIBERNATE_LIB%\dom4j-full.jar;%HIBERNATE_LIB%\hibernate2.jar;%HIBERNATE_LIB%\jcs.jar;%HIBERNATE_LIB%\log4j-1.2.8.jar;%HIBERNATE_LIB%\odmg.jar;%HIBERNATE_CLASSES%;%CLASSPATH%

下面一行,就是本来脚本里面的启动命令:

java代码:

@rem Call Weblogic Server
call "C:\bea\weblogic700\server\bin\startWLS.cmd"

二、在Weblogic上配置 Oracle数据库的连接池。这一步本来和Hibernate无关,但是如果你想要使用EJB,想要使用JTA,那么必须使用Weblogic提供的连接池,而不能使用Hibernate自带的连接池,或者其它第三方连接池,否则容器将无法管理数据库事务。这一步很简单,就是在Weblogic Console里面配置Connection Pool和TxData Source,我的Tx DataSource取名称为“mypool”

三、修改hibernate.properties。使用Weblogic的连接池,而不是自带的连接池。我修改的是D:\test\oracle\classes\hibernate.properties,增加如下行:

java代码:

hibernate.dialect net.sf.hibernate.dialect.OracleDialect
hibernate.connection.datasource mypool
hibernate.connection.provider_class net.sf.hibernate.connection.DatasourceConnectionProvider
hibernate.session_factory_name hibernate.session_factory

注意最后一行,这是使用 Hibernate来绑定JNDI给JNDI起的名称,本来应该是hibernate/session_factory,但是Weblogic要求改为. 号,不过在程序中lookup的时候还是要写hibernate/session_factory

另外提到一点的是:

java代码:

hibernate.jdbc.fetch_size 50
hibernate.jdbc.batch_size 25

分别对数据库查询和插入有很大的性能影响,调节这两个选项可以得到最好的性能。

为了保证SessionFactory实例的预创建,使用Weblogic的T3StartUpDef接口创建一个StartUp类,在Weblogic启动的时候运行:

java代码:

package com.fankai;

import java.util.Hashtable;
import weblogic.common.T3StartupDef;
import weblogic.common.T3ServicesDef;
import net.sf.hibernate.cfg.Configuration;
import net.sf.hibernate.SessionFactory;

public class HibernateStartUp implements T3StartupDef {

public void setServices(T3ServicesDef services) {}

public String startup(String name, Hashtable args) throws Exception {
Configuration conf = new Configuration().addClass(Cat.class);
SessionFactory sf = conf.buildSessionFactory();
return "Hibernate Startup completed successfully";
}
}

代码非常简单,其实就是确保预先运行

java代码:

Configuration conf = new Configuration().addClass(Cat.class);
SessionFactory sf = conf.buildSessionFactory();

把sf创建出来,而Hibernate会自行调用一系列类方法,把sf绑定到Weblogic的的JNDI树下的hibernate/session_factory路径中。

4、编译HibernateStartUp.java

编译这个源代码的时候需要注意的是,要把weblogic.jar包和Hibernate所有的相关包和配置文件导入。我是把这个源代码放到D:\test\oracle\src目录下的,用早已编写好的ant脚本运行一下就编译好了,并且编译好的 class文件被放置到D:\test\oracle\classes目录下,该目录已经被加入到Weblogic的CLASSPATH里面,因此很省事。

时间: 2024-11-01 20:03:22

在Weblogic上配置Hibernate为JNDI的相关文章

Weblogic上配置Hibernate为JNDI

HibernateWebLogicJNDI 一.首先需要把Hibernate 用到的jar包和配置文件都放到Weblogic能够搜索到的CLASSPATH路径上.单单这一步就有很多人很迷茫,其实去仔细看看Weblogic的启动脚本文件startWeblogic.cmd和startWLS.cmd,我想大部分人都知道该怎么配置了. 我机器上的有个Hibernate的项目,在D: estoracle目录下,该目录下的结构是: D: estoraclelib 放置hibernate的所有jar包 D:

Weblogic上配置Hibernate为JNDI_JSP编程

一.首先需要把Hibernate 用到的jar包和配置文件都放到Weblogic能够搜索到的CLASSPATH路径上.单单这一步就有很多人很迷茫,其实去仔细看看Weblogic的启动脚本文件startWeblogic.cmd和startWLS.cmd,我想大部分人都知道该怎么配置了. 我机器上的有个Hibernate的项目,在D: estoracle目录下,该目录下的结构是: D: estoraclelib 放置hibernate的所有jar包 D: estoraclesrc 放置源代码 D:

在Weblogic 8.1上配置Hibernate 3.0

下面是在WebLogic 8.1上配置Hibernate的具体步骤: ◆首先要创建一个域.我创建了一个WebLogic Workshop(WLW)域,因为我打算使用WLW来创建和实现应用程序. ◆将hibernate...\lib\antlr-2.7.5H3.jar添加到PRE_CLASSPATH,或者在hibernate.cfg.xml文件中将query.factory_class属性设为user 2.x's query factory. ◆WLW域还启动了一个PointBase数据库实例.我

c3p0+spring+hibernate在weblogic上部署,启动抛找不到类错,求大神指教

问题描述 c3p0+spring+hibernate在weblogic上部署,启动抛找不到类错,求大神指教 求大神指教,错误详细信息如下: Exception in thread "Timer-2" java.lang.NoClassDefFoundError: com/mchange/v2/util/ResourceClosedException at com.mchange.v2.resourcepool.BasicResourcePool$CheckIdleResourcesTa

编程-在weblogic上部署JAVA WEB项目,为什么关闭之后最小的连接数不会自动关闭

问题描述 在weblogic上部署JAVA WEB项目,为什么关闭之后最小的连接数不会自动关闭 在项目中设置的最小连接数是2 初始连接数是5,当我开启这个项目的时候发现连接池中的连接数加了5个,因为我设置了maxIdleTime属性,过了一会有3个连接数因为空闲会被关闭,但是那2个最小的连接数一直不会关闭,就算在服务器上把这个应用停止了也不会关闭,这要怎么处理呢? 项目是spring+strtuts2+hibernate 连接池用的是c3p0 解决方案 出于性能的考虑,底层连接池会保持连接,这是

Hibernate的JNDI绑定分析

Hibernate的JNDI名称绑定是在net.sf.hibernate.impl.SessionFactoryObjectFactory程序里面实现的,我来分析一下Hibernate的绑定JNDI的过程: 我们获得SessionFactory一般是这样写代码: Configuration conf = new Configuration().addClass(Cat.class); SessionFactory sf = conf.buildSessionFactory(); 首先是new C

Hibernate的JNDI绑定分析_JSP编程

Hibernate的JNDI名称绑定是在net.sf.hibernate.impl.SessionFactoryObjectFactory程序里面实现的,我来分析一下Hibernate的绑定JNDI的过程: 我们获得SessionFactory一般是这样写代码: Configuration conf = new Configuration().addClass(Cat.class); SessionFactory sf = conf.buildSessionFactory(); 首先是new C

服务器-项目导出成war包放在linux的weblogic上可以跑,在windows下跑不了

问题描述 项目导出成war包放在linux的weblogic上可以跑,在windows下跑不了 公司的一个老旧项目,在笔记本下win7 tomcat 可以随便跑:在笔记本用weblogic跑不动,当时以为是电脑配置太差了.于是放到了组里的linux上的weblogic跑.挺快的. 现在公司要求放到windows server 2008的服务器上的weblogic,可是和在笔记本上用weblogic同样:登录了之后加载不出页面,过了很久很久显示500超时错误.求各位大神遇到过此问题的告诉下解决方法

关于webService部署在weblogic上运行报错问题?高分求教!

问题描述 最近将一个Tomcat的项目移植到weblogic上运行,发现以前使用的基于JAX-WS框架创建的webService无法运行,我查了很多资料说是内库加载问题,于是我就在项目的WEB-INFO下加入了个weblogic.xml文件.配置如下:<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEweblogic-web-appPUBLIC"-//BEASystems,Inc.//DTDWebA