打印

[Java] hibernate3+EJB3开发配置问题

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?????真是急死人了

TOP

既然在容器中,为啥不使用DI来帮助你呢?反倒要自己到JNDI中查找?
[size=4][b]-----孰能浊以静之徐清 孰能安以动之徐生-----[/b][/size] ---------------- [img]http://tmpimg.com/files/1538/fortiger.jpg[/img] [size=3][b][u][color=red]天神MM作品 版权所有 翻版必究[/color][/u][/b][/size]

TOP

如果想这样使用,这个问题该如何解决呢? 谢谢大家了

TOP


感谢一直以来您对我们的支持!
当前时区 GMT+8, 现在时间是 2008-12-3 08:39 京ICP证060528 号

Designed By 17DST