<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<!-- Generated by javadoc (build 1.6.0_01) on Tue Mar 18 12:42:26 PDT 2008 -->
<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<TITLE>
Uses of Interface javax.jdo.PersistenceManagerFactory (JDO2 API 2.1)
</TITLE>

<META NAME="date" CONTENT="2008-03-18">

<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../stylesheet.css" TITLE="Style">

<SCRIPT type="text/javascript">
function windowTitle()
{
    if (location.href.indexOf('is-external=true') == -1) {
        parent.document.title="Uses of Interface javax.jdo.PersistenceManagerFactory (JDO2 API 2.1)";
    }
}
</SCRIPT>
<NOSCRIPT>
</NOSCRIPT>

</HEAD>

<BODY BGCOLOR="white" onload="windowTitle();">
<HR>


<!-- ========= START OF TOP NAVBAR ======= -->
<A NAME="navbar_top"><!-- --></A>
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_top_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../javax/jdo/PersistenceManagerFactory.html" title="interface in javax.jdo"><FONT CLASS="NavBarFont1"><B>Class</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Use</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../index.html?javax/jdo/\class-usePersistenceManagerFactory.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="PersistenceManagerFactory.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;<SCRIPT type="text/javascript">
  <!--
  if(window==top) {
    document.writeln('<A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
  <A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>


</FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_top"></A>
<!-- ========= END OF TOP NAVBAR ========= -->

<HR>
<CENTER>
<H2>
<B>Uses of Interface<br>javax.jdo.PersistenceManagerFactory</B></H2>
</CENTER>

<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
Packages that use <A HREF="../../../javax/jdo/PersistenceManagerFactory.html" title="interface in javax.jdo">PersistenceManagerFactory</A></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><A HREF="#javax.jdo"><B>javax.jdo</B></A></TD>
<TD>This package contains the JDO specification interfaces and classes.&nbsp;</TD>
</TR>
</TABLE>
&nbsp;
<P>
<A NAME="javax.jdo"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
Uses of <A HREF="../../../javax/jdo/PersistenceManagerFactory.html" title="interface in javax.jdo">PersistenceManagerFactory</A> in <A HREF="../../../javax/jdo/package-summary.html">javax.jdo</A></FONT></TH>
</TR>
</TABLE>
&nbsp;
<P>

<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left" COLSPAN="2">Subinterfaces of <A HREF="../../../javax/jdo/PersistenceManagerFactory.html" title="interface in javax.jdo">PersistenceManagerFactory</A> in <A HREF="../../../javax/jdo/package-summary.html">javax.jdo</A></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;interface</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../javax/jdo/JDOEntityManagerFactory.html" title="interface in javax.jdo">JDOEntityManagerFactory</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
</TABLE>
&nbsp;
<P>

<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left" COLSPAN="2">Methods in <A HREF="../../../javax/jdo/package-summary.html">javax.jdo</A> that return <A HREF="../../../javax/jdo/PersistenceManagerFactory.html" title="interface in javax.jdo">PersistenceManagerFactory</A></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../javax/jdo/PersistenceManagerFactory.html" title="interface in javax.jdo">PersistenceManagerFactory</A></CODE></FONT></TD>
<TD><CODE><B>PersistenceManager.</B><B><A HREF="../../../javax/jdo/PersistenceManager.html#getPersistenceManagerFactory()">getPersistenceManagerFactory</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This method returns the <code>PersistenceManagerFactory</code> used to 
 create this <code>PersistenceManager</code>.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;<A HREF="../../../javax/jdo/PersistenceManagerFactory.html" title="interface in javax.jdo">PersistenceManagerFactory</A></CODE></FONT></TD>
<TD><CODE><B>JDOHelper.</B><B><A HREF="../../../javax/jdo/JDOHelper.html#getPersistenceManagerFactory()">getPersistenceManagerFactory</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the anonymous <code>PersistenceManagerFactory</code> configured via
 the standard configuration file resource "META-INF/jdoconfig.xml", using
 the current thread's context class loader
 to locate the configuration file resource(s).</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;<A HREF="../../../javax/jdo/PersistenceManagerFactory.html" title="interface in javax.jdo">PersistenceManagerFactory</A></CODE></FONT></TD>
<TD><CODE><B>JDOHelper.</B><B><A HREF="../../../javax/jdo/JDOHelper.html#getPersistenceManagerFactory(java.lang.ClassLoader)">getPersistenceManagerFactory</A></B>(java.lang.ClassLoader&nbsp;pmfClassLoader)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the anonymous <code>PersistenceManagerFactory</code> configured via
 the standard configuration file resource "META-INF/jdoconfig.xml", using
 the given class loader.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;<A HREF="../../../javax/jdo/PersistenceManagerFactory.html" title="interface in javax.jdo">PersistenceManagerFactory</A></CODE></FONT></TD>
<TD><CODE><B>JDOHelper.</B><B><A HREF="../../../javax/jdo/JDOHelper.html#getPersistenceManagerFactory(java.io.File)">getPersistenceManagerFactory</A></B>(java.io.File&nbsp;propsFile)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a <A HREF="../../../javax/jdo/PersistenceManagerFactory.html" title="interface in javax.jdo"><CODE>PersistenceManagerFactory</CODE></A> configured based
 on the properties stored in the file at
 <code>propsFile</code>.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;<A HREF="../../../javax/jdo/PersistenceManagerFactory.html" title="interface in javax.jdo">PersistenceManagerFactory</A></CODE></FONT></TD>
<TD><CODE><B>JDOHelper.</B><B><A HREF="../../../javax/jdo/JDOHelper.html#getPersistenceManagerFactory(java.io.File, java.lang.ClassLoader)">getPersistenceManagerFactory</A></B>(java.io.File&nbsp;propsFile,
                             java.lang.ClassLoader&nbsp;loader)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a <A HREF="../../../javax/jdo/PersistenceManagerFactory.html" title="interface in javax.jdo"><CODE>PersistenceManagerFactory</CODE></A> configured based
 on the properties stored in the file at
 <code>propsFile</code>.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;<A HREF="../../../javax/jdo/PersistenceManagerFactory.html" title="interface in javax.jdo">PersistenceManagerFactory</A></CODE></FONT></TD>
<TD><CODE><B>JDOHelper.</B><B><A HREF="../../../javax/jdo/JDOHelper.html#getPersistenceManagerFactory(java.io.InputStream)">getPersistenceManagerFactory</A></B>(java.io.InputStream&nbsp;stream)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a <A HREF="../../../javax/jdo/PersistenceManagerFactory.html" title="interface in javax.jdo"><CODE>PersistenceManagerFactory</CODE></A> configured based
 on the Properties stored in the input stream at
 <code>stream</code>.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;<A HREF="../../../javax/jdo/PersistenceManagerFactory.html" title="interface in javax.jdo">PersistenceManagerFactory</A></CODE></FONT></TD>
<TD><CODE><B>JDOHelper.</B><B><A HREF="../../../javax/jdo/JDOHelper.html#getPersistenceManagerFactory(java.io.InputStream, java.lang.ClassLoader)">getPersistenceManagerFactory</A></B>(java.io.InputStream&nbsp;stream,
                             java.lang.ClassLoader&nbsp;loader)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a <A HREF="../../../javax/jdo/PersistenceManagerFactory.html" title="interface in javax.jdo"><CODE>PersistenceManagerFactory</CODE></A> configured based
 on the Properties stored in the input stream at
 <code>stream</code>.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;<A HREF="../../../javax/jdo/PersistenceManagerFactory.html" title="interface in javax.jdo">PersistenceManagerFactory</A></CODE></FONT></TD>
<TD><CODE><B>JDOHelper.</B><B><A HREF="../../../javax/jdo/JDOHelper.html#getPersistenceManagerFactory(java.util.Map)">getPersistenceManagerFactory</A></B>(java.util.Map&nbsp;props)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get a <code>PersistenceManagerFactory</code> based on a <code>Properties</code>
 instance, using the current thread's context class loader to locate the
 <code>PersistenceManagerFactory</code> class.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;<A HREF="../../../javax/jdo/PersistenceManagerFactory.html" title="interface in javax.jdo">PersistenceManagerFactory</A></CODE></FONT></TD>
<TD><CODE><B>JDOHelper.</B><B><A HREF="../../../javax/jdo/JDOHelper.html#getPersistenceManagerFactory(java.util.Map, java.lang.ClassLoader)">getPersistenceManagerFactory</A></B>(java.util.Map&nbsp;props,
                             java.lang.ClassLoader&nbsp;pmfClassLoader)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get a <code>PersistenceManagerFactory</code> based on a 
 <code>Map</code> and a class loader.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected static&nbsp;<A HREF="../../../javax/jdo/PersistenceManagerFactory.html" title="interface in javax.jdo">PersistenceManagerFactory</A></CODE></FONT></TD>
<TD><CODE><B>JDOHelper.</B><B><A HREF="../../../javax/jdo/JDOHelper.html#getPersistenceManagerFactory(java.util.Map, java.util.Map, java.lang.ClassLoader)">getPersistenceManagerFactory</A></B>(java.util.Map&nbsp;overrides,
                             java.util.Map&nbsp;props,
                             java.lang.ClassLoader&nbsp;pmfClassLoader)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get a <code>PersistenceManagerFactory</code> based on a 
 <code>Map</code> of overrides, a <code>Map</code> of 
 properties, and a class loader.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;<A HREF="../../../javax/jdo/PersistenceManagerFactory.html" title="interface in javax.jdo">PersistenceManagerFactory</A></CODE></FONT></TD>
<TD><CODE><B>JDOHelper.</B><B><A HREF="../../../javax/jdo/JDOHelper.html#getPersistenceManagerFactory(java.util.Map, java.lang.String)">getPersistenceManagerFactory</A></B>(java.util.Map&nbsp;overrides,
                             java.lang.String&nbsp;name)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a named <A HREF="../../../javax/jdo/PersistenceManagerFactory.html" title="interface in javax.jdo"><CODE>PersistenceManagerFactory</CODE></A> or persistence
 unit.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;<A HREF="../../../javax/jdo/PersistenceManagerFactory.html" title="interface in javax.jdo">PersistenceManagerFactory</A></CODE></FONT></TD>
<TD><CODE><B>JDOHelper.</B><B><A HREF="../../../javax/jdo/JDOHelper.html#getPersistenceManagerFactory(java.util.Map, java.lang.String, java.lang.ClassLoader)">getPersistenceManagerFactory</A></B>(java.util.Map&nbsp;overrides,
                             java.lang.String&nbsp;name,
                             java.lang.ClassLoader&nbsp;resourceLoader)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a named <A HREF="../../../javax/jdo/PersistenceManagerFactory.html" title="interface in javax.jdo"><CODE>PersistenceManagerFactory</CODE></A> or persistence
 unit.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;<A HREF="../../../javax/jdo/PersistenceManagerFactory.html" title="interface in javax.jdo">PersistenceManagerFactory</A></CODE></FONT></TD>
<TD><CODE><B>JDOHelper.</B><B><A HREF="../../../javax/jdo/JDOHelper.html#getPersistenceManagerFactory(java.util.Map, java.lang.String, java.lang.ClassLoader, java.lang.ClassLoader)">getPersistenceManagerFactory</A></B>(java.util.Map&nbsp;overrides,
                             java.lang.String&nbsp;name,
                             java.lang.ClassLoader&nbsp;resourceLoader,
                             java.lang.ClassLoader&nbsp;pmfLoader)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a <A HREF="../../../javax/jdo/PersistenceManagerFactory.html" title="interface in javax.jdo"><CODE>PersistenceManagerFactory</CODE></A> configured based
 on the properties stored in the resource at
 <code>name</code>, or, if not found, returns a
 <A HREF="../../../javax/jdo/PersistenceManagerFactory.html" title="interface in javax.jdo"><CODE>PersistenceManagerFactory</CODE></A> with the given
 name or, if not found, returns a
 <code>javax.persistence.EntityManagerFactory</code> cast to a
 <A HREF="../../../javax/jdo/PersistenceManagerFactory.html" title="interface in javax.jdo"><CODE>PersistenceManagerFactory</CODE></A>.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;<A HREF="../../../javax/jdo/PersistenceManagerFactory.html" title="interface in javax.jdo">PersistenceManagerFactory</A></CODE></FONT></TD>
<TD><CODE><B>JDOHelper.</B><B><A HREF="../../../javax/jdo/JDOHelper.html#getPersistenceManagerFactory(java.lang.String)">getPersistenceManagerFactory</A></B>(java.lang.String&nbsp;name)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a named <A HREF="../../../javax/jdo/PersistenceManagerFactory.html" title="interface in javax.jdo"><CODE>PersistenceManagerFactory</CODE></A> or persistence
 unit.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;<A HREF="../../../javax/jdo/PersistenceManagerFactory.html" title="interface in javax.jdo">PersistenceManagerFactory</A></CODE></FONT></TD>
<TD><CODE><B>JDOHelper.</B><B><A HREF="../../../javax/jdo/JDOHelper.html#getPersistenceManagerFactory(java.lang.String, java.lang.ClassLoader)">getPersistenceManagerFactory</A></B>(java.lang.String&nbsp;name,
                             java.lang.ClassLoader&nbsp;loader)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a named <A HREF="../../../javax/jdo/PersistenceManagerFactory.html" title="interface in javax.jdo"><CODE>PersistenceManagerFactory</CODE></A> or persistence
 unit.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;<A HREF="../../../javax/jdo/PersistenceManagerFactory.html" title="interface in javax.jdo">PersistenceManagerFactory</A></CODE></FONT></TD>
<TD><CODE><B>JDOHelper.</B><B><A HREF="../../../javax/jdo/JDOHelper.html#getPersistenceManagerFactory(java.lang.String, java.lang.ClassLoader, java.lang.ClassLoader)">getPersistenceManagerFactory</A></B>(java.lang.String&nbsp;name,
                             java.lang.ClassLoader&nbsp;resourceLoader,
                             java.lang.ClassLoader&nbsp;pmfLoader)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a named <A HREF="../../../javax/jdo/PersistenceManagerFactory.html" title="interface in javax.jdo"><CODE>PersistenceManagerFactory</CODE></A> or persistence
 unit.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;<A HREF="../../../javax/jdo/PersistenceManagerFactory.html" title="interface in javax.jdo">PersistenceManagerFactory</A></CODE></FONT></TD>
<TD><CODE><B>JDOHelper.</B><B><A HREF="../../../javax/jdo/JDOHelper.html#getPersistenceManagerFactory(java.lang.String, javax.naming.Context)">getPersistenceManagerFactory</A></B>(java.lang.String&nbsp;jndiLocation,
                             javax.naming.Context&nbsp;context)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a <A HREF="../../../javax/jdo/PersistenceManagerFactory.html" title="interface in javax.jdo"><CODE>PersistenceManagerFactory</CODE></A> at the JNDI
 location specified by <code>jndiLocation</code> in the context
 <code>context</code>.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;<A HREF="../../../javax/jdo/PersistenceManagerFactory.html" title="interface in javax.jdo">PersistenceManagerFactory</A></CODE></FONT></TD>
<TD><CODE><B>JDOHelper.</B><B><A HREF="../../../javax/jdo/JDOHelper.html#getPersistenceManagerFactory(java.lang.String, javax.naming.Context, java.lang.ClassLoader)">getPersistenceManagerFactory</A></B>(java.lang.String&nbsp;jndiLocation,
                             javax.naming.Context&nbsp;context,
                             java.lang.ClassLoader&nbsp;loader)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a <A HREF="../../../javax/jdo/PersistenceManagerFactory.html" title="interface in javax.jdo"><CODE>PersistenceManagerFactory</CODE></A> at the JNDI
 location specified by <code>jndiLocation</code> in the context
 <code>context</code>.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected static&nbsp;<A HREF="../../../javax/jdo/PersistenceManagerFactory.html" title="interface in javax.jdo">PersistenceManagerFactory</A></CODE></FONT></TD>
<TD><CODE><B>JDOHelper.</B><B><A HREF="../../../javax/jdo/JDOHelper.html#invokeGetPersistenceManagerFactoryOnImplementation(java.lang.String, java.util.Map, java.util.Map, java.lang.ClassLoader)">invokeGetPersistenceManagerFactoryOnImplementation</A></B>(java.lang.String&nbsp;pmfClassName,
                                                   java.util.Map&nbsp;overrides,
                                                   java.util.Map&nbsp;properties,
                                                   java.lang.ClassLoader&nbsp;cl)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Invoke the getPersistenceManagerFactory method on the implementation.</TD>
</TR>
</TABLE>
&nbsp;
<P>
<HR>


<!-- ======= START OF BOTTOM NAVBAR ====== -->
<A NAME="navbar_bottom"><!-- --></A>
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../javax/jdo/PersistenceManagerFactory.html" title="interface in javax.jdo"><FONT CLASS="NavBarFont1"><B>Class</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Use</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../index.html?javax/jdo/\class-usePersistenceManagerFactory.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="PersistenceManagerFactory.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;<SCRIPT type="text/javascript">
  <!--
  if(window==top) {
    document.writeln('<A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
  <A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>


</FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_bottom"></A>
<!-- ======== END OF BOTTOM NAVBAR ======= -->

<HR>
Copyright &copy; 2005-2008 Apache Software Foundation. All Rights Reserved.
</BODY>
</HTML>
