2009-04-14 9 views
0

は、私は、WebLogic起動クラスに次のコードからJPAからのEntityManagerFactoryを取得しています問題に直面していますを取得中問題Weblogicの中にHibernateのEntityManagerFactory(EJB3アプリケーション)


EntityManagerFactory emf = 
     Persistence.createEntityManagerFactory("testEJBPU"); 

    logger.info("Created EntityManagerFactory"); 

    Context ctx = new InitialContext(); 

    ctx.rebind("testEJBPU", emf); 

上記のコードは、Hibernateの代わりにOPenJPA EntityManagerFactoryを返すだけです 私のPresistence.xmlファイルには次のものがあります


<?xml version="1.0" encoding="UTF-8"?> 
<!-- 
Copyright (c) 2006 Illuminatics, Inc. 
All rights reserved. 
--> 

<persistence xmlns="http://java.sun.com/xml/ns/persistence" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" 
      version="1.0"> 
    <persistence-unit name="testEJBPU" transaction-type="JTA"> 
     <provider>org.hibernate.ejb.HibernatePersistence</provider> 
     <jta-data-source>jdbc/evolvDS</jta-data-source> 
     <properties> 
      <property name="hibernate.ejb.cfgfile" 
         value="META-INF/hibernate.cfg.xml"/> 
      <property name="hibernate.transaction.factory_class" 
         value="org.hibernate.ejb.transaction.JoinableCMTTransactionFactory"/> 
      <property name="hibernate.transaction.manager_lookup_class" 
         value="org.hibernate.transaction.WeblogicTransactionManagerLookup"/> 
      <property name="hibernate.cache.provider_class" 
         value="org.hibernate.cache.EhCacheProvider"/> 
      <property name="hibernate.cache.jndi" 
         value="evolv-cache"/> 
     </properties> 
    </persistence-unit> 
</persistence> 

とアプリケーションが


<Apr 14, 2009 9:48:18 AM PKT> <Critical> <WebLogicServer> <BEA-000286> <Failed to invoke startup class "binder", <1.0.0 fatal user error> org.apache.openjpa.util.UserException: A JDBC Driver or DataSource class name must be specified in the ConnectionDriverName property. 
<1.0.0 fatal user error> org.apache.openjpa.util.UserException: A JDBC Driver or DataSource class name must be specified in the ConnectionDriverName property. 
    at org.apache.openjpa.jdbc.schema.DataSourceFactory.newDataSource(DataSourceFactory.java:70) 
    at org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.createConnectionFactory(JDBCConfigurationImpl.java:802) 
    at org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.getDBDictionaryInstance(JDBCConfigurationImpl.java:568) 
    at org.apache.openjpa.jdbc.meta.MappingRepository.endConfiguration(MappingRepository.java:1185) 
    at org.apache.openjpa.lib.conf.Configurations.configureInstance(Configurations.java:450) 
    at org.apache.openjpa.lib.conf.Configurations.configureInstance(Configurations.java:375) 
    at org.apache.openjpa.lib.conf.PluginValue.instantiate(PluginValue.java:102) 
    at kodo.conf.CachingMetaDataRepositoryPlugin.instantiate(CachingMetaDataRepositoryPlugin.java:29) 
    at org.apache.openjpa.lib.conf.ObjectValue.instantiate(ObjectValue.java:79) 
    at org.apache.openjpa.conf.OpenJPAConfigurationImpl.newMetaDataRepositoryInstance(OpenJPAConfigurationImpl.java:833) 
    at org.apache.openjpa.conf.OpenJPAConfigurationImpl.getMetaDataRepositoryInstance(OpenJPAConfigurationImpl.java:828) 
    at org.apache.openjpa.kernel.AbstractBrokerFactory.makeReadOnly(AbstractBrokerFactory.java:539) 
    at org.apache.openjpa.kernel.AbstractBrokerFactory.readResolve(AbstractBrokerFactory.java:381) 
    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:585) 
    at java.io.ObjectStreamClass.invokeReadResolve(ObjectStreamClass.java:1033) 
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1728) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305) 
    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1908) 
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1832) 
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305) 
    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1908) 
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1832) 
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305) 
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:348) 
    at weblogic.rmi.extensions.server.CBVInputStream.readObjectInternal(CBVInputStream.java:71) 
    at weblogic.rmi.extensions.server.CBVInputStream.readObject(CBVInputStream.java:65) 
    at weblogic.jndi.internal.JNDIHelper.copyObject(JNDIHelper.java:36) 
    at weblogic.jndi.internal.WLEventContextImpl.copyObject(WLEventContextImpl.java:379) 
    at weblogic.jndi.internal.WLEventContextImpl.rebind(WLEventContextImpl.java:114) 
    at javax.naming.InitialContext.rebind(InitialContext.java:367) 
    at com.illuminatics.test.weblogic.EntityManagerFactoryBinder.main(EntityManagerFactoryBinder.java:52) 
    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:585) 
    at weblogic.management.deploy.classdeployment.ClassDeploymentManager.invokeMain(ClassDeploymentManager.java:353) 
    at weblogic.management.deploy.classdeployment.ClassDeploymentManager.invokeClass(ClassDeploymentManager.java:263) 
    at weblogic.management.deploy.classdeployment.ClassDeploymentManager.access$000(ClassDeploymentManager.java:54) 
    at weblogic.management.deploy.classdeployment.ClassDeploymentManager$1.run(ClassDeploymentManager.java:205) 
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) 
    at weblogic.security.service.SecurityManager.runAs(Unknown Source) 
    at weblogic.management.deploy.classdeployment.ClassDeploymentManager.invokeClassDeployment(ClassDeploymentManager.java:198) 
    at weblogic.management.deploy.classdeployment.ClassDeploymentManager.invokeClassDeployments(ClassDeploymentManager.java:177) 
    at weblogic.management.deploy.classdeployment.ClassDeploymentManager.runStartupsAfterAppActivation(ClassDeploymentManager.java:158) 
    at weblogic.management.deploy.classdeployment.StartupClassPrelistenService.start(StartupClassPrelistenService.java:13) 
    at weblogic.t3.srvr.SubsystemRequest.run(SubsystemRequest.java:64) 
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:200) 
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:172) 
> 

My EAR Structure is as: 

testEJBProject.ear 
-->lib/ 
-->META-INF/ 
----->application.xml 
----->MANIFEST.MF 
-->testEJB.jar 
----->META-INF/ 
--------->hibernate.cfg.xml 
--------->INDEX.LST 
--------->MANIFEST>MF 
--------->persistence.xml 
----->com/../..* 
を起動したときのOpenJPAに関連して、次のエラーを取得しています

誰かが以前に遭遇した場合、私の解決策を教えてください! よろしく、 Kazim Raza。

答えて

0

ありがとう、 問題は、HibernatePersistenceProviderのクラスを拡張することで修正されています。

0

データソースjdbc/evolvDSの設定方法に問題があります。例外として、JDBCドライバ名が定義されていません。データソース設定を再確認できますか?

+0

Exceptionの起点を見ると、Hibernateの代わりにOPenJPAから来ています。私は、persistence.xmlファイルのProviderに "org.hibernate.ejb.HibernatePersistence"を設定しているので、それは尋ねる必要がありますFactory StrangeのOpenJPAではなくHibernate! –

+0

weblogicのEJBコンテナがクラスパス上にpersistence.xmlファイルを見つけることができないことを確かめてください。その理由は、というタグを拾っていないからです! persistence.xmlへのパスはどこに言及する必要がありますか? –

0

persistence-unit-refで永続性ユニットをweb.xmlに参照しましたか?

その

<永続ユニット-REF > <永続ユニット-REF-名>永続/ testEJBPU < /永続ユニット-REF-名> ... <永続性ユニットのようなもの

-ref >

+0

私のテストEJBの.ear構造をよく見ています。私の質問で更新しました。 –

関連する問題