工大后院

 找回密码
 加入后院

扫一扫,访问微社区

QQ登录

只需一步,快速开始

搜索
查看: 2447|回复: 4

关于Hibernate的JNDI设置

[复制链接]
发表于 2006-3-10 12:55 | 显示全部楼层 |阅读模式
我设的数据库为javasys

以下是TestUtil.java

package test.util;

import ...;
...

public class TestUtil {
       
        private static Log log=LogFactory.getLog(HibernateUtil.class);
        private static Configuration configuration;
        private static SessionFactory sessionFactory;
        //init
        static {
                try{
                        configuration=new Configuration();
                        configuration.addClass(Test.class)                       
                        sessionFactory=configuration.buildSessionFactory();
                }catch(Throwable ex){
                        log.error(ex.getMessage());
                        throw new ExceptionInInitializerError(ex);
                }
        }
        public static SessionFactory getSessionFactory(){
                //以下被注释的代码功能:如何获得作为JNDI资源的SeestionFactory
                SessionFactory sessions =null;
                try{
                        Context ctx=new InitialContext();
                        String jndiName="java:hiberate/HibernateFactory";
                        sessions=(SessionFactory)ctx.lookup(jndiName);
                       
                }catch(NamingException ex){
                       
                }
               
                return sessionFactory;
        }
        public static Configuration getConfiguration(){
                return configuration;
        }
        public static void rebuildSessionFactory()throws DatastoreException{
                synchronized (sessionFactory){
                        try{
                                sessionFactory=getConfiguration().buildSessionFactory();
                        }catch(Exception ex){
                                log.equals(ex.getMessage());
                                throw DatastoreException.datastoreError(ex);
                        }
                }
               
        }
}


在Hibernate.properties中

hibernate.dialect=net.sf.hibernate.dialect.MySQLDialect

##以下的两个属性是否为一样
hibernate.session_factory_name=java:hibernate/SessionFactory
hibernate.connection.datasource=java:comp/env/jdbc/JAVASYS

hibernate.connection.driver_class=com.mysql.jdbc.Driver
hibernate.connection.url=jdbc:mysql://localhost:3306/JAVASYS
hibernate.connection.username=root
hibernate.connection.password=1234
hibernate.show_sql=true
hibernate.c3p0.min_size=5
hibernate.c3p0.max_size=20
hibernate.c3p0.timeout=300
hibernate.c3p0.max_statements=50
hibernate.c3p0.idle_test_period=300
###hibernate.session_factory_name=java:hiberate/HibernateFactory


错误信息如下:

12:55:14,146  INFO Configuration:641 - processing one-to-one association property references
12:55:14,146  INFO Configuration:666 - processing foreign key constraints
12:55:14,316  INFO Dialect:86 - Using dialect: net.sf.hibernate.dialect.MySQLDialect
12:55:14,376  INFO SettingsFactory:70 - Maximim outer join fetch depth: 2
12:55:14,376  INFO SettingsFactory:74 - Use outer join fetching: true
12:55:14,416  INFO NamingHelper:26 - JNDI InitialContext properties:{}
12:55:14,536 FATAL DatasourceConnectionProvider:47 - Could not find datasource: java:comp/env/jdbc/JAVASYS
javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial
        at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:640)
        at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:243)
        at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:280)
        at javax.naming.InitialContext.lookup(InitialContext.java:347)
        at net.sf.hibernate.connection.DatasourceConnectionProvider.configure(DatasourceConnectionProvider.java:44)
        at net.sf.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:83)
        at net.sf.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:76)
        at net.sf.hibernate.cfg.Configuration.buildSettings(Configuration.java:1160)
        at net.sf.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:794)
        at sys.util.HibernateUtil.<clinit>(HibernateUtil.java:34)
java.lang.ExceptionInInitializerError
        at sys.util.HibernateUtil.<clinit>(HibernateUtil.java:37)
Caused by: net.sf.hibernate.HibernateException: Could not find datasource
        at net.sf.hibernate.connection.DatasourceConnectionProvider.configure(DatasourceConnectionProvider.java:48)
        at net.sf.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:83)
        at net.sf.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:76)
        at net.sf.hibernate.cfg.Configuration.buildSettings(Configuration.java:1160)
        at net.sf.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:794)
        at sys.util.HibernateUtil.<clinit>(HibernateUtil.java:34)
Caused by: javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial
        at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:640)
        at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:243)
        at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:280)
        at javax.naming.InitialContext.lookup(InitialContext.java:347)
        at net.sf.hibernate.connection.DatasourceConnectionProvider.configure(DatasourceConnectionProvider.java:44)
        ... 5 more
12:55:14,586 ERROR HibernateUtil:36 - Could not find datasource
Exception in thread "main"


我想知道这个JNDI在单纯的应用程序中怎么设置.在Tomcat环境中又是怎么设置?
发表于 2006-3-10 13:57 | 显示全部楼层
找不到java:comp/env/jdbc/JAVASYS...楼主你的数据库连接源在Tomcat里面配置了没有呢?

如果要设置JNDI连接源,请参考以下文章:
回复

使用道具 举报

 楼主| 发表于 2006-3-10 14:13 | 显示全部楼层
原帖由 wool王 于 2006-3-10 01:57 PM 发表
找不到java:comp/env/jdbc/JAVASYS...楼主你的数据库连接源在Tomcat里面配置了没有呢?

如果要设置JNDI连接源,请参考以下文章:

在哪??
回复

使用道具 举报

发表于 2006-3-11 00:12 | 显示全部楼层
不好意思...今天粘贴的时候没粘上就提交了,,,也没去注意...

http://blog.csdn.net/woolceo/archive/2005/10/19/509205.aspx

真是失敬...
回复

使用道具 举报

发表于 2006-3-11 00:16 | 显示全部楼层
ps下:为什么楼主写:private static Log log=LogFactory.getLog(HibernateUtil.class);应该是getLog本类吧...Log4j建议将当前类当作日志标识的吧...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入后院

本版积分规则

QQ|Archiver|手机版|小黑屋|广告业务Q|工大后院 ( 粤ICP备10013660号 )

GMT+8, 2025-5-14 22:26

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

快速回复 返回顶部 返回列表