hibernate3+EJB3开发配置问题
public class HibernateBase {
private static SessionFactory sf = null;
public Session session = null;
public void Begin(){
//在这里可以根据配置文件来使用,如果是使用JDBC-》openSession(),如果使用JTA使用getCurrentSession();
if(sf==null) Init();
session = sf.openSession();
}
public void Init(){
try{
InitialContext ctx = new InitialContext();
Object obj = ctx.lookup("hibernateJNDI");
System.out.println("hibernateJNDI==============="+obj);
if(sf==null) {sf = (SessionFactory)obj;ctx.bind("hibernateJNDI", sf);}
else ctx.rebind("hibernateJNDI", sf);
}catch(Exception e){
e.printStackTrace();
}
}
public void Close(){
if(session!=null&&session.isOpen()) session.close();
}
}
@Stateless
public class ArticleEJB extends HibernateBase implements InfoArticleUtil, ArticleEJBLocal,
ArticleEJBRemote {
public List getAllArticle() {
List list = null;
try{
Begin();
list = session.createQuery("from InfoArticle").list();
if(list==null) list = new ArrayList();
session.flush();
}catch(Exception e){
e.printStackTrace();
}finally{
Close();
}
return null;
}
}
public class StartUpListener implements ServletContextListener{
public void contextDestroyed(ServletContextEvent arg0) {
}
public void contextInitialized(ServletContextEvent arg0) {
try {
InitialContext ctx = new InitialContext();
HibernateUtil h = new HibernateUtil();
h.Init();
SessionFactory newsf = h.sf;
SessionFactory oldsf = (SessionFactory)ctx.lookup("hibernateJNDI");
System.out.println("bind hibernateJNDI~~~~~~~~~~~~~~~~~~~~~~~`");
if(oldsf!=null) ctx.rebind("hibernateJNDI", newsf);
else ctx.bind("hibernateJNDI", newsf);
} catch (NamingException e) {
e.printStackTrace();
}
}
}
22:49:40,963 INFO [STDOUT] 22:49:40,963 INFO [Environment] Hibernate 3.1.3
22:49:40,983 INFO [STDOUT] 22:49:40,983 INFO [Environment] hibernate.properties not found
22:49:40,983 INFO [STDOUT] 22:49:40,983 INFO [Environment] using CGLIB reflection optimizer
22:49:40,993 INFO [STDOUT] 22:49:40,993 INFO [Environment] using JDK 1.4 java.sql.Timestamp handling
22:49:41,614 INFO [STDOUT] 22:49:41,614 INFO [Configuration] configuring from resource: /hibernate.cfg.xml
22:49:41,614 INFO [STDOUT] 22:49:41,614 INFO [Configuration] Configuration resource: /hibernate.cfg.xml
22:49:41,934 INFO [STDOUT] 22:49:41,934 INFO [Configuration] Reading mappings from resource: domain/InfoArti
cle.hbm.xml
22:49:43,476 INFO [STDOUT] 22:49:43,476 INFO [HbmBinder] Mapping class: domain.InfoArticle -> info_article
22:49:43,707 INFO [STDOUT] 22:49:43,707 INFO [Configuration] Reading mappings from resource: domain/ChanArti
Relation.hbm.xml
22:49:43,887 INFO [STDOUT] 22:49:43,887 INFO [HbmBinder] Mapping class: domain.ChanArtiRelation -> chan_arti
_relation
22:49:44,888 INFO [STDOUT] 22:49:44,888 INFO [Configuration] Reading mappings from resource: domain/InfoChan
nel.hbm.xml
22:49:46,220 INFO [STDOUT] 22:49:46,220 INFO [HbmBinder] Mapping class: domain.InfoChannel -> info_channel
22:49:46,230 INFO [STDOUT] 22:49:46,230 INFO [Configuration] Configured SessionFactory: null
22:49:46,230 INFO [STDOUT] 22:49:46,230 INFO [HbmBinder] Mapping collection: domain.InfoArticle.chanArtiRela
tions -> chan_arti_relation
22:49:46,280 INFO [STDOUT] 22:49:46,280 INFO [HbmBinder] Mapping collection: domain.InfoChannel.chanArtiRela
tions -> chan_arti_relation
22:49:46,351 INFO [STDOUT] 22:49:46,351 INFO [NamingHelper] JNDI InitialContext properties:{}
22:49:46,351 INFO [STDOUT] 22:49:46,351 INFO [DatasourceConnectionProvider] Using datasource: java:/moreflur
ish
22:49:47,572 INFO [STDOUT] 22:49:47,572 INFO [SettingsFactory] RDBMS: MySQL, version: 5.0.15-nt
22:49:47,572 INFO [STDOUT] 22:49:47,572 INFO [SettingsFactory] JDBC driver: MySQL-AB JDBC Driver, version: m
ysql-connector-java-5.0.8 ( Revision: ${svn.Revision} )
22:49:49,054 INFO [STDOUT] 22:49:48,984 INFO [Dialect] Using dialect: org.hibernate.dialect.MySQLDialect
22:49:49,104 INFO [STDOUT] 22:49:49,104 INFO [TransactionFactoryFactory] Transaction strategy: org.hibernate
.transaction.JTATransactionFactory
22:49:49,165 INFO [STDOUT] 22:49:49,114 INFO [NamingHelper] JNDI InitialContext properties:{}
22:49:49,175 INFO [STDOUT] 22:49:49,175 INFO [TransactionManagerLookupFactory] instantiating TransactionMana
gerLookup: org.hibernate.transaction.JBossTransactionManagerLookup
22:49:49,185 INFO [STDOUT] 22:49:49,175 INFO [TransactionManagerLookupFactory] instantiated TransactionManag
erLookup
22:49:49,185 INFO [STDOUT] 22:49:49,185 INFO [TransactionManagerLookupFactory] instantiating TransactionMana
gerLookup: org.hibernate.transaction.JBossTransactionManagerLookup
22:49:49,185 INFO [STDOUT] 22:49:49,185 INFO [TransactionManagerLookupFactory] instantiated TransactionManag
erLookup
22:49:49,185 INFO [STDOUT] 22:49:49,185 INFO [SettingsFactory] Automatic flush during beforeCompletion(): di
sabled
22:49:49,185 INFO [STDOUT] 22:49:49,185 INFO [SettingsFactory] Automatic session close at end of transaction
: disabled
22:49:49,185 INFO [STDOUT] 22:49:49,185 INFO [SettingsFactory] JDBC batch size: 15
22:49:49,185 INFO [STDOUT] 22:49:49,185 INFO [SettingsFactory] JDBC batch updates for versioned data: disabl
ed
22:49:49,185 INFO [STDOUT] 22:49:49,185 INFO [SettingsFactory] Scrollable result sets: enabled
22:49:49,195 INFO [STDOUT] 22:49:49,195 INFO [SettingsFactory] JDBC3 getGeneratedKeys(): enabled
22:49:49,195 INFO [STDOUT] 22:49:49,195 INFO [SettingsFactory] Connection release mode: auto
22:49:49,195 INFO [STDOUT] 22:49:49,195 INFO [SettingsFactory] Maximum outer join fetch depth: 2
22:49:49,195 INFO [STDOUT] 22:49:49,195 INFO [SettingsFactory] Default batch fetch size: 1
22:49:49,195 INFO [STDOUT] 22:49:49,195 INFO [SettingsFactory] Generate SQL with comments: disabled
22:49:49,195 INFO [STDOUT] 22:49:49,195 INFO [SettingsFactory] Order SQL updates by primary key: disabled
22:49:49,195 INFO [STDOUT] 22:49:49,195 INFO [SettingsFactory] Query translator: org.hibernate.hql.ast.ASTQu
eryTranslatorFactory
22:49:49,265 INFO [STDOUT] 22:49:49,265 INFO [ASTQueryTranslatorFactory] Using ASTQueryTranslatorFactory
22:49:49,265 INFO [STDOUT] 22:49:49,265 INFO [SettingsFactory] Query language substitutions: {}
22:49:49,285 INFO [STDOUT] 22:49:49,265 INFO [SettingsFactory] Second-level cache: enabled
22:49:49,285 INFO [STDOUT] 22:49:49,285 INFO [SettingsFactory] Query cache: disabled
22:49:49,285 INFO [STDOUT] 22:49:49,285 INFO [SettingsFactory] Cache provider: org.hibernate.cache.Hashtable
CacheProvider
22:49:49,285 INFO [STDOUT] 22:49:49,285 INFO [SettingsFactory] Optimize cache for minimal puts: disabled
22:49:49,295 INFO [STDOUT] 22:49:49,295 INFO [SettingsFactory] Structured second-level cache entries: disabl
ed
22:49:49,335 INFO [STDOUT] 22:49:49,335 INFO [SettingsFactory] Echoing all SQL to stdout
22:49:49,335 INFO [STDOUT] 22:49:49,335 INFO [SettingsFactory] Statistics: disabled
22:49:49,335 INFO [STDOUT] 22:49:49,335 INFO [SettingsFactory] Deleted entity synthetic identifier rollback:
disabled
22:49:49,335 INFO [STDOUT] 22:49:49,335 INFO [SettingsFactory] Default entity-mode: pojo
22:49:49,535 INFO [STDOUT] 22:49:49,535 INFO [SessionFactoryImpl] building session factory
22:49:52,800 INFO [STDOUT] 22:49:52,800 INFO [SessionFactoryObjectFactory] Factory name: hibernateJNDI
22:49:52,800 INFO [STDOUT] 22:49:52,800 INFO [NamingHelper] JNDI InitialContext properties:{}
22:49:52,800 INFO [STDOUT] 22:49:52,800 INFO [SessionFactoryObjectFactory] Bound factory to JNDI name: hiber
nateJNDI
22:49:52,800 INFO [STDOUT] 22:49:52,800 WARN [SessionFactoryObjectFactory] InitialContext did not implement
EventContext
22:49:52,800 INFO [STDOUT] 22:49:52,800 INFO [NamingHelper] JNDI InitialContext properties:{}
22:49:52,830 INFO [STDOUT] bind hibernateJNDI~~~~~~~~~~~~~~~~~~~~~~~`
22:49:54,292 INFO [TomcatDeployer] deploy, ctxPath=/jmx-console, warUrl=.../deploy/jmx-console.war/
22:49:56,135 INFO [Http11Protocol] Starting Coyote HTTP/1.1 on http-127.0.0.1-8080
22:49:56,215 INFO [AjpProtocol] Starting Coyote AJP/1.3 on ajp-127.0.0.1-8009
22:49:56,245 INFO [Server] JBoss (MX MicroKernel) [4.2.2.GA (build: SVNTag=JBoss_4_2_2_GA date=200710221139)]
Started in 2m:6s:142ms
22:51:54,505 INFO [STDOUT] hibernateJNDI===============org.hibernate.impl.SessionFactoryImpl@c92ed6
22:51:54,505 ERROR [STDERR] java.lang.ClassCastException: org.hibernate.impl.SessionFactoryImpl
22:51:54,505 ERROR [STDERR] at hibernate.HibernateBase.Init(HibernateBase.java:21)
22:51:54,505 ERROR [STDERR] at hibernate.HibernateBase.Begin(HibernateBase.java:13)
22:51:54,505 ERROR [STDERR] at ejb3.services.Article.ArticleEJB.getAllArticle(ArticleEJB.java:18)
22:51:54,505 ERROR [STDERR] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
22:51:54,505 ERROR [STDERR] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:3
9)
22:51:54,505 ERROR [STDERR] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImp
l.java:25)
22:51:54,505 ERROR [STDERR] at java.lang.reflect.Method.invoke(Method.java:585)
22:51:54,505 ERROR [STDERR] at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:1
12)
22:51:54,515 ERROR [STDERR] at org.jboss.ejb3.interceptor.InvocationContextImpl.proceed(InvocationContextI
mpl.java:166)
22:51:54,515 ERROR [STDERR] at org.jboss.ejb3.interceptor.EJB3InterceptorsInterceptor.invoke(EJB3Intercept
orsInterceptor.java:63)
22:51:54,515 ERROR [STDERR] at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:1
01)
22:51:54,515 ERROR [STDERR] at org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor.invoke(Tran
sactionScopedEntityManagerInterceptor.java:54)
22:51:54,515 ERROR [STDERR] at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:1
01)
22:51:54,515 ERROR [STDERR] at org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsInterce
ptor.java:47)
22:51:54,515 ERROR [STDERR] at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:1
有谁知道这是为什么吗?明明都有hibernateJNDI的sessionFactory可就不能转化成SessionFactory?????真是急死人了