<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    鷹翔宇空

    學習和生活

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      110 Posts :: 141 Stories :: 315 Comments :: 1 Trackbacks

    現在網上流傳的關于Weblogic上配置Hibernate為JNDI的方法多是robbin寫的
    http://forum.javaeye.com/viewtopic.php?t=245。google了好久,發現都大同小異,幾乎都是一個模版,沒辦法,天下文章本就是一大抄,今天你抄我,明天我抄你。我是一個很懶的人,一看到那么復雜的配置(主要是Weblogic啟動腳本的修改),頭就大了,也沒有試下去的勇氣了,以前倒好說,畢竟沒有用到容器托管,如今用到了,自然也不能置之不理。就找點資料,自己測試,發現可以通過實現ServletContextListener接口來加載配置文件,從而達到自己的需求。以下是源代碼和配置文件:

    hibernate.cfg.xml如下(我沒有使用資源文件):

    <?xml version='1.0' encoding='utf-8'?>
    <!DOCTYPE hibernate-configuration PUBLIC
    ??????? "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    ??????? "

    <hibernate-configuration>

    ??? <session-factory name="hibernate.session_factory">

    ??????? <!-- Database connection settings -->
    ??????? <!--property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
    ??????? <property name="connection.url">jdbc:oracle:thin:@localhost:1521:hyq</property>
    ??????? <property name="connection.username">hyq</property>
    ??????? <property name="connection.password">hyq</property-->
    ?????? <property name="connection.datasource">TestDS</property>

    ??????? <!-- JDBC connection pool (use the built-in) -->
    ??????? <property name="connection.pool_size">1</property>

    ??????? <!-- SQL dialect -->
    ??????? <property name="dialect">org.hibernate.dialect.Oracle9Dialect</property>

    ??????? <!-- Enable Hibernate's automatic session context management -->
    ??????? <property name="current_session_context_class">thread</property>

    ??????? <!-- Disable the second-level cache? -->
    ??????? <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>

    ??????? <!-- Echo all executed SQL to stdout -->
    ??????? <property name="show_sql">true</property>

    ??????? <!-- Drop and re-create the database schema on startup -->
    ??????? <!--property name="hbm2ddl.auto">create</property-->

    ??????? <mapping resource="com/hyq/src/common/UserVO.hbm.xml"/>

    ??? </session-factory>

    </hibernate-configuration>

    注意:此處我使用的connection.datasource為:TestDS。這是因為我在weblogic中配置的數據源就是TestDS。這里要和你配置的數據源保持一致。

    實現監聽接口的方法如下(通過此方法完成配置文件的加載,從而達到發布jndi的目的):
    package com.hyq.src.servlets;

    import org.hibernate.SessionFactory;
    import org.hibernate.cfg.Configuration;
    import javax.servlet.ServletContextEvent;
    import javax.servlet.ServletContextListener;

    public class HibernateInit
    ??? 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();
    ??? }
    ? }
    }

    實現ServletContextListener接口后要在web.xml中進行配置,如下:
    ? <listener>
    ???? <listener-class>com.hyq.src.servlets.HibernateInit</listener-class>
    ? </listener>
    注意:要加載在<servlet>之前。

    獲取SessionFactory的方法如下:
    package com.hyq.src.util;

    import org.hibernate.SessionFactory;
    import javax.naming.Context;
    import javax.naming.InitialContext;
    public class HibernateUtil {
    ? public HibernateUtil() {
    ? }
    ? private static final SessionFactory sessionFactory;

    ????? static {
    ????????? try {
    ??????????? Context ctx = new InitialContext();
    ????????????? sessionFactory = (SessionFactory) ctx.lookup("hibernate/session_factory");
    ????????? } catch (Throwable ex) {
    ????????????? System.err.println("Initial SessionFactory creation failed." + ex);
    ????????????? throw new ExceptionInInitializerError(ex);
    ????????? }
    ????? }

    ????? public static SessionFactory getSessionFactory() {
    ????????? return sessionFactory;
    ? }
    }
    然后就可以在其他方法中使用SessionFactory 了,如:
    ??? Session session = HibernateUtil.getSessionFactory()
    ??????? .getCurrentSession();
    ??? session.beginTransaction();
    ??? request.setAttribute("message","已經成功運行!");
    ??? UserVO userVO = new UserVO();
    ??? userVO.setUser_name("TrampEagle");
    ??? session.save(userVO);
    ??? session.getTransaction().commit();

    具體完整的示例:HibernateJNDI源代碼

    posted on 2006-05-19 10:31 TrampEagle 閱讀(3424) 評論(3)  編輯  收藏 所屬分類: 學習體會

    Feedback

    # re: 在Weblogic上配置Hibernate為JNDI的一種簡單方法 2006-05-19 10:47 原創專欄 開源學習
    好像你只把weblogic用成web服務器吧。
    如果是這樣,好像你寫這個沒啥意義吧。看看spring怎么實現的!

      回復  更多評論
      

    # re: 在Weblogic上配置Hibernate為JNDI的一種簡單方法 2006-05-19 11:45 TrampEagle
    @原創專欄 開源學習
    我這里只是臨時寫的一個小示例,只是用來說明可以這樣使用。不過spring只是看了個入門,還沒有研究源碼,不過,謝謝“原創專欄 開源學習”,我會盡快研究spring源碼的。努力學習中!!!  回復  更多評論
      

    # re: 在Weblogic上配置Hibernate為JNDI的一種簡單方法 2007-02-06 13:16 fangdy
    我把你的示例放在MyEclipse下,代碼出錯,錯誤都是一些包找不到,如:
    import org.hibernate.SessionFactory(這個包前面打×)  回復  更多評論
      

    主站蜘蛛池模板: 国产精品无码亚洲一区二区三区| 亚洲国产成人久久三区| 国产精品亚洲精品久久精品 | 日本高清不卡aⅴ免费网站| 亚洲高清无码专区视频| 免费一级特黄特色大片| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 国产乱辈通伦影片在线播放亚洲 | 亚洲黄色网址大全| 亚洲免费精彩视频在线观看| 久久国产精品亚洲一区二区| 1000部免费啪啪十八未年禁止观看 | a级成人免费毛片完整版| 精品久久久久久亚洲| 免费成人高清在线视频| 久久精品国产亚洲AV无码娇色| 国产92成人精品视频免费| 在线免费观看亚洲| 成年女人午夜毛片免费视频 | 情人伊人久久综合亚洲| 黄色网址在线免费| 亚洲成人免费网站| 精品国产免费观看一区| 大片免费观看92在线视频线视频| 久久亚洲精品视频| 四虎在线最新永久免费| 亚洲av日韩av永久在线观看| 久久亚洲国产精品五月天婷| 免费久久人人爽人人爽av| 亚洲国产精品综合久久2007| 国产精品久免费的黄网站| 91成人免费观看在线观看| 亚洲码在线中文在线观看| 色播在线永久免费视频| 中文成人久久久久影院免费观看| 亚洲国产成人久久| 一区国严二区亚洲三区| 99久久人妻精品免费二区| 亚洲AV一区二区三区四区| 国产亚洲成av片在线观看| 影音先锋在线免费观看|