1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.eclipse.jetty.osgi.boot;
20
21 import org.eclipse.jetty.deploy.App;
22 import org.eclipse.jetty.deploy.bindings.StandardUndeployer;
23 import org.eclipse.jetty.deploy.graph.Node;
24 import org.eclipse.jetty.osgi.boot.internal.serverfactory.ServerInstanceWrapper;
25 import org.eclipse.jetty.osgi.boot.utils.EventSender;
26
27
28
29
30
31
32
33
34
35
36
37 public class OSGiUndeployer extends StandardUndeployer
38 {
39 private ServerInstanceWrapper _server;
40
41
42
43 public OSGiUndeployer (ServerInstanceWrapper server)
44 {
45 _server = server;
46 }
47
48
49
50 public void processBinding(Node node, App app) throws Exception
51 {
52 EventSender.getInstance().send(EventSender.UNDEPLOYING_EVENT, ((AbstractOSGiApp)app).getBundle(), app.getContextPath());
53 ClassLoader old = Thread.currentThread().getContextClassLoader();
54 Thread.currentThread().setContextClassLoader(_server.getParentClassLoaderForWebapps());
55 try
56 {
57 super.processBinding(node,app);
58 }
59 finally
60 {
61 Thread.currentThread().setContextClassLoader(old);
62 }
63 EventSender.getInstance().send(EventSender.UNDEPLOYED_EVENT, ((AbstractOSGiApp)app).getBundle(), app.getContextPath());
64 ((AbstractOSGiApp)app).deregisterAsOSGiService();
65 }
66 }