Sascha, We have branch jackrabbit20100709 in svn. Can't we use that one?
Regards, Pierre Op 26 april 2012 15:58 schreef Sascha Rodekamp < sascha.rodekamp.lynx...@googlemail.com> het volgende: > Hi Pierre, > the last patch had no functional changes. It just prepares the > repository loading for the following changes. > > That the nt:unstructured node is not found seems do be another issue. > I will check that. > > For further implementations we definitely should create a new branch. > But before creating it i wanted to clean up some code parts. By the > end of this week (tomorrow) i will create one, is this ok for you? > > Thanks and regards, > Sascha > > > 2012/4/26 Pierre Smits <pierre.sm...@gmail.com>: > > Sascha, > > > > I did a small test against this revision. > > > > Creating content in jcr works ok, but is still visible to other tenants. > > > > Upload of a file triggered following: > > > > The Following Errors Occurred: > > > > Error calling event: org.ofbiz.webapp.event.EventHandlerException: > Problems > > processing event: > > org.apache.jackrabbit.ocm.exception.IncorrectPersistentClassException: > Node > > type: nt:unstructured has no descriptor. (Node type: nt:unstructured has > no > > descriptor.) > > > > Although the previous situation wasn't perfect, maybe we should implement > > and test first in the jcr branch before bringing it to trunk. > > > > Regards, > > > > Pierre > > > > Op 26 april 2012 13:18 schreef <sascharodek...@apache.org> het volgende: > > > >> Author: sascharodekamp > >> Date: Thu Apr 26 11:18:51 2012 > >> New Revision: 1330779 > >> > >> URL: http://svn.apache.org/viewvc?rev=1330779&view=rev > >> Log: > >> Clean Up the repository loding code. No functional changes. > >> > >> Added: > >> ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/JCRJndi.java > (with > >> props) > >> Modified: > >> ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/JCRContainer.java > >> ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/JCRFactory.java > >> > ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/JCRFactoryUtil.java > >> > >> > ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/RepositoryFactory.java > >> > ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/RepositoryLoader.java > >> > >> > > ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/jackrabbit/JCRFactoryImpl.java > >> > >> Modified: > >> ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/JCRContainer.java > >> URL: > >> > http://svn.apache.org/viewvc/ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/JCRContainer.java?rev=1330779&r1=1330778&r2=1330779&view=diff > >> > >> > ============================================================================== > >> --- ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/JCRContainer.java > >> (original) > >> +++ ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/JCRContainer.java > >> Thu Apr 26 11:18:51 2012 > >> @@ -18,20 +18,13 @@ > >> > >> > > *******************************************************************************/ > >> package org.ofbiz.jcr.loader; > >> > >> -import javax.jcr.Repository; > >> import javax.jcr.RepositoryException; > >> -import javax.naming.Context; > >> -import javax.naming.NamingException; > >> -import javax.naming.Reference; > >> -import javax.naming.StringRefAddr; > >> > >> import org.ofbiz.base.config.GenericConfigException; > >> import org.ofbiz.base.config.ResourceLoader; > >> import org.ofbiz.base.container.Container; > >> import org.ofbiz.base.container.ContainerConfig; > >> import org.ofbiz.base.container.ContainerException; > >> -import org.ofbiz.base.util.Debug; > >> -import org.ofbiz.base.util.JNDIContextFactory; > >> import org.ofbiz.base.util.UtilXml; > >> import org.w3c.dom.Element; > >> > >> @@ -44,18 +37,9 @@ public class JCRContainer implements Con > >> public static final String module = JCRContainer.class.getName(); > >> > >> public static final String DEFAULT_JCR_CONFIG_PATH = > >> "framework/jcr/config/jcr-config.xml"; > >> - public static final String REP_HOME_DIR = "0"; > >> - public static final String CONFIG_FILE_PATH = "1"; > >> - > >> - private static String jndiName = null; > >> - private static String factoryClassName = null; > >> - private static String jcrContextName = null; > >> > >> private static String configFilePath = null; > >> private boolean removeRepositoryOnShutdown = false; > >> - private String homeDir = null; > >> - > >> - Context jndiContext = null; > >> > >> /* > >> * (non-Javadoc) > >> @@ -65,52 +49,12 @@ public class JCRContainer implements Con > >> */ > >> @Override > >> public void init(String[] args, String configFile) throws > >> ContainerException { > >> - // get the container configuration > >> - ContainerConfig.Container cc = > >> ContainerConfig.getContainer("jcr-container", configFile); > >> - if (cc == null) { > >> - throw new ContainerException("No jcr-container > configuration > >> found in container config!"); > >> - } > >> - > >> - // embedded properties > >> - removeRepositoryOnShutdown = > ContainerConfig.getPropertyValue(cc, > >> "removeRepositoryOnShutdown", false); > >> - configFilePath = ContainerConfig.getPropertyValue(cc, > >> "configFilePath", DEFAULT_JCR_CONFIG_PATH); > >> - > >> - Element configRootElement = null; > >> - try { > >> - configRootElement = > >> ResourceLoader.getXmlRootElement(configFilePath); > >> - } catch (GenericConfigException e) { > >> - throw new ContainerException("Could not load the jcr > >> configuration in file " + configFilePath, e); > >> - } > >> - > >> - if (configRootElement == null) { > >> - throw new ContainerException("No jcr configuration found in > >> file " + configFilePath); > >> - } > >> - > >> - homeDir = UtilXml.childElementAttribute(configRootElement, > >> "home-dir", "path", "runtime/data/jcr/"); > >> - Element childElement = > >> UtilXml.firstChildElement(configRootElement, "jcr-context"); > >> - jcrContextName = UtilXml.elementAttribute(childElement, "name", > >> "default"); > >> + readContainerConfig(configFile); > >> > >> - // find the default JCR implementation > >> - for (Element curElement : > >> UtilXml.childElementList(configRootElement, "jcr")) { > >> - if > (jcrContextName.equals(curElement.getAttribute("name"))) { > >> - factoryClassName = curElement.getAttribute("class"); > >> - jndiName = curElement.getAttribute("jndi-name"); > >> - break; > >> - } > >> - } > >> - > >> - // get the default JCR factory > >> - JCRFactory jcrFactory = JCRFactoryUtil.getJCRFactory(); > >> - > >> - if (jcrFactory == null) { > >> - throw new ContainerException("Cannot load JCRFactory > >> implementation class"); > >> - } > >> + Element configRootElement = getConfigFileRootElement(); > >> > >> - try { > >> - jcrFactory.initialize(configRootElement); > >> - } catch (RepositoryException e) { > >> - throw new ContainerException("Cannot initialize JCRFactory > >> context", e); > >> - } > >> + Element factoryImplDefinition = > >> getJcrFactoryImplementationClassName(configRootElement); > >> + initializeJcrFactory(configRootElement, factoryImplDefinition); > >> } > >> > >> /* > >> @@ -120,10 +64,7 @@ public class JCRContainer implements Con > >> */ > >> @Override > >> public boolean start() throws ContainerException { > >> - JCRFactory jcrFactory = JCRFactoryUtil.getJCRFactory(); > >> - if (jcrFactory == null) { > >> - throw new ContainerException("Cannot load JCRFactory > >> implementation class"); > >> - } > >> + JCRFactory jcrFactory = getJCRFactory(); > >> > >> try { > >> jcrFactory.start(); > >> @@ -131,17 +72,6 @@ public class JCRContainer implements Con > >> throw new ContainerException("Cannot start JCRFactory > >> context", e); > >> } > >> > >> - // get JNDI context > >> - try { > >> - jndiContext = > >> JNDIContextFactory.getInitialContext("localjndi"); > >> - } catch (GenericConfigException e) { > >> - Debug.logError(e, module); > >> - } > >> - > >> - bindRepository(); > >> - // Test JNDI bind > >> - RepositoryLoader.getRepository(); > >> - > >> return true; > >> } > >> > >> @@ -152,10 +82,7 @@ public class JCRContainer implements Con > >> */ > >> @Override > >> public void stop() throws ContainerException { > >> - JCRFactory jcrFactory = JCRFactoryUtil.getJCRFactory(); > >> - if (jcrFactory == null) { > >> - throw new ContainerException("Cannot load JCRFactory > >> implementation class"); > >> - } > >> + JCRFactory jcrFactory = getJCRFactory(); > >> > >> try { > >> jcrFactory.stop(removeRepositoryOnShutdown); > >> @@ -164,40 +91,67 @@ public class JCRContainer implements Con > >> } > >> } > >> > >> - /** > >> - * returns the class name of the JCRFactory implementation > >> - * > >> - * @return > >> - */ > >> - public static String getFactoryClassName() { > >> - return factoryClassName; > >> - } > >> > >> public static String getConfigFilePath() { > >> return configFilePath; > >> } > >> > >> - protected void bindRepository() { > >> - if (this.jndiContext != null) { > >> - try { > >> - Reference ref = new > Reference(Repository.class.getName(), > >> org.ofbiz.jcr.loader.RepositoryFactory.class.getName(), null); > >> - ref.add(new StringRefAddr(REP_HOME_DIR, homeDir)); > >> - ref.add(new StringRefAddr(CONFIG_FILE_PATH, > >> configFilePath)); > >> - this.jndiContext.bind(jndiName, ref); > >> - Debug.logInfo("Repository bound to JNDI as " + > jndiName, > >> module); > >> - } catch (NamingException ne) { > >> - Debug.logError(ne, module); > >> - } > >> + private void readContainerConfig(String configFile) throws > >> ContainerException { > >> + // get the container configuration > >> + ContainerConfig.Container cc = > >> ContainerConfig.getContainer("jcr-container", configFile); > >> + if (cc == null) { > >> + throw new ContainerException("No jcr-container > configuration > >> found in container config!"); > >> } > >> + > >> + // embedded properties > >> + removeRepositoryOnShutdown = > ContainerConfig.getPropertyValue(cc, > >> "removeRepositoryOnShutdown", false); > >> + configFilePath = ContainerConfig.getPropertyValue(cc, > >> "configFilePath", DEFAULT_JCR_CONFIG_PATH); > >> } > >> > >> - protected void unbindRepository(String name) { > >> - if (this.jndiContext != null) { > >> - try { > >> - this.jndiContext.unbind(jndiName); > >> - } catch (NamingException e) { > >> - Debug.logError(e, module); > >> + private Element getConfigFileRootElement() throws > ContainerException { > >> + Element configRootElement = null; > >> + try { > >> + configRootElement = > >> ResourceLoader.getXmlRootElement(configFilePath); > >> + } catch (GenericConfigException e) { > >> + throw new ContainerException("Could not load the jcr > >> configuration in file " + configFilePath, e); > >> + } > >> + > >> + if (configRootElement == null) { > >> + throw new ContainerException("No jcr configuration found in > >> file " + configFilePath); > >> + } > >> + return configRootElement; > >> + } > >> + > >> + private Element getJcrFactoryImplementationClassName(Element > >> configRootElement) { > >> + Element childElement = > >> UtilXml.firstChildElement(configRootElement, "jcr-context"); > >> + String jcrContextName = UtilXml.elementAttribute(childElement, > >> "name", "default"); > >> + > >> + // find the default JCR implementation > >> + for (Element curElement : > >> UtilXml.childElementList(configRootElement, "jcr")) { > >> + if > (jcrContextName.equals(curElement.getAttribute("name"))) { > >> + return curElement; > >> } > >> } > >> + > >> + return null; > >> + } > >> + > >> + private void initializeJcrFactory(Element configRootElement, > Element > >> factoryImplDefinition) throws ContainerException { > >> + > >> > > JCRFactoryUtil.setJcrFactoryClassName(factoryImplDefinition.getAttribute("class")); > >> + JCRFactory jcrFactory = getJCRFactory(); > >> + > >> + try { > >> + jcrFactory.initialize(configRootElement, > >> factoryImplDefinition); > >> + } catch (RepositoryException e) { > >> + throw new ContainerException("Cannot initialize JCRFactory > >> context", e); > >> + } > >> + } > >> + > >> + private JCRFactory getJCRFactory() throws ContainerException { > >> + JCRFactory jcrFactory = JCRFactoryUtil.getJCRFactory(); > >> + if (jcrFactory == null) { > >> + throw new ContainerException("Cannot load JCRFactory > >> implementation class"); > >> + } > >> + return jcrFactory; > >> } > >> } > >> > >> Modified: > >> ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/JCRFactory.java > >> URL: > >> > http://svn.apache.org/viewvc/ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/JCRFactory.java?rev=1330779&r1=1330778&r2=1330779&view=diff > >> > >> > ============================================================================== > >> --- ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/JCRFactory.java > >> (original) > >> +++ ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/JCRFactory.java > Thu > >> Apr 26 11:18:51 2012 > >> @@ -29,9 +29,10 @@ public interface JCRFactory { > >> /** > >> * > >> * @param configRootElement > >> + * @param factoryImplDefinition > >> * @throws RepositoryException > >> */ > >> - public void initialize(Element configRootElement) throws > >> RepositoryException; > >> + public void initialize(Element configRootElement, Element > >> factoryImplDefinition) throws RepositoryException; > >> > >> /** > >> * > >> > >> Modified: > >> ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/JCRFactoryUtil.java > >> URL: > >> > http://svn.apache.org/viewvc/ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/JCRFactoryUtil.java?rev=1330779&r1=1330778&r2=1330779&view=diff > >> > >> > ============================================================================== > >> --- > ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/JCRFactoryUtil.java > >> (original) > >> +++ > ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/JCRFactoryUtil.java > >> Thu Apr 26 11:18:51 2012 > >> @@ -28,7 +28,8 @@ public class JCRFactoryUtil { > >> > >> public static final String module = JCRFactoryUtil.class.getName(); > >> > >> - private static JCRFactory jcrFactory = null; > >> + private static JCRFactory jcrFactory; > >> + private static String jcrFactoryName; > >> > >> /** > >> * > >> @@ -43,7 +44,7 @@ public class JCRFactoryUtil { > >> ClassLoader loader = > >> Thread.currentThread().getContextClassLoader(); > >> Class<?> c; > >> try { > >> - c = > >> loader.loadClass(JCRContainer.getFactoryClassName()); > >> + c = loader.loadClass(jcrFactoryName); > >> jcrFactory = (JCRFactory) c.newInstance(); > >> } catch (ClassNotFoundException e) { > >> Debug.logError(e, "Cannot get instance of the > jcr > >> implementation", module); > >> @@ -70,4 +71,8 @@ public class JCRFactoryUtil { > >> > >> return session; > >> } > >> + > >> + public static void setJcrFactoryClassName(String > jcrFactoryClassName) > >> { > >> + jcrFactoryName = jcrFactoryClassName; > >> + } > >> } > >> > >> Added: ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/JCRJndi.java > >> URL: > >> > http://svn.apache.org/viewvc/ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/JCRJndi.java?rev=1330779&view=auto > >> > >> > ============================================================================== > >> --- ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/JCRJndi.java > (added) > >> +++ ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/JCRJndi.java Thu > >> Apr 26 11:18:51 2012 > >> @@ -0,0 +1,70 @@ > >> +package org.ofbiz.jcr.loader; > >> + > >> +import javax.jcr.Repository; > >> +import javax.naming.InitialContext; > >> +import javax.naming.NamingException; > >> +import javax.naming.Reference; > >> +import javax.naming.StringRefAddr; > >> + > >> +import org.ofbiz.base.config.GenericConfigException; > >> +import org.ofbiz.base.util.Debug; > >> +import org.ofbiz.base.util.JNDIContextFactory; > >> + > >> +public class JCRJndi { > >> + > >> + public static final String module = JCRJndi.class.getName(); > >> + > >> + public final static String ADDR_TYPE_FOR_REPOSITORY_HOME_DIR = > >> "REPHOME"; > >> + public final String ADDR_TYPE_FOR_CONFIG_FILE_PATH = "CONFPATH"; > >> + > >> + private final String jndiName; > >> + private final String configFilePath; > >> + private final String repositoryHomeDir; > >> + > >> + public JCRJndi(String configFilePath, String jndiName, String > >> repositoryHomeDir) { > >> + this.configFilePath = configFilePath; > >> + this.jndiName = jndiName; > >> + this.repositoryHomeDir = repositoryHomeDir; > >> + } > >> + > >> + public void registerJcrToJndi() { > >> + InitialContext jndiContext = null; > >> + > >> + try { > >> + jndiContext = getInitialContext(); > >> + } catch (GenericConfigException e) { > >> + Debug.logError(e, module); > >> + } > >> + > >> + bindRepository(jndiContext); > >> + // Test JNDI bind > >> + RepositoryLoader.getRepository(); > >> + } > >> + > >> + public void unbindRepository() { > >> + try { > >> + InitialContext jndiContext = getInitialContext(); > >> + jndiContext.unbind(jndiName); > >> + } catch (NamingException e) { > >> + Debug.logError(e, module); > >> + } catch (GenericConfigException e) { > >> + Debug.logError(e, module); > >> + } > >> + } > >> + > >> + private InitialContext getInitialContext() throws > >> GenericConfigException { > >> + return JNDIContextFactory.getInitialContext("default"); > >> + } > >> + > >> + private void bindRepository(InitialContext jndiContext) { > >> + try { > >> + Reference ref = new Reference(Repository.class.getName(), > >> org.ofbiz.jcr.loader.RepositoryFactory.class.getName(), null); > >> + ref.add(new > StringRefAddr(ADDR_TYPE_FOR_REPOSITORY_HOME_DIR, > >> repositoryHomeDir)); > >> + ref.add(new StringRefAddr(ADDR_TYPE_FOR_CONFIG_FILE_PATH, > >> configFilePath)); > >> + jndiContext.bind(jndiName, ref); > >> + Debug.logInfo("Repository bound to JNDI as " + jndiName, > >> module); > >> + } catch (NamingException ne) { > >> + Debug.logError(ne, module); > >> + } > >> + } > >> +} > >> > >> Propchange: > ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/JCRJndi.java > >> > >> > ------------------------------------------------------------------------------ > >> svn:mime-type = text/plain > >> > >> Modified: > >> > ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/RepositoryFactory.java > >> URL: > >> > http://svn.apache.org/viewvc/ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/RepositoryFactory.java?rev=1330779&r1=1330778&r2=1330779&view=diff > >> > >> > ============================================================================== > >> --- > >> > ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/RepositoryFactory.java > >> (original) > >> +++ > >> > ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/RepositoryFactory.java > >> Thu Apr 26 11:18:51 2012 > >> @@ -22,15 +22,15 @@ public class RepositoryFactory implement > >> synchronized (cache) { > >> Object instance = cache.get(obj); > >> if (instance == null && obj instanceof Reference) { > >> - Reference ref = (Reference) obj; > >> - String repHomeDir = > >> ref.get(JCRContainer.REP_HOME_DIR).getContent().toString(); > >> + Reference reference = (Reference) obj; > >> + String repHomeDir = > >> > reference.get(JCRJndi.ADDR_TYPE_FOR_REPOSITORY_HOME_DIR).getContent().toString(); > >> // check if the repository is already started, than use > it > >> // otherwise create it > >> File lock = new File(repHomeDir); > >> if (lock.exists()) { > >> instance = > >> JcrUtils.getRepository(lock.toURI().toString()); > >> } else { > >> - instance = new > >> > TransientRepository(ref.get(JCRContainer.DEFAULT_JCR_CONFIG_PATH).getContent().toString(), > >> repHomeDir); > >> + instance = new > >> > TransientRepository(reference.get(JCRContainer.DEFAULT_JCR_CONFIG_PATH).getContent().toString(), > >> repHomeDir); > >> } > >> > >> cache.put(obj, instance); > >> > >> Modified: > >> ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/RepositoryLoader.java > >> URL: > >> > http://svn.apache.org/viewvc/ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/RepositoryLoader.java?rev=1330779&r1=1330778&r2=1330779&view=diff > >> > >> > ============================================================================== > >> --- > >> ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/RepositoryLoader.java > >> (original) > >> +++ > >> ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/RepositoryLoader.java > >> Thu Apr 26 11:18:51 2012 > >> @@ -71,7 +71,7 @@ public class RepositoryLoader { > >> String jndiName = curElement.getAttribute("jndi-name"); > >> if (UtilValidate.isNotEmpty(jndiName)) { > >> try { > >> - repos.put(name, (Repository) > >> JNDIContextFactory.getInitialContext("localjndi").lookup(jndiName)); > >> + repos.put(name, (Repository) > >> JNDIContextFactory.getInitialContext("default").lookup(jndiName)); > >> } catch (NamingException e) { > >> Debug.logError(e, module); > >> } catch (GenericConfigException e) { > >> > >> Modified: > >> > ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/jackrabbit/JCRFactoryImpl.java > >> URL: > >> > http://svn.apache.org/viewvc/ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/jackrabbit/JCRFactoryImpl.java?rev=1330779&r1=1330778&r2=1330779&view=diff > >> > >> > ============================================================================== > >> --- > >> > ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/jackrabbit/JCRFactoryImpl.java > >> (original) > >> +++ > >> > ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/jackrabbit/JCRFactoryImpl.java > >> Thu Apr 26 11:18:51 2012 > >> @@ -47,7 +47,9 @@ import org.apache.jackrabbit.spi.QNodeTy > >> import org.ofbiz.base.util.Debug; > >> import org.ofbiz.base.util.UtilValidate; > >> import org.ofbiz.base.util.UtilXml; > >> +import org.ofbiz.entity.Delegator; > >> import org.ofbiz.jcr.loader.JCRFactory; > >> +import org.ofbiz.jcr.loader.JCRJndi; > >> import org.ofbiz.jcr.orm.jackrabbit.data.JackrabbitArticle; > >> import org.ofbiz.jcr.orm.jackrabbit.file.JackrabbitFile; > >> import org.ofbiz.jcr.orm.jackrabbit.file.JackrabbitFolder; > >> @@ -71,21 +73,28 @@ public class JCRFactoryImpl implements J > >> > >> protected static Repository repository = null; > >> protected Session session = null; > >> + > >> protected static Mapper mapper = null; > >> > >> + private JCRJndi jndi; > >> + > >> /* > >> * (non-Javadoc) > >> * > >> * @see org.ofbiz.jcr.JCRFactory#initialize(org.w3c.dom.Element) > >> */ > >> @Override > >> - public void initialize(Element configRootElement) throws > >> RepositoryException { > >> + public void initialize(Element configRootElement, Element > >> factoryImplDefinition) throws RepositoryException { > >> + homeDir = UtilXml.childElementAttribute(configRootElement, > >> "home-dir", "path", "runtime/data/jcr/"); > >> + String factoryJndiName = > >> factoryImplDefinition.getAttribute("jndi-name"); > >> + > >> + jndi = new JCRJndi(jackrabbitConfigFile, factoryJndiName, > >> homeDir); > >> + > >> Element childElement = > >> UtilXml.firstChildElement(configRootElement, "jcr-credentials"); > >> CREDENTIALS_USERNAME = UtilXml.elementAttribute(childElement, > >> "username", null); > >> CREDENTIALS_PASSWORD = UtilXml.elementAttribute(childElement, > >> "password", null).toCharArray(); > >> > >> jackrabbitConfigFile = > >> UtilXml.childElementAttribute(configRootElement, "config-file-path", > >> "path", "framework/jcr/config/jackrabbit.xml"); > >> - homeDir = UtilXml.childElementAttribute(configRootElement, > >> "home-dir", "path", "runtime/data/jcr/"); > >> } > >> > >> /* > >> @@ -113,6 +122,8 @@ public class JCRFactoryImpl implements J > >> classes.add(JackrabbitArticle.class); > >> > >> mapper = new AnnotationMapperImpl(classes); > >> + > >> + jndi.registerJcrToJndi(); > >> } > >> > >> /* > >> @@ -136,6 +147,8 @@ public class JCRFactoryImpl implements J > >> } > >> } > >> } > >> + > >> + jndi.unbindRepository(); > >> } > >> > >> /* > >> @@ -186,7 +199,7 @@ public class JCRFactoryImpl implements J > >> /* > >> * Register some new node types > >> */ > >> - protected void registerNodeTypes(Session session) throws > >> InvalidNodeTypeDefException, javax.jcr.RepositoryException, IOException > { > >> + private void registerNodeTypes(Session session) throws > >> InvalidNodeTypeDefException, javax.jcr.RepositoryException, IOException > { > >> InputStream xml = new FileInputStream(CUSTOM_NODE_TYPES); > >> > >> // HINT: throws InvalidNodeTypeDefException, IOException > >> > >> > >> > > > > -- > > Sascha Rodekamp > Visit the new german OFBiz Blog: http://www.ofbiz.biz > Lynx-Consulting GmbH > Johanniskirchplatz 6 > D-33615 Bielefeld > http://www.lynx.de >