001: /**
002: * JOnAS: Java(TM) Open Application Server
003: * Copyright (C) 2003-2005 Bull S.A.
004: * Contact: jonas-team@objectweb.org
005: *
006: * This library is free software; you can redistribute it and/or
007: * modify it under the terms of the GNU Lesser General Public
008: * License as published by the Free Software Foundation; either
009: * version 2.1 of the License, or any later version.
010: *
011: * This library is distributed in the hope that it will be useful,
012: * but WITHOUT ANY WARRANTY; without even the implied warranty of
013: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
014: * Lesser General Public License for more details.
015: *
016: * You should have received a copy of the GNU Lesser General Public
017: * License along with this library; if not, write to the Free Software
018: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
019: * USA
020: *
021: * --------------------------------------------------------------------------
022: * $Id: WebModuleProxy.java 6702 2005-05-05 16:09:14Z benoitf $
023: * --------------------------------------------------------------------------
024: */package org.objectweb.jonas.web.catalina55;
025:
026: import javax.management.InstanceNotFoundException;
027: import javax.management.MBeanException;
028: import javax.management.MBeanServer;
029: import javax.management.MalformedObjectNameException;
030: import javax.management.ObjectName;
031: import javax.management.ReflectionException;
032:
033: import org.objectweb.jonas.server.LoaderManager;
034:
035: /**
036: * @author Adriana Danes
037: *
038: * This is a proxy class which uses the Catalina WebModule MBean to
039: * invoke start/stop/reload operations.
040: */
041: public class WebModuleProxy implements WebModuleProxyMBean {
042: /**
043: * The reference of the MBeanServer in which are registered both
044: * Catalina's WebModule and JOnAS's WebModuleProxy MBeans
045: */
046: private MBeanServer myServer = null;
047:
048: /**
049: * Start Web module
050: * @param webModuleName WebModule MBean's ObjectName
051: */
052: public void start(String webModuleName) {
053: try {
054: ObjectName onWebModule = ObjectName
055: .getInstance(webModuleName);
056: // Set Catalina class loader before making the invoke
057: ClassLoader old = Thread.currentThread()
058: .getContextClassLoader();
059: Thread.currentThread().setContextClassLoader(
060: LoaderManager.getInstance().getCatalinaLoader());
061: myServer.invoke(onWebModule, "start", null, null);
062: // Restore the class loader
063: Thread.currentThread().setContextClassLoader(old);
064: } catch (MalformedObjectNameException e) {
065: // TODO Auto-generated catch block
066: e.printStackTrace();
067: } catch (InstanceNotFoundException e) {
068: // TODO Auto-generated catch block
069: e.printStackTrace();
070: } catch (MBeanException e) {
071: // TODO Auto-generated catch block
072: e.printStackTrace();
073: } catch (ReflectionException e) {
074: // TODO Auto-generated catch block
075: e.printStackTrace();
076: } catch (Exception e) {
077: // TODO Auto-generated catch block
078: e.printStackTrace();
079: }
080: }
081:
082: /**
083: * Stop Web module
084: * @param webModuleName WebModule MBean's ObjectName
085: */
086: public void stop(String webModuleName) {
087: try {
088: ObjectName onWebModule = ObjectName
089: .getInstance(webModuleName);
090: // Set Catalina class loader before making the invoke
091: ClassLoader old = Thread.currentThread()
092: .getContextClassLoader();
093: Thread.currentThread().setContextClassLoader(
094: LoaderManager.getInstance().getCatalinaLoader());
095: myServer.invoke(onWebModule, "stop", null, null);
096: // Restore the class loader
097: Thread.currentThread().setContextClassLoader(old);
098: } catch (MalformedObjectNameException e) {
099: // TODO Auto-generated catch block
100: e.printStackTrace();
101: } catch (InstanceNotFoundException e) {
102: // TODO Auto-generated catch block
103: e.printStackTrace();
104: } catch (MBeanException e) {
105: // TODO Auto-generated catch block
106: e.printStackTrace();
107: } catch (ReflectionException e) {
108: // TODO Auto-generated catch block
109: e.printStackTrace();
110: } catch (Exception e) {
111: // TODO Auto-generated catch block
112: e.printStackTrace();
113: }
114: }
115:
116: /**
117: * Reload Web module
118: * @param webModuleName WebModule MBean's ObjectName
119: */
120: public void reload(String webModuleName) {
121: try {
122: ObjectName onWebModule = ObjectName
123: .getInstance(webModuleName);
124: // Set Catalina class loader before making the invoke
125: ClassLoader old = Thread.currentThread()
126: .getContextClassLoader();
127: Thread.currentThread().setContextClassLoader(
128: LoaderManager.getInstance().getCatalinaLoader());
129: myServer.invoke(onWebModule, "reload", null, null);
130: // Restore the class loader
131: Thread.currentThread().setContextClassLoader(old);
132: } catch (MalformedObjectNameException e) {
133: // TODO Auto-generated catch block
134: e.printStackTrace();
135: } catch (InstanceNotFoundException e) {
136: // TODO Auto-generated catch block
137: e.printStackTrace();
138: } catch (MBeanException e) {
139: // TODO Auto-generated catch block
140: e.printStackTrace();
141: } catch (ReflectionException e) {
142: // TODO Auto-generated catch block
143: e.printStackTrace();
144: } catch (Exception e) {
145: // TODO Auto-generated catch block
146: e.printStackTrace();
147: }
148: }
149:
150: /**
151: * @param myServer The myServer to set.
152: */
153: protected void setMyServer(MBeanServer myServer) {
154: this.myServer = myServer;
155: }
156: }
|