Implement protecting OSGI-INF, OSGI-OPTS as per OSGi Enterprise Spec.
This commit is contained in:
parent
1f1c2c7d17
commit
ccacf7c17c
|
@ -276,6 +276,22 @@ public abstract class AbstractContextProvider extends AbstractLifeCycle implemen
|
|||
|
||||
//osgi Enterprise Spec r4 p.427
|
||||
_contextHandler.setAttribute(OSGiWebappConstants.OSGI_BUNDLECONTEXT, _bundle.getBundleContext());
|
||||
|
||||
//make sure we protect also the osgi dirs specified by OSGi Enterprise spec
|
||||
String[] targets = _contextHandler.getProtectedTargets();
|
||||
int length = (targets==null?0:targets.length);
|
||||
|
||||
String[] updatedTargets = null;
|
||||
if (targets != null)
|
||||
{
|
||||
updatedTargets = new String[length+OSGiWebappConstants.DEFAULT_PROTECTED_OSGI_TARGETS.length];
|
||||
System.arraycopy(targets, 0, updatedTargets, 0, length);
|
||||
|
||||
}
|
||||
else
|
||||
updatedTargets = new String[OSGiWebappConstants.DEFAULT_PROTECTED_OSGI_TARGETS.length];
|
||||
System.arraycopy(OSGiWebappConstants.DEFAULT_PROTECTED_OSGI_TARGETS, 0, updatedTargets, length, OSGiWebappConstants.DEFAULT_PROTECTED_OSGI_TARGETS.length);
|
||||
_contextHandler.setProtectedTargets(updatedTargets);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -16,6 +16,8 @@ package org.eclipse.jetty.osgi.boot;
|
|||
|
||||
import java.io.File;
|
||||
import java.net.URL;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Dictionary;
|
||||
import java.util.Enumeration;
|
||||
import java.util.HashMap;
|
||||
|
@ -195,8 +197,22 @@ public abstract class AbstractWebAppProvider extends AbstractLifeCycle implement
|
|||
|
||||
protected WebAppContext newWebApp ()
|
||||
{
|
||||
WebAppContext webApp = new WebAppContext();
|
||||
webApp.setAttribute(OSGiWebappConstants.WATERMARK, OSGiWebappConstants.WATERMARK);
|
||||
WebAppContext webApp = new WebAppContext();
|
||||
webApp.setAttribute(OSGiWebappConstants.WATERMARK, OSGiWebappConstants.WATERMARK);
|
||||
|
||||
//make sure we protect also the osgi dirs specified by OSGi Enterprise spec
|
||||
String[] targets = webApp.getProtectedTargets();
|
||||
String[] updatedTargets = null;
|
||||
if (targets != null)
|
||||
{
|
||||
updatedTargets = new String[targets.length+OSGiWebappConstants.DEFAULT_PROTECTED_OSGI_TARGETS.length];
|
||||
System.arraycopy(targets, 0, updatedTargets, 0, targets.length);
|
||||
}
|
||||
else
|
||||
updatedTargets = new String[OSGiWebappConstants.DEFAULT_PROTECTED_OSGI_TARGETS.length];
|
||||
System.arraycopy(OSGiWebappConstants.DEFAULT_PROTECTED_OSGI_TARGETS, 0, updatedTargets, targets.length, OSGiWebappConstants.DEFAULT_PROTECTED_OSGI_TARGETS.length);
|
||||
webApp.setProtectedTargets(updatedTargets);
|
||||
|
||||
return webApp;
|
||||
}
|
||||
|
||||
|
|
|
@ -134,4 +134,9 @@ public class OSGiWebappConstants
|
|||
public static final String SERVICE_PROP_REQUIRE_TLD_BUNDLE = REQUIRE_TLD_BUNDLE;
|
||||
|
||||
public static final String WATERMARK = "o.e.j.o.b.watermark";
|
||||
|
||||
/**
|
||||
* Set of extra dirs that must not be served by osgi webapps
|
||||
*/
|
||||
public static final String[] DEFAULT_PROTECTED_OSGI_TARGETS = {"/osgi-inf", "/osgi-opts"};
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue