Hibernate的源代码有JNDI SPI的实现,也有绑定的代码(你没有找到),所以按道理来说,只要在hibernate.properties配置了JNDI,那么就应该可以在App Server上lookup到。但是App Server的JNDI树是自己单独实现的,他不可能也不应该被Hibernate的JNDI SPI实现覆盖,所以在App Server环境下,这样配置是无效的。如果想要在App Server的JNDI树上lookup到Hibernate的SessionFactory,从原理上来说,SessionFactory的获得是要自己编写的,然后在App Server环境中把该类绑定到App Server的JNDI上,Hibernate的文档中有在JBoss和Weblogic的JNDI配置,就是按照这样的思路。
我想除非是在没有App Server的JNDI实现的时候,这样的配置大概才有效吧。可能就像是Hibernate的JTA,虽然可以配置,但实际上就像一个摆设,在真实的App Server环境下,是需要从App Server端来配置的。
以上是个人的推测。
对JNDI还是比较迷惑,望指教
由于我对JBoss没有接触过,所以没有怎么看JBoss的配置,但对于Weblogic来说,是比较标准的把SessionFactory绑定到Weblogic的JNDI树上的做法。
JTA就不说了,以前帖子分析过了。
DataSource还是要用App Server的DataSource,JNDI也是App Server的,只不过需要告诉Hibernate,所以需要配置文件里面指名。
JNDI不一定要在App Server中用,如果有中心的目录服务器,也有可能放在在目录服务器中。我对Sun的JNDI实现不懂。
挂到JNDI树上它只要有JNDI实现的客户端API,直接访问就行了,省得再到appserver上去配置
那个sun的JNDI实现是访问文件系统的吧
使用weblogic的JNDI设置SF,需要进行哪些特殊操作呀