Return-Path: Delivered-To: apmail-incubator-open-jpa-dev-archive@locus.apache.org Received: (qmail 64558 invoked from network); 6 Apr 2007 17:07:59 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 6 Apr 2007 17:07:59 -0000 Received: (qmail 34639 invoked by uid 500); 6 Apr 2007 17:08:06 -0000 Delivered-To: apmail-incubator-open-jpa-dev-archive@incubator.apache.org Received: (qmail 34614 invoked by uid 500); 6 Apr 2007 17:08:06 -0000 Mailing-List: contact open-jpa-dev-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: open-jpa-dev@incubator.apache.org Delivered-To: mailing list open-jpa-dev@incubator.apache.org Received: (qmail 34597 invoked by uid 99); 6 Apr 2007 17:08:06 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 06 Apr 2007 10:08:06 -0700 X-ASF-Spam-Status: No, hits=-0.0 required=10.0 tests=SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (herse.apache.org: domain of plinskey@bea.com designates 66.248.192.39 as permitted sender) Received: from [66.248.192.39] (HELO repmmg02.bea.com) (66.248.192.39) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 06 Apr 2007 10:07:58 -0700 Received: from repmmr02.bea.com (repmmr02.bea.com [10.160.30.72]) by repmmg02.bea.com (Switch-3.2.5/Switch-3.2.5) with ESMTP id l36H7aAm013190 for ; Fri, 6 Apr 2007 10:07:36 -0700 Received: from repbex02.amer.bea.com (repbex02.bea.com [10.160.26.99]) by repmmr02.bea.com (Switch-3.2.5/Switch-3.2.5) with ESMTP id l36H7ZLA021905 for ; Fri, 6 Apr 2007 10:07:35 -0700 X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Subject: RE: Programmatical EntityManagerFactory init Date: Fri, 6 Apr 2007 10:07:37 -0700 Message-ID: <7D856CDFE035FF45A0420ACBD71BDD6303D1F41E@repbex02.amer.bea.com> In-Reply-To: <7a1e4a010704060949o354a95b3k75d5efac9fe5288f@mail.gmail.com> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: Programmatical EntityManagerFactory init Thread-Index: Acd4a6nhiCwtSQnDRTmf2PinbPCJzgAAGsJg References: <7a1e4a010704060446l178262f9m27ab2ae910879f49@mail.gmail.com> <7D856CDFE035FF45A0420ACBD71BDD6303D1F3E9@repbex02.amer.bea.com> <7a1e4a010704060949o354a95b3k75d5efac9fe5288f@mail.gmail.com> From: "Patrick Linskey" To: x-BEA-PMX-Instructions: AV x-BEA-MM: Internal-To-External X-Virus-Checked: Checked by ClamAV on apache.org > Could you (or anyone else) confirm this last point? Your are correct -- when using the Persistence class for bootstrapping, you must provide a name of a persistence unit defined in XML. To create an EMF programmatically in a standards-based way, you should use the classes and interfaces in javax.persistence.spi. Create an implementation of PersistenceUnitInfo (http://java.sun.com/javaee/5/docs/api/javax/persistence/spi/Persistence UnitInfo.html), then instantiate the PersistenceProvider for the implementation of your choice (this is the bit that goes into the tag in the persistence.xml file). So, for OpenJPA, you would create your PersistenceUnitInfo, and then do something like so: PersistenceUnitInfo pui = ...; PersistenceProvider pp = new org.apache.openjpa.persistence.PersistenceProviderImpl(); EntityManagerFactory emf = pp.createEntityManagerFactory("foo", null); The above code assumes that you've configured all your properties in the PersistenceUnitInfo, and so is passing 'null' in as the map parameter to createEntityManagerFactory(). If you don't want to implement the PersistenceUnitInfo interface on your own, you can use OpenJPA's (which is pretty general-purpose, but does have some OpenJPA-specific helper methods in it): PersistenceUnitInfo pui = new org.apache.openjpa.persistence.PersistenceUnitInfoImpl(); pui.setPersistenceUnitName("foo"); pui.setProperty("key", "value"); HTH, -Patrick -- Patrick Linskey BEA Systems, Inc. _______________________________________________________________________ Notice: This email message, together with any attachments, may contain information of BEA Systems, Inc., its subsidiaries and affiliated entities, that may be confidential, proprietary, copyrighted and/or legally privileged, and is intended solely for the use of the individual or entity named in this message. If you are not the intended recipient, and have received this message in error, please immediately return this by email and then delete it. > -----Original Message----- > From: Erwan Le Goulven [mailto:erwan.legoulven@gmail.com] > Sent: Friday, April 06, 2007 9:50 AM > To: open-jpa-dev@incubator.apache.org > Subject: Re: Programmatical EntityManagerFactory init > > Thank you for your time Patrik, > > Actually the persistence.xml used in the META-INF jar in the > CP points to > another persistence unit name. > The thing is -and I may be mistaking about this practice- I want to > programmatically my own persistence units, based on different > name, at run > time, and I dunnot wish do depend on persistence.xml > descriptor to configure > the persistence units I wish to use, because : > -I don't know their number > -I don't know their name > > I thought I could use the Map property provided by the > Persistence api in > order to proceed, but I'm now questionning about its faisability. I've > checked out the source code and noticed the persistence.xml > resource is > searched, whatever property I put in the configuration map. > > Could you (or anyone else) confirm this last point? > > Merci bien > Erwan > 2007/4/6, Patrick Linskey : > > > > > Note : > > > I'm using a persistence.xml for single persitence unit > > > creation, and this > > > test works fine. I've had a dive into the source code, > and found the > > > provider is lookuped and found by the glassfish persistence > > > implementation > > > class. The exception is raised on the open jpa side, and I > > > know I'm missing > > > some configuration elements, but I cannot guess what's missing? > > > any hint? > > > > The only exception that I see in the trace you gave us is > thrown by the > > spec implementation jar. I'm not looking at the source for > that code, > > but my guess would be that the failure is happening because of a > > classpath error, such that OpenJPA is not available in the > classloader > > that is visible to the Persistence class. > > > > Could you post your persistence.xml file and any details > about how your > > classloader structure is set up? > > > > Thanks, > > > > -Patrick > > > > -- > > Patrick Linskey > > BEA Systems, Inc. > > > > > ______________________________________________________________ > _________ > > Notice: This email message, together with any attachments, > may contain > > information of BEA Systems, Inc., its subsidiaries and > affiliated > > entities, that may be confidential, proprietary, > copyrighted and/or > > legally privileged, and is intended solely for the use of > the individual > > or entity named in this message. If you are not the > intended recipient, > > and have received this message in error, please immediately > return this > > by email and then delete it. > > > > > -----Original Message----- > > > From: Erwan Le Goulven [mailto:erwan.legoulven@gmail.com] > > > Sent: Friday, April 06, 2007 4:46 AM > > > To: open-jpa-dev@incubator.apache.org > > > Subject: Programmatical EntityManagerFactory init > > > > > > Messieurs-dames, > > > > > > As I could not find much clues about the right way to do it, > > > here I come: > > > I'm trying to get an EntityManagerFactory properly setup from the > > > Persistence class, but I cannot get further than the > > > following exception > > > > > > javax.persistence.PersistenceException: No Persistence > provider for > > > EntityManager named teamplay_test > > > at javax.persistence.Persistence.createEntityManagerFactory( > > > Persistence.java:89) > > > at > > > com.gdteam.teamplay.domain.manager.TeamplayEMFactoryManager.get( > > > TeamplayEMFactoryManager.java:60) > > > at > com.gdteam.teamplay.test.persistence.PersistenceUtilTest.setUp( > > > PersistenceUtilTest.java:19) > > > at junit.framework.TestCase.runBare(TestCase.java:125) > > > at junit.framework.TestResult$1.protect(TestResult.java:106) > > > at > junit.framework.TestResult.runProtected(TestResult.java:124) > > > at junit.framework.TestResult.run(TestResult.java:109) > > > at junit.framework.TestCase.run(TestCase.java:118) > > > at junit.framework.TestSuite.runTest(TestSuite.java:208) > > > at junit.framework.TestSuite.run(TestSuite.java:203) > > > > > > Here is the code part that leads to the exception: > > > > > > public class TeamplayEMFactoryManager { > > > ... > > > private final Map props = new > > > HashMap(); > > > private final Map map = new > > > HashMap(); > > > ... > > > private TeamplayEMFactoryManager() { > > > props.put("openjpa.ConnectionDriverName", > > > "org.hsqldb.jdbcDriver"); > > > props.put("openjpa.ConnectionUserName", "sa"); > > > props.put("openjpa.ConnectionPassword", ""); > > > props.put("openjpa.Log", "DefaultLevel=WARN, Tool=INFO"); > > > props.put("openjpa.MetaDataFactory", > > > "jpa(Types="+buildTypes()+")"); > > > } > > > > > > .. > > > > > > public EntityManagerFactory get(String url) { > > > > > > EntityManagerFactory factory = null; > > > > > > if (null == url || url.length() == 0 ) { > > > url = "default"; > > > } > > > > > > factory = this.map.get(url); > > > > > > if (null == factory) { > > > if ( "default".equals(url)) { > > > 1- factory = > > > Persistence.createEntityManagerFactory(null); > > > } else { > > > Map map = new HashMap > > String>(props); > > > map.put("openjpa.ConnectionURL", buildUrl(url)); > > > 2- factory = > > > Persistence.createEntityManagerFactory(url,map); > > > } > > > this.map.put(url, factory); > > > } > > > return factory; > > > } > > > ... > > > } > > > > > > > > > Note : > > > I'm using a persistence.xml for single persitence unit > > > creation, and this > > > test works fine. I've had a dive into the source code, > and found the > > > provider is lookuped and found by the glassfish persistence > > > implementation > > > class. The exception is raised on the open jpa side, and I > > > know I'm missing > > > some configuration elements, but I cannot guess what's missing? > > > any hint? > > > > > > thank you guys > > > > > > > Notice: This email message, together with any attachments, > may contain > > information of BEA Systems, Inc., its subsidiaries and > affiliated > > entities, that may be confidential, proprietary, > copyrighted and/or > > legally privileged, and is intended solely for the use of > the individual or > > entity named in this message. If you are not the intended > recipient, and > > have received this message in error, please immediately > return this by email > > and then delete it. > > > Notice: This email message, together with any attachments, may contain information of BEA Systems, Inc., its subsidiaries and affiliated entities, that may be confidential, proprietary, copyrighted and/or legally privileged, and is intended solely for the use of the individual or entity named in this message. If you are not the intended recipient, and have received this message in error, please immediately return this by email and then delete it.