分享
 
 
 

weblogic中将SessionFactory配置为JNDI

王朝other·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

为了更方便的在编写程序的过程中运用hibernate并且在多个应用程序中共享SessionFactory,将生成的SessionFactory配置为jndi并且在服务器启动的时候将其配置为自动运行是个不错的方法,这样在程序中就可以通过“查找”的方式直接获取factory的引用,步骤如下:

1. 如果单单是为了将SessionFactory配置为JNDI,方法很简单,只要在hibernate.cfg.xml文件中配置一下要绑定到jndi的名字即可,格式如下:

<hibernate-configuration

<session-factory name="hibernate.session_factory"

<property name="connection.datasource"jdbc.name</property

……………………

/session-factory

</hibernate-configuration

其中name="hibernate.session_factory"指定要绑定的JNDI名字为hibernate/session_factory,这样在hibernate初始化SessionFactory的时候就会将其绑定在jndi服务上,之后我们就可以在程序中通过JNDI查找来获取SessionFactory的引用,如:

Context context=new InitialContext();

SessionFactory sf = (SessionFactory)context.lookup("hibernate/session_factory");

2. 上述中通过JNDI查找SessionFactory的引用的前提是在查找之前必须已经绑定,也就是hibernate已经初始化过SessionFactory,为了保证此条件,比较好的方法就是在服务器启动的时候自动运行初始化SessionFactory的代码并将其绑定至JNDI,可以通过以下两种方式实现服务器启动的时候自动运行代码:

? 对于weblogic来说,我们可以通过weblogic.common.T3StartupDef接口来实现一个StartUp类,然后在weblogic控制台中将其配置为自动运行,步骤如下:

1) 编写StartUp类:

package com.starup

public class HibernateInitStartUp implements

weblogic.common.T3StartupDef{

public void setServices(T3ServicesDef t3ServicesDef) {

}

public String startup(String string, Hashtable hashtable) throws Exception {

Configuration conf = new Configuration().configure();

SessionFactory sf = conf.buildSessionFactory();

return "SessionFactory init complete and bound to JNDI successful";

}

}

2) 编译该类

3) 修改startWebLogic.cmd文件,将上述类中用到的类文件和hibernate关联的包增加到其启动时的classpath环境变量中,格式如下:

set HIBERNATE_LIB=D:\work \WebRoot\WEB-INF\lib

set HIBERNATE_CLASSES=D:\work \WebRoot\WEB-INF\classes

在set CLASSPATH 之后加入:

%HIBERNATE_LIB%\cglib-full-2.0.2.jar;%HIBERNATE_LIB%\commons-beanutils.jar;%HIBERNATE_LIB%\commons-collections.jar;%HIBERNATE_LIB%\commons-lang.jar;%HIBERNATE_LIB%\commons-logging.jar;%HIBERNATE_LIB%\dom4j-1.4.jar;%HIBERNATE_LIB%\hibernate2.jar;%HIBERNATE_LIB%\jcs.jar;%HIBERNATE_LIB%\odmg.jar;%HIBERNATE_CLASSES%

在加入以上文件的时候要根据hibernate的版本而定,例如我用的是2.0,如果其他的版本上述的文件名可能有些不同,此时一定要检查好

4) 打开weblogic控制台,在左侧的树中点击StartUp & Shutdown,然后在右边的主页面中点击“Configure a new Startup Class...”配置一个自动运行类,在Name框里面随便填写,在ClassName里面填写你编写的StartUp类:com.starup. HibernateInitStartUp,然后点击apply,在接下来的Target选项中选择myserver(根据你的情况而定),点击apply按钮。

5) 重新启动weblogic,可以看到hibernate初始化的一些信息和提示将SessionFactory绑定至JNDI的提示信息

6) 在weblogic控制台中的jndi树中可以看到绑定的情况(点击mydomain―server―myserver,然后点击右边页面最下方的“View JNDI tree”就可以看到其信息)

? 通过实现ServletContextListener接口在系统初始化一个应用程序的时候自动运行,步骤如下:

1) 编写类,实现ServletContextListener接口,如下:

package com.starup;

import net.sf.hibernate.SessionFactory;

import net.sf.hibernate.cfg.Configuration;

import javax.servlet.ServletContextEvent;

import javax.servlet.ServletContextListener;

public class HibernateInitStartUp implements ServletContextListener {

public void contextDestroyed(ServletContextEvent servletContextEvent) {

}

public void contextInitialized(ServletContextEvent servletContextEvent) {

try {

Configuration conf = new Configuration().configure();

SessionFactory sf = conf.buildSessionFactory();

} catch (Exception e) {

e.printStackTrace();

}

}

}

2) 在对应应用程序的web.xml文件中加入:

<listener

<listener-class com.starup. HibernateInitStartUp </listener-class

</listener

3) 启动wls,系统会在初始化对应应用程序的时候自动运行。

此方法不用配置weblogic的启动环境变量,因为当初始化应用程序的时候,对应的类和包已经加载到环境变量中。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有