2010-07-19 53 views
1

我開發使用Seam 2.2.0在WebLogic 10.3設置EntityManager的components.xml中縫的WebLogic

應用在我的components.xml,當我把我的EntityManager,我這樣做:

<persistence:managed-persistence-context name="entityManager" 
     auto-create="true" persistence-unit-jndi-name="OSSPortailDataSource" /> 

我數據源配置這樣在WebLogic:

JNDI名稱:OSSPortailDataSource Driver類:oracle.jdbc.OracleDriver 網址爲:jdbc:神諭:薄:@ 10.1.18.98:1522:OSSI

現在,當我跑我的申請,我得到這個錯誤:

java.lang.ClassCastException: weblogic.jdbc.common.internal.RmiDataSource cannot be cast to javax.persistence.EntityManagerFactory 

這裏是日誌:

16:26:11,646 WARN [SeamLoginModule] Error invoking login method 
javax.el.ELException: java.lang.ClassCastException: weblogic.jdbc.common.internal.RmiDataSource cannot be cast to javax.persistence.EntityManagerFactory 
    at org.jboss.el.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:339) 
    at org.jboss.el.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:348) 
    at org.jboss.el.parser.AstPropertySuffix.invoke(AstPropertySuffix.java:58) 
    at org.jboss.el.parser.AstValue.invoke(AstValue.java:96) 
    at org.jboss.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276) 
    at org.jboss.seam.core.Expressions$2.invoke(Expressions.java:175) 
    at org.jboss.seam.security.jaas.SeamLoginModule.login(SeamLoginModule.java:109) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at javax.security.auth.login.LoginContext.invoke(LoginContext.java:769) 
    at javax.security.auth.login.LoginContext.access$000(LoginContext.java:186) 
    at javax.security.auth.login.LoginContext$5.run(LoginContext.java:706) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at javax.security.auth.login.LoginContext.invokeCreatorPriv(LoginContext.java:703) 
    at javax.security.auth.login.LoginContext.login(LoginContext.java:575) 
    at org.jboss.seam.security.Identity.authenticate(Identity.java:344) 
    at org.jboss.seam.security.Identity.authenticate(Identity.java:332) 
    at org.jboss.seam.security.Identity.login(Identity.java:259) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.jboss.el.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:335) 
    at org.jboss.el.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:348) 
    at org.jboss.el.parser.AstPropertySuffix.invoke(AstPropertySuffix.java:58) 
    at org.jboss.el.parser.AstValue.invoke(AstValue.java:96) 
    at org.jboss.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276) 
    at com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:68) 
    at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88) 
    at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:95) 
    at javax.faces.component.UICommand.broadcast(UICommand.java:387) 
    at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:329) 
    at org.ajax4jsf.component.AjaxViewRoot.broadcastEventsForPhase(AjaxViewRoot.java:304) 
    at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:261) 
    at org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:474) 
    at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97) 
    at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:248) 
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117) 
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265) 
    at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227) 
    at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125) 
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:292) 
    at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26) 
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42) 
    at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83) 
    at org.jboss.seam.web.IdentityFilter.doFilter(IdentityFilter.java:40) 
    at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) 
    at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:90) 
    at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) 
    at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64) 
    at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) 
    at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45) 
    at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) 
    at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:206) 
    at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290) 
    at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388) 
    at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515) 
    at org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:56) 
    at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) 
    at org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:60) 
    at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) 
    at org.jboss.seam.web.HotDeployFilter.doFilter(HotDeployFilter.java:53) 
    at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) 
    at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158) 
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42) 
    at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27) 
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42) 
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3502) 
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) 
    at weblogic.security.service.SecurityManager.runAs(Unknown Source) 
    at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2186) 
    at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2092) 
    at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1406) 
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201) 
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:173) 
Caused by: java.lang.ClassCastException: weblogic.jdbc.common.internal.RmiDataSource cannot be cast to javax.persistence.EntityManagerFactory 
    at org.jboss.seam.persistence.ManagedPersistenceContext.getEntityManagerFactoryFromJndiOrValueBinding(ManagedPersistenceContext.java:241) 
    at org.jboss.seam.persistence.ManagedPersistenceContext.initEntityManager(ManagedPersistenceContext.java:78) 
    at org.jboss.seam.persistence.ManagedPersistenceContext.getEntityManager(ManagedPersistenceContext.java:107) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.jboss.seam.util.Reflections.invoke(Reflections.java:22) 
    at org.jboss.seam.util.Reflections.invokeAndWrap(Reflections.java:144) 
    at org.jboss.seam.Component.callComponentMethod(Component.java:2249) 
    at org.jboss.seam.Component.unwrap(Component.java:2275) 
    at org.jboss.seam.Component.getInstance(Component.java:2041) 
    at org.jboss.seam.Component.getInstance(Component.java:1983) 
    at org.jboss.seam.Component.getInstance(Component.java:1977) 
    at org.jboss.seam.Component.getInstanceInAllNamespaces(Component.java:2349) 
    at org.jboss.seam.Component.getValueToInject(Component.java:2301) 
    at org.jboss.seam.Component.injectAttributes(Component.java:1736) 
    at org.jboss.seam.Component.inject(Component.java:1554) 
    at org.jboss.seam.core.BijectionInterceptor.aroundInvoke(BijectionInterceptor.java:61) 
    at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68) 
    at org.jboss.seam.core.MethodContextInterceptor.aroundInvoke(MethodContextInterceptor.java:44) 
    at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68) 
    at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:107) 
    at org.jboss.seam.intercept.JavaBeanInterceptor.interceptInvocation(JavaBeanInterceptor.java:185) 
    at org.jboss.seam.intercept.JavaBeanInterceptor.invoke(JavaBeanInterceptor.java:103) 
    at completel.oss.ossportail.session.Authenticator_$$_javassist_seam_6.authenticate(Authenticator_$$_javassist_seam_6.java) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.jboss.el.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:335) 

如何配置持久做工精細?

謝謝。

回答

1

我找到了解決辦法:

在components.xml中,添加以下屬性:

<persistence:entity-manager-factory name="entityManagerFactory" 
     persistence-unit-name="OSSPortail" /> 

這是一個 「鏈接」 到persistence.xml中(Hibernate的配置)。

在components.xml中,修改託管持久化上下文屬性:

<persistence:managed-persistence-context name="entityManager" 
    auto-create="true" entity-manager-factory="#{entityManagerFactory}" /> 

只需添加實體管理器工廠的屬性,它是持久的名稱:實體管理器工廠財產。

最後,配置persistence.xml文件。礦在這裏:

<persistence-unit name="OSSPortail" transaction-type="JTA"> 
    <provider>org.hibernate.ejb.HibernatePersistence</provider> 
    <jta-data-source>OSSPortailDataSource</jta-data-source> 
    <properties> 
     <property name="hibernate.dialect" 
      value="org.hibernate.dialect.Oracle10gDialect" /> 
     <property name="hibernate.connection.driver_class" 
      value="oracle.jdbc.driver.OracleDriver" /> 
     <property name="hibernate.hbm2ddl.auto" value="update" /> 
     <property name="hibernate.show_sql" value="true" /> 
     <property name="hibernate.format_sql" value="true" /> 
     <property name="hibernate.default_schema" value="SI" /> 
     <property name="jboss.entity.manager.factory.jndi.name" 
      value="OSSPortailDataSource" /> 
     <property name="hibernate.transaction.manager_lookup_class" 
      value="org.hibernate.transaction.WeblogicTransactionManagerLookup" /> 
     <property name="hibernate.query.factory_class" 
      value="org.hibernate.hql.classic.ClassicQueryTranslatorFactory" /> 
    </properties> 
</persistence-unit>