1 /***
2 * @(#)MBeanServerInterceptor.java
3 *
4 * JFoxSOAF, Service-Oriented Application Framework
5 *
6 * Copyright(c) JFoxSOAF Team
7 *
8 * Licensed under the GNU LGPL, Version 2.1 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
11 *
12 * http://www.gnu.org/copyleft/lesser.html
13 *
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
19 *
20 * For more information, please visit:
21 * http://www.jfox.cn/confluence/display/JFoxSOAF/Home
22 * http://www.huihoo.org/jfox/jfoxsoaf
23 */
24
25 package org.huihoo.jfox.soaf.container;
26
27 import org.apache.commons.lang.BooleanUtils;
28 import org.apache.commons.logging.Log;
29 import org.apache.commons.logging.LogFactory;
30 import org.huihoo.jfox.soaf.util.resource.ResourceHelper;
31
32 /***
33 * MBeanServerInterceptor intercept manageable service request and regist
34 * service instance to a MBeanServer and ServiceContainer.
35 *
36 * @author <a href="mailto:founder_chen@yahoo.com.cn">Peter Cheng </a>
37 * @version $Revision: 1.15 $ $Date: 2005/05/22 06:46:49 $
38 * @version Revision: 1.0
39 */
40
41 public class MBeanServerInterceptor implements ServiceInterceptor {
42
43 private final Log logger = LogFactory.getLog(getClass());
44
45 private ManageableServiceContainer manageableServiceContainer = ManageableServiceContainer
46 .getInstance();
47
48 /***
49 * Interceptor invoke.
50 *
51 * @param serviceEntry
52 * @throws Throwable
53 */
54 public void invoke(ServiceEntry serviceEntry) throws Throwable {
55
56 if (BooleanUtils.toBoolean(serviceEntry.getManageable())) {
57 logger.info("Register Managable Service : "
58 + serviceEntry.getImplementation());
59 Object object = ResourceHelper.instantiate(serviceEntry
60 .getImplementation());
61 synchronized (manageableServiceContainer) {
62 manageableServiceContainer.registManagebleService(object,
63 serviceEntry);
64 }
65 }
66 }
67
68 }