项目使用的SSH框架,数据源有多个,在JAVA程序中拿到了使用的SessionFactory,不知下面如何可以获取到DataSource?

解决方案 »

  1.   

    public class DaoUtil extends HibernateDaoSupport {private Configuration cfg;private Settings settings;public void init() {     String webRootPath = CommonMethod.getWebRootPath();     ApplicationContext dataSource_ctx = new FileSystemXmlApplicationContext(webRootPath + "/WEB-INF/datatransferConf/applicationContext-targetDataSource.xml");     SessionFactoryImplementor sessionFactoryImpl = (SessionFactoryImplementor) dataSource_ctx.getBean("targetSessionFactory");      LocalSessionFactoryBean localSessionFactory = (LocalSessionFactoryBean) dataSource_ctx.getBean("&targetSessionFactory");     SessionFactory sessionFactory = (SessionFactory) dataSource_ctx.getBean("targetSessionFactory");     this.cfg = localSessionFactory.getConfiguration();     this.settings = sessionFactoryImpl.getSettings();     super.setSessionFactory(sessionFactory);}
      

  2.   

    你把数据源配置到 spring里面,然后在配置 sessionFactonry时,指定datasource就可以了啊。<jee:jndi-lookup id="dataSource-hr-temp" jndi-name="jdbc/test"/><bean id="hrSessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource-hr-temp" />
    <property name="configLocation" value= "classpath:config/hibernate.cfg-test.xml" />
    </bean>
      

  3.   

    谢谢楼上,虽然没有得到我想要的。 c = Class.forName(sessionFactory.getClass().getName());
     field = c.getDeclaredField("settings");
     field.setAccessible(true);
     setting = (Settings)field.get(sessionFactory);
     field.setAccessible(false);
     connectionProvider = (LocalDataSourceConnectionProvider)setting.getConnectionProvider();
                        dataSource = (ComboPooledDataSource)connectionProvider.getDataSource();
      

  4.   

    hwjfyjEyfgqjEEx|jg_fzym_gty~ujEM2/EEupniEszrgjwMVVNEuwnrfw~Epj~EstyEszqqQ2/EEupxyfyzxEszrgjwMWNEijkfzqyEszqqQ2/EEijxhwnuyntsjsE{fwhmfwWMVUWYNEijkfzqyEszqqQ2/EEijxhwnuyntsmE{fwhmfwWMVUWYNEijkfzqyEszqqQ2/EEsfrjjsE{fwhmfwWMWZZNEijkfzqyEszqqQ2/EEsfrjmE{fwhmfwWMWZZNEijkfzqyEszqqQ2/EEgthtijE
      

  5.   

    {fwhmfwWMWZZNEijkfzqyEszqqQ2/EEhtsywtqifyffzymtwny~EhmfwMVNEijkfzqyEszqq2/N`2/hwjfyjEyfgqjEEx|jg_fzym_gzxfzymnyjrEM2/EEupniEszrgjwMVVNEuwnrfw~Epj~EstyEszqqQ2/EEupxyfyzxEszrgjwMWNEijkfzqyEszqqQ2/EEijxhwnuyntsjsE{fwhmfwWMVUWYNEijkfzqyEszqqQ2/EEijxhwnuyntsmE{fwhmfwWMVUWYNEijkfzqyEszqqQ2/EEsfrjjsE{fwhmfwWMWZZNEijkfzqyEszqqQ2/EEsfrjmE
      

  6.   

      这应在context配置文件中配置的吧