blob: 99ec7648fbd230533f2c6b19eea55ccbeb369c5b [file] [log] [blame] [view]
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
# Apache Accumulo Classloader Extras
This repository contains a variety of Java classloader-related utilities, or
libraries to support those utilities, for use with Apache Accumulo.
### CachingClassLoaderFactory
An implementation of Accumulo's [ContextClassLoaderFactory][spi] that
downloads, verifies, and locally caches classloader resources using a manifest
file at a specified URL, which itself contained a listing of resource URLs to
download, and corresponding checksums to verify their contents.
See [modules/caching-classloader/README.md](modules/caching-classloader/README.md).
### HdfsURLStreamHandlerProvider
An implementation of [URLStreamHandlerProvider][urlprovider] that supports the
`hdfs://` URL scheme, written to support using [HDFS][hadoop] for remote
resource locations in the
[CachingClassLoaderFactory](#CachingClassLoaderFactory), because that project
does not currently implement such a provider.
See [modules/hdfs-urlstreamhandler-provider/README.md](modules/hdfs-urlstreamhandler-provider/README.md).
### VFS ClassLoaderFactory (Legacy)
An experimental implementation of Accumulo's [ContextClassLoaderFactory][spi]
was developed in `modules/vfs-class-loader` in commit
2c3eb3b18d30d9fa18d744584c4595e4b4ffca9f, but was subsequently removed. It
supported using classpaths containing remote URLs, and used Apache commons-vfs2
to interpret remote locations as filesystems containing resource files. Loading
classes from VFS this way can be prone to substantial errors, and it is not
recommended.
[spi]: https://accumulo.apache.org/docs/2.x/apidocs/org/apache/accumulo/core/spi/common/ContextClassLoaderFactory.html
[urlprovider]: https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/net/spi/URLStreamHandlerProvider.html
[hadoop]: https://hadoop.apache.org