Do you have any indexes enabled? Todd
[EMAIL PROTECTED] wrote: > Hello, > > Thank you for the reply. I should have included my java memory settings > in my previous post. I'm already running tomcat with the following > settings: > CATALINA_OPTS="-Xms128m -Xmx512m" > > I'm did some more experiments, and while I get the failure from the > getResource() call, I am able to call listResources(), and see that the > resource name that I'm trying to access. Sometimes even after I do a > successful listResources(), I still get the getResource() failure. > > Thanks again for the help, > -Nate > > >>I want to say I have ran into this before I would try increasing your >>memory in your Tomcat. If that doesn't fix the problem let me know and I >>can look into it deeper. >> >>Add this >> >>JAVA_OPTS="$JAVA_OPTS -Xmx512m" >> >>To the the top of catalina.sh >> >>Todd >> >>[EMAIL PROTECTED] wrote: >> >>>Hello, >>> >>>I searched around these mail archives for posts about >>>NullPointerExceptions, but I wasn't able to find a solution to my >>>problem >>>below. Any advice on how to find a solution would be greatly >>>appreciated. >>> >>>Here is the message I receive from XMLDBException.GetMessage() call: >>> Failed to execute command 'GetResource' on server: >>>http://localhost:8080/xindice/, message: java.lang.Exception: >>>java.lang.NullPointerException >>> >>>I'm using the following versions: >>> Xindice: 1.1b4 >>> Tomcat: 5.0.25 >>> JVM: 1.4.2_01-b06 >>> OS: Linux 2.4.18-14 >>> >>>Here is the sequence that causes this error: >>> 1. User updates web form and post to my Servlet >>> 2. My servlet does a GetResource() to pull the current version of the >>>XML data. >>> 3. My servlet updates the XML data. >>> 4. My servlet does a createResource() and storeResource() to update >>>the >>>XML data back into Xindice. >>> 5. ... later user repeats steps 1 to 4. >>> >>>Each time the user updates the form to Add/Update/Delete data. About >>>one >>>in every ten cycles the NullPointException will be thrown when I perform >>>the GetResource(). I tried having my code sleep for 2 seconds after the >>>first GetResource() failed and then retry to call, but that only solves >>>the problem once in awhile. >>> >>>My XML data is usually somewhere in the 5 - 200 Kb range. A posting >>>said >>>a storeResource should take about 3ms/KB, so I thought sleeping for 2 >>>seconds should have been enough delay for any of my files. >>> >>>Thanks for the help, >>>-Nate >>> >>>Here is some code snippets. I create a singleton that owns this class, >>>so >>>there is only one of these (currently). Therefore EnableDatabase() is >>>only executed once the first time that object is used. >>> >>> >>>/* >>> * XindiceGateway.java >>> * >>> * Created on August 25, 2004, 9:31 PM >>> */ >>> >>>package org.test.gateways; >>> >>>import java.util.Vector; >>>import org.apache.log4j.Logger; >>>import org.apache.xindice.client.xmldb.services.CollectionManager; >>>import org.apache.xindice.xml.dom.DOMParser; >>>import org.test.commands.DatabaseCommand; >>>import org.w3c.dom.Node; >>> >>>import org.xmldb.api.base.*; >>>import org.xmldb.api.modules.*; >>>import org.xmldb.api.*; >>> >>> >>>/** >>> * >>> * @author stoddarn >>> */ >>>public class XindiceGateway >>>{ >>> // Log4j Logger >>> static Logger m_logger = Logger.getLogger(XindiceGateway.class); >>> >>> // Static mutex on the database >>> static String m_databaseMutex = new String ("mutex"); >>> >>> private boolean m_databaseRegistered = false; >>> >>> // Static XINDICE data >>> private static String XINDICE_DB_DRIVER = new >>>String("org.apache.xindice.client.xmldb.DatabaseImpl"); >>> >>> // The root to the database >>> private static String XINDICE_DB_ROOT = new >>>String("xmldb:xindice://localhost:8080/db/"); // LINUX Penguin >>> >>> // Xindice API version >>> private static String XINDICE_API_VERSION = new String ("1.0"); >>> >>> // Xindice file setup >>> private static String XINDICE_COMPRESSION_ENABLED = new String >>>("true"); >>> private static String XINDICE_FILTER_CLASS = new >>>String("org.apache.xindice.core.filer.BTreeFiler"); >>> >>> >>>/** Make sure the database is registered */ >>>protected void EnableDatabase () >>> throws ClassNotFoundException, InstantiationException, >>>IllegalAccessException, >>> XMLDBException >>>{ >>> // If the database isn't already registered >>> if (! m_databaseRegistered) >>> { >>> m_databaseRegistered = true; >>> >>> m_logger.info("Enabling Xindice Database"); >>> >>> Class c = Class.forName(XINDICE_DB_DRIVER); >>> >>> Database database = (Database) c.newInstance(); >>> DatabaseManager.registerDatabase(database); >>> >>> // Update the CodeReview paths >>> boolean baseCollectionFound = false; >>> boolean projectListingsCollectionFound = false; >>> boolean projectListingsFileFound = false; >>> boolean projectsCollectionFound = false; >>> >>> // Check for "test" >>> String [] baseCollection = ListCollections(""); >>> // Loop to see if there is a match >>> for (int bcItr = 0; !baseCollectionFound && bcItr < >>>baseCollection.length; bcItr++) >>> { >>> >>> if (baseCollection[bcItr].equals("test")) >>> { >>> baseCollectionFound = true; >>> } >>> } >>> // If the baseCollection is missing add it >>> if (!baseCollectionFound) >>> { >>> m_logger.info("Create codereview collection required"); >>> CreateCollection("", "test"); >>> } >>> >>> // Check for "projectlistings" and "projects" >>> String [] testCollection = ListCollections("test"); >>> // Loop to see if there is a match for project listings and projects >>> for (int crItr = 0; (!projectListingsCollectionFound || >>>!projectsCollectionFound) && crItr < testCollection.length; crItr++) >>> { >>> if (testCollection[crItr].equals("projectlistings")) >>> { >>> projectListingsCollectionFound = true; >>> } >>> else if (testCollection[crItr].equals("projects")) >>> { >>> projectsCollectionFound = true; >>> } >>> } >>> // If the baseCollection is missing add it >>> if (!projectListingsCollectionFound) >>> { >>> m_logger.info("Create projectlistings collection required"); >>> CreateCollection("test", "projectlistings"); >>> } >>> >>> // If the baseCollection is missing add it >>> if (!projectsCollectionFound) >>> { >>> m_logger.info("Create projects collection required"); >>> CreateCollection("test", "projects"); >>> } >>> } >>>} >>> >>> >>>/** Add documents to a collection */ >>>public void AddDocument(String collectionName, String documentName, >>>String >>>documentXML) >>>{ >>> Collection col = null; >>> >>> String[] documents = null; >>> synchronized (m_databaseMutex) >>> { >>> try { >>> EnableDatabase(); >>> >>> // Get the collection >>> col = DatabaseManager.getCollection(XINDICE_DB_ROOT + >>>collectionName); >>> >>> XMLResource document = (XMLResource) >>>col.createResource(documentName, "XMLResource"); >>> document.setContent(documentXML); >>> col.storeResource(document); >>> } >>> catch (XMLDBException e) { >>> m_logger.error("AddDocument: XML:DB Exception occured: " + >>>e.getMessage()); >>> } >>> catch (Exception e) { >>> m_logger.error("AddDocument: Other Exception occured"); >>> } >>> finally >>> { >>> // If the colletion was created, then make sure we close it >>> if (col != null) >>> { >>> try >>> { >>> // Close the collection >>> col.close(); >>> } >>> catch (Exception e) >>> { >>> // Catch any issues with closing the exception. >>> m_logger.error("Unable to close collection. " + >>>e.getMessage()); >>> } >>> } >>> } >>> } >>>} >>> >>> >>>/** Read a document */ >>>public String ReadDocument(String collectionName, String documentName) >>>{ >>> Collection col = null; >>> String returnString = null; >>> >>> synchronized (m_databaseMutex) >>> { >>> try { >>> EnableDatabase(); >>> >>> col = DatabaseManager.getCollection(XINDICE_DB_ROOT + >>>collectionName); >>> >>> XMLResource document = (XMLResource) >>>col.getResource(documentName); >>> >>> returnString = (String)document.getContent(); >>> } >>> catch (XMLDBException e) { >>> m_logger.error("ReadDocument (" + collectionName + "/" + >>>documentName + "): " + e.getMessage()); >>> } >>> catch (Exception e) { >>> m_logger.error("ReadDocument (" + collectionName + "/" + >>>documentName + "): " + e.getMessage()); >>> } >>> finally >>> { >>> // If the colletion was created, then make sure we close it >>> if (col != null) >>> { >>> try >>> { >>> // Close the collection >>> col.close(); >>> } >>> catch (Exception e) >>> { >>> // Catch any issues with closing the exception. >>> m_logger.error("Unable to close collection. " + >>>e.getMessage()); >>> } >>> } >>> } >>> } >>> >>> return (returnString); >>> } >>> >>> >>> >>> /** Creates a new instance of XindiceGateway */ >>> public XindiceGateway() >>> { >>> } >>> >>>} >>> >> >