XCC/J 3.2-9

com.marklogic.xcc.jndi
Class ContentSourceBeanFactory

java.lang.Object
  extended bycom.marklogic.xcc.jndi.ContentSourceBeanFactory
All Implemented Interfaces:
ObjectFactory

public class ContentSourceBeanFactory
extends Object
implements ObjectFactory

This class implements the JNDI ObjectFactory interface and may be used in a J2EE container as a source of ContentSource instances. This class is preferred over ContentSourceBean if you have the option because it does a little more consistency checking when creating new objects. Neither does it depend on a container-provided bean factory.

JNDI resources are typically specified as part of the container configuration. The specifics of configuration vary by container. Below is an example of using this class with Apache Tomcat version 5.5 to configure a ContentSource. Further details of JNDI configuration in Tomcat are available on the JNDI-HowTo page.

There are two places where JNDI resources can be configured in the Tomcat 5.5 container. One is globally in Tomcat's config file in $CATALINA_HOME/conf/server.xml, the other is within an individual webapp in META-INF/context.xml. In either file, an XML element like this should be placed as a child of the <Context> element, like this:

 <Context path="/">
    <Resource name="marklogic/ContentSource" auth="Container"
         type="com.marklogic.xcc.ContentSource"
         factory="com.marklogic.xcc.jndi.ContentSourceBeanFactory"
         host="somehost.mycorp.com" port="8003" user="fred" password="hush"
         contentbase="productiondb"/>
 <Context>
 

An alternate means of specifying the content source is via the "url" attribute, like this:

 <Context path="/">
    <Resource name="marklogic/ContentSource" auth="Container"
         type="com.marklogic.xcc.ContentSource"
         factory="com.marklogic.xcc.jndi.ContentSourceBeanFactory"
         url="xcc://fred:hush@somehost.mycorp.com:8003/productiondb"/>
 <Context>
 

The value of the "name" attribute is the JNDI lookup key that you will use in your code (servlet, JSP scriptlet, etc) to locate the ContentSource. A typical method to do the lookup would look something like this:

private ContentSource findContentSource() throws ServletException
{
    try {
        Context initCtx = new InitialContext();
        Context envCtx = (Context) initCtx.lookup("java:comp/env");

        return (ContentSource) envCtx.lookup ("marklogic/ContentSource");
    } catch (NamingException e) {
        throw new ServletException ("ContentSource lookup failed: " + e, e);
    }
}


Constructor Summary
ContentSourceBeanFactory()
           
 
Method Summary
 Object getObjectInstance(Object obj, Name name, Context nameCtx, Hashtable environment)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ContentSourceBeanFactory

public ContentSourceBeanFactory()
Method Detail

getObjectInstance

public Object getObjectInstance(Object obj,
                                Name name,
                                Context nameCtx,
                                Hashtable environment)
                         throws Exception
Specified by:
getObjectInstance in interface ObjectFactory
Throws:
Exception

XCC/J 3.2-9

Copyright © 2003-2008 Mark Logic Corporation, All Rights Reserved.

Complete online documentation for MarkLogic Server, XQuery and related components may be found at developer.marklogic.com