blob: e37e157a66484ca9a669398eff7ac06bd954019f [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_92) on Thu Jun 07 14:26:35 EDT 2018 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>LibExtClassLoaderHelper (Jetty :: Project 9.3.24.v20180605 API)</title>
<meta name="date" content="2018-06-07">
<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="LibExtClassLoaderHelper (Jetty :: Project 9.3.24.v20180605 API)";
}
}
catch(err) {
}
//-->
var methods = {"i0":9,"i1":9,"i2":9};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/LibExtClassLoaderHelper.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../../../org/eclipse/jetty/osgi/boot/internal/webapp/BundleWatcher.html" title="class in org.eclipse.jetty.osgi.boot.internal.webapp"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../../../org/eclipse/jetty/osgi/boot/internal/webapp/LibExtClassLoaderHelper.IFilesInJettyHomeResourcesProcessor.html" title="interface in org.eclipse.jetty.osgi.boot.internal.webapp"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../../index.html?org/eclipse/jetty/osgi/boot/internal/webapp/LibExtClassLoaderHelper.html" target="_top">Frames</a></li>
<li><a href="LibExtClassLoaderHelper.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.eclipse.jetty.osgi.boot.internal.webapp</div>
<h2 title="Class LibExtClassLoaderHelper" class="title">Class LibExtClassLoaderHelper</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>org.eclipse.jetty.osgi.boot.internal.webapp.LibExtClassLoaderHelper</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<br>
<pre>public class <span class="typeNameLabel">LibExtClassLoaderHelper</span>
extends java.lang.Object</pre>
<div class="block">LibExtClassLoaderHelper
<p>
Helper to create a URL class-loader with the jars inside
<code>${jetty.home}/lib/ext</code> and <code>${jetty.home}/resources</code>. In an ideal world, every
library is an OSGi bundle that does loads nicely. To support standard jars or
bundles that cannot be loaded in the current OSGi environment, we support
inserting the jars in the usual jetty/lib/ext folders in the proper classpath
for the webapps.
<p>
The drawback is that those jars will not be available in the OSGi
classloader.
<p>
Alternatives to placing jars in lib/ext:
<ol>
<li>Bundle the jars in an osgi bundle. Have the webapp(s) that need these jars
depend on that bundle.</li>
<li>Bundle those jars in an osgi bundle-fragment that targets the
jetty-bootstrap bundle</li>
<li>Use equinox Buddy-Policy: register a buddy of the jetty bootstrapper
bundle. (Note: it will work only on equinox)</li>
</ol></div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="nested.class.summary">
<!-- -->
</a>
<h3>Nested Class Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Nested Class Summary table, listing nested classes, and an explanation">
<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Class and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static interface&nbsp;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/eclipse/jetty/osgi/boot/internal/webapp/LibExtClassLoaderHelper.IFilesInJettyHomeResourcesProcessor.html" title="interface in org.eclipse.jetty.osgi.boot.internal.webapp">LibExtClassLoaderHelper.IFilesInJettyHomeResourcesProcessor</a></span></code>
<div class="block">IFilesInJettyHomeResourcesProcessor
Interface for callback impls</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Field and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static java.util.Set&lt;<a href="../../../../../../../org/eclipse/jetty/osgi/boot/internal/webapp/LibExtClassLoaderHelper.IFilesInJettyHomeResourcesProcessor.html" title="interface in org.eclipse.jetty.osgi.boot.internal.webapp">LibExtClassLoaderHelper.IFilesInJettyHomeResourcesProcessor</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/eclipse/jetty/osgi/boot/internal/webapp/LibExtClassLoaderHelper.html#registeredFilesInJettyHomeResourcesProcessors">registeredFilesInJettyHomeResourcesProcessors</a></span></code>&nbsp;</td>
</tr>
</table>
</li>
</ul>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../../../org/eclipse/jetty/osgi/boot/internal/webapp/LibExtClassLoaderHelper.html#LibExtClassLoaderHelper--">LibExtClassLoaderHelper</a></span>()</code>&nbsp;</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>static java.lang.ClassLoader</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/eclipse/jetty/osgi/boot/internal/webapp/LibExtClassLoaderHelper.html#createLibEtcClassLoader-java.io.File-java.lang.ClassLoader-">createLibEtcClassLoader</a></span>(java.io.File&nbsp;jettyHome,
java.lang.ClassLoader&nbsp;parentClassLoader)</code>&nbsp;</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>static java.lang.ClassLoader</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/eclipse/jetty/osgi/boot/internal/webapp/LibExtClassLoaderHelper.html#createLibExtClassLoader-java.util.List-java.util.List-java.lang.ClassLoader-">createLibExtClassLoader</a></span>(java.util.List&lt;java.io.File&gt;&nbsp;jarsContainerOrJars,
java.util.List&lt;java.net.URL&gt;&nbsp;otherJarsOrFolder,
java.lang.ClassLoader&nbsp;parentClassLoader)</code>&nbsp;</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>protected static void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/eclipse/jetty/osgi/boot/internal/webapp/LibExtClassLoaderHelper.html#processFilesInResourcesFolder-java.io.File-java.util.Map-">processFilesInResourcesFolder</a></span>(java.io.File&nbsp;jettyHome,
java.util.Map&lt;java.lang.String,java.io.File&gt;&nbsp;childrenFiles)</code>
<div class="block">When we find files typically used for central logging configuration we do
what it takes in this method to do what the user expects.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.detail">
<!-- -->
</a>
<h3>Field Detail</h3>
<a name="registeredFilesInJettyHomeResourcesProcessors">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>registeredFilesInJettyHomeResourcesProcessors</h4>
<pre>public static final&nbsp;java.util.Set&lt;<a href="../../../../../../../org/eclipse/jetty/osgi/boot/internal/webapp/LibExtClassLoaderHelper.IFilesInJettyHomeResourcesProcessor.html" title="interface in org.eclipse.jetty.osgi.boot.internal.webapp">LibExtClassLoaderHelper.IFilesInJettyHomeResourcesProcessor</a>&gt; registeredFilesInJettyHomeResourcesProcessors</pre>
</li>
</ul>
</li>
</ul>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="LibExtClassLoaderHelper--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>LibExtClassLoaderHelper</h4>
<pre>public&nbsp;LibExtClassLoaderHelper()</pre>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="createLibEtcClassLoader-java.io.File-java.lang.ClassLoader-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createLibEtcClassLoader</h4>
<pre>public static&nbsp;java.lang.ClassLoader&nbsp;createLibEtcClassLoader(java.io.File&nbsp;jettyHome,
java.lang.ClassLoader&nbsp;parentClassLoader)
throws java.net.MalformedURLException</pre>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>jettyHome</code> - the jetty home</dd>
<dd><code>parentClassLoader</code> - the parent classloader</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a url classloader with the jars of resources, lib/ext and the
jars passed in the other argument. The parent classloader usually
is the JettyBootStrapper (an osgi classloader.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.net.MalformedURLException</code> - if the jetty home reference is invalid</dd>
</dl>
</li>
</ul>
<a name="createLibExtClassLoader-java.util.List-java.util.List-java.lang.ClassLoader-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createLibExtClassLoader</h4>
<pre>public static&nbsp;java.lang.ClassLoader&nbsp;createLibExtClassLoader(java.util.List&lt;java.io.File&gt;&nbsp;jarsContainerOrJars,
java.util.List&lt;java.net.URL&gt;&nbsp;otherJarsOrFolder,
java.lang.ClassLoader&nbsp;parentClassLoader)
throws java.net.MalformedURLException</pre>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>jarsContainerOrJars</code> - the jars via file references</dd>
<dd><code>otherJarsOrFolder</code> - more jars via url references</dd>
<dd><code>parentClassLoader</code> - the parent classloader</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a url classloader with the jars of resources, lib/ext and the
jars passed in the other argument. The parent classloader usually
is the JettyBootStrapper (an osgi classloader). If there was no
extra jars to insert, then just return the parentClassLoader.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.net.MalformedURLException</code> - if there is a bad jar file reference</dd>
</dl>
</li>
</ul>
<a name="processFilesInResourcesFolder-java.io.File-java.util.Map-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>processFilesInResourcesFolder</h4>
<pre>protected static&nbsp;void&nbsp;processFilesInResourcesFolder(java.io.File&nbsp;jettyHome,
java.util.Map&lt;java.lang.String,java.io.File&gt;&nbsp;childrenFiles)</pre>
<div class="block">When we find files typically used for central logging configuration we do
what it takes in this method to do what the user expects. Without
depending too much directly on a particular logging framework.
<p>
We can afford to do some implementation specific code for a logging
framework only in a fragment.
<p>
Trying to configure log4j and logback in here.
<p>
We recommend that slf4j jars are all placed in the osgi framework. And a
single implementation if possible packaged as an osgi bundle is there.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>jettyHome</code> - the jetty home reference</dd>
<dd><code>childrenFiles</code> - the map of child files</dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/LibExtClassLoaderHelper.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../../../org/eclipse/jetty/osgi/boot/internal/webapp/BundleWatcher.html" title="class in org.eclipse.jetty.osgi.boot.internal.webapp"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../../../org/eclipse/jetty/osgi/boot/internal/webapp/LibExtClassLoaderHelper.IFilesInJettyHomeResourcesProcessor.html" title="interface in org.eclipse.jetty.osgi.boot.internal.webapp"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../../index.html?org/eclipse/jetty/osgi/boot/internal/webapp/LibExtClassLoaderHelper.html" target="_top">Frames</a></li>
<li><a href="LibExtClassLoaderHelper.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small>Copyright &#169; 1995&#x2013;2018 <a href="http://webtide.com">Webtide</a>. All rights reserved.</small></p>
</body>
</html>