+++ /dev/null
-package com.lavans.luz2.lremote.service;\r
-\r
-import java.util.Collections;\r
-import java.util.HashMap;\r
-import java.util.Map;\r
-\r
-import net.sf.cglib.proxy.Enhancer;\r
-\r
-import com.lavans.luz2.lremote.intercetor.RemoteInterceptor;\r
-import com.lavans.luz2.util.BeanManager;\r
-\r
-/**\r
- * Service Manager Implementation for XML file(default).\r
- * @author dobashi\r
- *\r
- */\r
-public class ServiceManagerXml implements ServiceManager{\r
- /** logger */\r
- //private static final Log logger = LogFactory.getLog(ServiceManagerXml.class);\r
- /** singleton instance */\r
- private static ServiceManager instance = new ServiceManagerXml();\r
-\r
- /** cache of all service */\r
- private Map<String, Object> serviceMap = Collections.synchronizedMap(new HashMap<String, Object>());\r
-\r
- /**\r
- * constructor\r
- */\r
- public static ServiceManager getInstance(){\r
- return instance;\r
- }\r
-\r
- private ServiceManagerXml(){\r
- init();\r
- }\r
-\r
- /** initialize */\r
- public void init(){\r
- }\r
-\r
- public Object getService(String group, String id) {\r
- return getService(BeanManager.toFullId(group, id));\r
- }\r
- public Object getService(String id) {\r
- // search from cache\r
- Object service = serviceMap.get(id);\r
- // If service is found, return cache.\r
- if(service!=null){\r
- return service;\r
- }\r
-\r
- // If the service is not cached then create new one.\r
- Class<? extends Object> clazz = BeanManager.getBeanClass(id);\r
-\r
- // intercept by CGLIB\r
- Enhancer enhancer = new Enhancer();\r
- enhancer.setSuperclass(clazz);\r
- enhancer.setCallback(new RemoteInterceptor());\r
- service = enhancer.create();\r
- serviceMap.put(id, service);\r
-\r
- return service;\r
- }\r
-\r
- /**\r
- * Get for local. Never set Interceptor. This methos equals to BeanManager.\r
- */\r
- public Object getServiceLocal(String group, String id) {\r
- return BeanManager.getBean(group, id);\r
- }\r
- public Object getServiceLocal(String id) {\r
- return BeanManager.getBean(id);\r
- }\r
-\r
-}\r