您的位置:首页 > 其它

osgi 环境下 hibernate 4 配置

2014-05-12 13:31 162 查看


准备将公司的老应用迁移到OSGI karaf平台上。很吐血的一点就是hibernate。 这玩意,真是超级麻烦的一个工程。

classload是最头痛的一个问题。在Hibernate4上利用注册服务的方式 实现了 classloader的代理。

顺便提一句想用Hibernate3做reloadclass的同学们别妄想了。

除非是改源码。

view
source

print?

01
/**
02
*
Rebuild hibernate session factory
03
*
04
*/
05
public
static
void
rebuildSessionFactory()
{
06
   
try
{
07
  
//
create a BootstarpRegistry
08
  
BootstrapServiceRegistry
bootstrapServiceRegistry =
new
BootstrapServiceRegistryBuilder()
09
  
//
pass in a class-loader Hibernate should use to load application
10
  
//
classes
11
.withApplicationClassLoader(org.postgresql.Driver.
class
.getClassLoader())
12
//
pass in a class-loader Hibernate should use to load
13
//
resources
14
.withResourceClassLoader(HibernateSessionFactory.
class
.getClassLoader()).build();
15
16
  
//
create a ServiceRegistry
17
  
ServiceRegistryBuilder
registryBuilder =
new
ServiceRegistryBuilder(bootstrapServiceRegistry);
18
19
  
//
clear
20
  
configuration
=
new
Configuration();
21
  
//
read config
22
  
URL
u = HibernateSessionFactory.
class
.getClassLoader().getResource(configFile);
23
  
configuration.configure(u);
24
  
registryBuilder.applySettings(configuration.getProperties());
25
  
//
build ServiceRegistry
26
  
ServiceRegistry
serviceRegistry = registryBuilder.buildServiceRegistry();
27
28
  
//
create SessionFactory
29
  
sessionFactory
= configuration.buildSessionFactory(serviceRegistry);
30
   
}
catch
(Exception
e) {
31
  
System.err.println(
"%%%%
Error Creating SessionFactory %%%%"
);
32
  
e.printStackTrace();
33
   
}
34
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: