Hi, Graeme and Karl

I'll try it.
Thanks!

Minoru Osuka
[email protected]




On Apr 10, 2013, at 4:33 PM, Karl Wright <[email protected]> wrote:

> If it works, it's better than nothing.  Thanks!  (Did you figure this
> workaround out by looking at the hbase code?  Or just wing it?)
> 
> Karl
> 
> 
> 
> On Wed, Apr 10, 2013 at 1:38 AM, Graeme Seaton <[email protected]> wrote:
> 
>> Hi,
>> 
>> I've managed to connect to HBase via the REST API by temporarily
>> manipulating the classloader within my connector code as below:
>> 
>>    // Class loader voodoo to work around hbase-default.xml loading issue
>>    ClassLoader ocl = Thread.currentThread().**getContextClassLoader();
>>    try {
>>        //Configuration conf = HBaseConfiguration.create();
>> Thread.currentThread().**setContextClassLoader(org.**
>> apache.hadoop.hbase.rest.**client.Cluster.class.**getClassLoader());
>>        hbaseCluster = new Cluster();
>>        hbaseCluster.add(hbaseServer,**hbasePort);
>>        hbaseClient = new Client(hbaseCluster);
>>        hbaseTable = new RemoteHTable(hbaseClient,**hbaseTablename);
>>    } finally {
>>      Thread.currentThread().**setContextClassLoader(ocl);
>>    }
>> 
>> Regards,
>> 
>> Graeme
>> 
>> 
>> On 08/04/13 10:39, Karl Wright wrote:
>> 
>>> Hi Minoru,
>>> 
>>> The connector-lib jars are loaded using a different classloader than the
>>> core jars in MCF.  If hbase is coded properly, it should have no trouble
>>> finding resources in those jars.  But if the code in hbase tries to do
>>> something tricky, I can imagine that it might not work.  Or, hbase may
>>> just
>>> not be coded correctly in this regard.  Either way, if you understand how
>>> the resource is being loaded we can either file a ticket/patch with hbase,
>>> or change manifoldcf code, whichever is appropriate.
>>> 
>>> I suggest that you try to find the part of the hbase code that reads the
>>> configuration file as a resource.  Compare this against code that works.
>>> The SharePoint connector, for instance, has a wsdd resource that it loads
>>> which is included in the connector jar file which loads just fine.
>>> 
>>> Thanks!
>>> Karl
>>> 
>>> 
>>> On Mon, Apr 8, 2013 at 5:17 AM, Minoru Osuka <[email protected]>
>>> wrote:
>>> 
>>> Hi,
>>>> 
>>>> I'm trying to make HBase Connector for ManiforldCF.
>>>> I had put hbase.jar to connector-lib directory, so I can use HBase's
>>>> classes in ManifoldCF.
>>>> But, It seems that org.apache.hadoop.hbase.**HBaseConfiguration.create()
>>>> can't read hbase-default.xml in hbase.jar.
>>>> It can't get hbase.defaults.for.version in hbase-default.xml, So
>>>> org.apache.hadoop.hbase.**HBaseConfiguration.**checkDefaultsVersion(**
>>>> Configuration
>>>> conf) throws java.lang.RuntimeException: hbase-default.xml file seems to
>>>> be
>>>> for and old version of HBase (null), this version is 0.94.3.
>>>> 
>>>> I had made CLI application and Jetty Servlet using
>>>> org.apache.hadoop.hbase.**HBaseConfiguration.create() in the same way.
>>>> It
>>>> works.
>>>> 
>>>> How should I load hbase.jar to read inner hbase-default.xml?
>>>> Please see following sample code and exception, and give me some advice.
>>>> 
>>>> 
>>>> 
>>>> SOURCE CODE:
>>>> 
>>>> public class HBaseRepositoryConnector extends BaseRepositoryConnector {
>>>>   :
>>>>   protected Configuration config = null;
>>>>   :
>>>>   public void connect(ConfigParams configParams) {
>>>> 
>>>>     super.connect(configParams);
>>>> 
>>>>     config = HBaseConfiguration.create();
>>>>     :
>>>>   }
>>>>   :
>>>> }
>>>> 
>>>> 
>>>> 
>>>> EXCEPTION:
>>>> 
>>>> 43577 [qtp1940931807-189] WARN org.eclipse.jetty.servlet.**ServletHandler
>>>> -
>>>> /mcf-crawler-ui/execute.jsp
>>>> org.apache.jasper.**JasperException: An exception occurred processing
>>>> JSP
>>>> page /viewconnection.jsp at line 101
>>>> 
>>>> 98:           String connectionStatus;
>>>> 99:           try
>>>> 100:           {
>>>> 101:                IRepositoryConnector c =
>>>> RepositoryConnectorFactory.**grab(threadContext,className,**
>>>> parameters,maxCount);
>>>> 102:                if (c == null)
>>>> 103:                     connectionStatus =
>>>> Messages.getString(**pageContext.getRequest().**
>>>> getLocale(),"viewconnection.**Connectorisnotinstalled");
>>>> 104:                else
>>>> 
>>>> 
>>>> Stacktrace:
>>>>      at
>>>> org.apache.jasper.servlet.**JspServletWrapper.**handleJspException(**
>>>> JspServletWrapper.java:521)
>>>>      at
>>>> org.apache.jasper.servlet.**JspServletWrapper.service(**
>>>> JspServletWrapper.java:430)
>>>>      at
>>>> org.apache.jasper.servlet.**JspServlet.serviceJspFile(**
>>>> JspServlet.java:313)
>>>>      at org.apache.jasper.servlet.**JspServlet.service(JspServlet.**
>>>> java:260)
>>>>      at javax.servlet.http.**HttpServlet.service(**
>>>> HttpServlet.java:820)
>>>>      at
>>>> org.eclipse.jetty.servlet.**ServletHolder.handle(**
>>>> ServletHolder.java:547)
>>>>      at
>>>> org.eclipse.jetty.servlet.**ServletHandler.doHandle(**
>>>> ServletHandler.java:480)
>>>>      at
>>>> org.eclipse.jetty.server.**handler.ScopedHandler.handle(**
>>>> ScopedHandler.java:119)
>>>>      at
>>>> org.eclipse.jetty.security.**SecurityHandler.handle(**
>>>> SecurityHandler.java:520)
>>>>      at
>>>> org.eclipse.jetty.server.**session.SessionHandler.**
>>>> doHandle(SessionHandler.java:**227)
>>>>      at
>>>> org.eclipse.jetty.server.**handler.ContextHandler.**
>>>> doHandle(ContextHandler.java:**941)
>>>>      at
>>>> org.eclipse.jetty.servlet.**ServletHandler.doScope(**
>>>> ServletHandler.java:409)
>>>>      at
>>>> org.eclipse.jetty.server.**session.SessionHandler.**
>>>> doScope(SessionHandler.java:**186)
>>>>      at
>>>> org.eclipse.jetty.server.**handler.ContextHandler.**
>>>> doScope(ContextHandler.java:**875)
>>>>      at
>>>> org.eclipse.jetty.server.**handler.ScopedHandler.handle(**
>>>> ScopedHandler.java:117)
>>>>      at org.eclipse.jetty.server.**Dispatcher.forward(Dispatcher.**
>>>> java:288)
>>>>      at org.eclipse.jetty.server.**Dispatcher.forward(Dispatcher.**
>>>> java:115)
>>>>      at
>>>> org.apache.jasper.runtime.**PageContextImpl.doForward(**
>>>> PageContextImpl.java:709)
>>>>      at
>>>> org.apache.jasper.runtime.**PageContextImpl.forward(**
>>>> PageContextImpl.java:680)
>>>>      at org.apache.jsp.execute_jsp._**jspService(execute_jsp.java:**
>>>> 382)
>>>>      at org.apache.jasper.runtime.**HttpJspBase.service(**
>>>> HttpJspBase.java:70)
>>>>      at javax.servlet.http.**HttpServlet.service(**
>>>> HttpServlet.java:820)
>>>>      at
>>>> org.apache.jasper.servlet.**JspServletWrapper.service(**
>>>> JspServletWrapper.java:388)
>>>>      at
>>>> org.apache.jasper.servlet.**JspServlet.serviceJspFile(**
>>>> JspServlet.java:313)
>>>>      at org.apache.jasper.servlet.**JspServlet.service(JspServlet.**
>>>> java:260)
>>>>      at javax.servlet.http.**HttpServlet.service(**
>>>> HttpServlet.java:820)
>>>>      at
>>>> org.eclipse.jetty.servlet.**ServletHolder.handle(**
>>>> ServletHolder.java:547)
>>>>      at
>>>> org.eclipse.jetty.servlet.**ServletHandler.doHandle(**
>>>> ServletHandler.java:480)
>>>>      at
>>>> org.eclipse.jetty.server.**handler.ScopedHandler.handle(**
>>>> ScopedHandler.java:119)
>>>>      at
>>>> org.eclipse.jetty.security.**SecurityHandler.handle(**
>>>> SecurityHandler.java:520)
>>>>      at
>>>> org.eclipse.jetty.server.**session.SessionHandler.**
>>>> doHandle(SessionHandler.java:**227)
>>>>      at
>>>> org.eclipse.jetty.server.**handler.ContextHandler.**
>>>> doHandle(ContextHandler.java:**941)
>>>>      at
>>>> org.eclipse.jetty.servlet.**ServletHandler.doScope(**
>>>> ServletHandler.java:409)
>>>>      at
>>>> org.eclipse.jetty.server.**session.SessionHandler.**
>>>> doScope(SessionHandler.java:**186)
>>>>      at
>>>> org.eclipse.jetty.server.**handler.ContextHandler.**
>>>> doScope(ContextHandler.java:**875)
>>>>      at
>>>> org.eclipse.jetty.server.**handler.ScopedHandler.handle(**
>>>> ScopedHandler.java:117)
>>>>      at
>>>> org.eclipse.jetty.server.**handler.**ContextHandlerCollection.**handle(*
>>>> *ContextHandlerCollection.java:**250)
>>>>      at
>>>> org.eclipse.jetty.server.**handler.HandlerWrapper.handle(**
>>>> HandlerWrapper.java:110)
>>>>      at org.eclipse.jetty.server.**Server.handle(Server.java:349)
>>>>      at
>>>> org.eclipse.jetty.server.**HttpConnection.handleRequest(**
>>>> HttpConnection.java:441)
>>>>      at
>>>> org.eclipse.jetty.server.**HttpConnection$RequestHandler.**
>>>> content(HttpConnection.java:**936)
>>>>      at org.eclipse.jetty.http.**HttpParser.parseNext(**
>>>> HttpParser.java:801)
>>>>      at
>>>> org.eclipse.jetty.http.**HttpParser.parseAvailable(**
>>>> HttpParser.java:224)
>>>>      at
>>>> org.eclipse.jetty.server.**AsyncHttpConnection.handle(**
>>>> AsyncHttpConnection.java:51)
>>>>      at
>>>> org.eclipse.jetty.io.nio.**SelectChannelEndPoint.handle(**
>>>> SelectChannelEndPoint.java:**586)
>>>>      at
>>>> org.eclipse.jetty.io.nio.**SelectChannelEndPoint$1.run(**
>>>> SelectChannelEndPoint.java:44)
>>>>      at
>>>> org.eclipse.jetty.util.thread.**QueuedThreadPool.runJob(**
>>>> QueuedThreadPool.java:598)
>>>>      at
>>>> org.eclipse.jetty.util.thread.**QueuedThreadPool$3.run(**
>>>> QueuedThreadPool.java:533)
>>>>      at java.lang.Thread.run(Thread.**java:680)
>>>> Caused by: java.lang.RuntimeException: hbase-default.xml file seems to be
>>>> for and old version of HBase (null), this version is 0.94.3
>>>>      at
>>>> org.apache.hadoop.hbase.**HBaseConfiguration.**checkDefaultsVersion(**
>>>> HBaseConfiguration.java:68)
>>>>      at
>>>> org.apache.hadoop.hbase.**HBaseConfiguration.**addHbaseResources(**
>>>> HBaseConfiguration.java:100)
>>>>      at
>>>> org.apache.hadoop.hbase.**HBaseConfiguration.create(**
>>>> HBaseConfiguration.java:111)
>>>>      at
>>>> org.apache.manifoldcf.crawler.**connectors.hbase.**
>>>> HBaseRepositoryConnector.**connect(**HBaseRepositoryConnector.java:**
>>>> 142)
>>>>      at
>>>> org.apache.manifoldcf.crawler.**interfaces.**RepositoryConnectorFactory$
>>>> **Pool.getConnector(**RepositoryConnectorFactory.**java:619)
>>>>      at
>>>> org.apache.manifoldcf.crawler.**interfaces.**RepositoryConnectorFactory.
>>>> **grab(**RepositoryConnectorFactory.**java:384)
>>>>      at
>>>> org.apache.jsp.viewconnection_**jsp._jspService(**
>>>> viewconnection_jsp.java:318)
>>>>      at org.apache.jasper.runtime.**HttpJspBase.service(**
>>>> HttpJspBase.java:70)
>>>>      at javax.servlet.http.**HttpServlet.service(**
>>>> HttpServlet.java:820)
>>>>      at
>>>> org.apache.jasper.servlet.**JspServletWrapper.service(**
>>>> JspServletWrapper.java:388)
>>>>      ... 47 more
>>>> 
>>>> 
>>>> Thanks,
>>>> Minoru
>>>> 
>>>> 
>>>> 
>>>> Minoru Osuka
>>>> [email protected]
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>> 

Reply via email to