📄 containerclient.java
字号:
package com.jdon.controller;
import com.jdon.bussinessproxy.meta.MethodMetaArgs;
import com.jdon.bussinessproxy.cache.VisitorFactory;
import com.jdon.bussinessproxy.ServiceAdapter;
import javax.servlet.http.HttpServletRequest;
import com.jdon.bussinessproxy.cache.ComponentCacheVisitor;
import com.jdon.bussinessproxy.TargetMetaDef;
import com.jdon.bussinessproxy.AopClient;
import com.jdon.util.Debug;
import com.jdon.bussinessproxy.KeyConstants;
import com.jdon.bussinessproxy.meta.EJBTargetMetaDef;
import javax.servlet.ServletContext;
import com.jdon.bussinessproxy.config.TargetMetaDefLoader;
public class ContainerClient {
private final static String module = ContainerClient.class.getName();
private ServletContainerFinder scf = new ServletContainerFinder();
/**
* 从框架容器中获得普通POJO实例
* @param serviceClassName 类如 Modelmanager.class
* @param sc ServletContext
* @return Object
*/
public Object getPOJOService(String name, HttpServletRequest request) throws
Exception {
ContainerWrapper containerWrapper = null;
Object result = null;
try {
Debug.logVerbose(" ---> getPOJOService ", module);
containerWrapper = scf.findContainer(request);
result = containerWrapper.lookup(name);
} catch (Exception ex) {
Debug.logError(" ---> getPOJOService error " + ex, module);
throw new Exception("system.error");
}
return result;
}
public Object getPOJOService(String name, ServletContext sc) throws
Exception {
ContainerWrapper containerWrapper = null;
Object result = null;
try {
Debug.logVerbose(" ---> getPOJOService ", module);
containerWrapper = scf.findContainer(sc);
result = containerWrapper.lookup(name);
} catch (Exception ex) {
Debug.logError(" ---> getPOJOService error " + ex, module);
throw new Exception("system.error" + ex);
}
return result;
}
/**
* 从配置文件中获得EJB的定义
*
* @param ejbName String
* @param request HttpServletRequest
* @return TargetMetaDef
*/
public TargetMetaDef getMetaDefFromXml(String serviceName,
HttpServletRequest request) throws Exception {
Debug.logVerbose("... getEJBMetaDefFromXml ", module);
ContainerWrapper cw = null;
TargetMetaDef metaDef = null;
try {
cw = scf.findContainer(request);
TargetMetaDefLoader targetMetaDefLoader = (TargetMetaDefLoader)
cw.lookup(KeyConstants.SERVICE_METALOADER_NAME);
metaDef = targetMetaDefLoader.getTargetMetaDef(serviceName);
Debug.logVerbose(" found :" + serviceName, module);
} catch (Exception ex) {
Debug.logError(" ---> getMetaDefFromXml error " + ex, module);
throw new Exception("system.error" + ex);
}
return metaDef;
}
/**
* 根据目标对象的元数据和方法参数等,直接获得目标对象处理结果
* @param ejbName String
* @param methodMetaDef MethodMetaArgs
* @param request HttpServletRequest
* @return Object
*/
public Object visitEJBService(String ejbName,
MethodMetaArgs methodMetaArgs,
HttpServletRequest request) throws
Exception {
Object result = null;
try {
Debug.logVerbose("... visitEJBService ejbName = " + ejbName, module);
Debug.logVerbose(" MethodMetaArgs = " + methodMetaArgs.toString(),
module);
TargetMetaDef targetMetaDef = getMetaDefFromXml(ejbName, request);
result = visitEJBService(targetMetaDef, methodMetaArgs, request);
} catch (Exception ex) {
Debug.logError(" ---> visitEJBServiceerror " + ex, module);
throw new Exception("system.error" + ex);
} catch (Throwable ex) {
Debug.logError(" ---> visitEJBServiceerror " + ex, module);
throw new Exception("system.error" + ex);
}
return result;
}
/**
* 访问EJB服务核心
*
*
* @param targetMetaDef TargetMetaDef
* @param methodMetaDef MethodMetaArgs
* @param request HttpServletRequest
* @return Object
*/
public Object visitEJBService(TargetMetaDef targetMetaDef,
MethodMetaArgs methodMetaDef,
HttpServletRequest request) throws
Exception {
Debug.logVerbose(" .. enter visitEJBService core ", module);
ContainerWrapper cw = null;
Object result = null;
try {
cw = scf.findContainer(request);
targetMetaDef.setMethodMetaArgs(methodMetaDef);
Debug.logVerbose("... lookup for " + KeyConstants.AOP_CLIENT, module);
AopClient aopClient = (AopClient) cw.lookup(KeyConstants.AOP_CLIENT);
Debug.logVerbose("... lookup for " + KeyConstants.VISIORFACTORY_NAME,
module);
VisitorFactory visitorFactory = (VisitorFactory) cw.lookup(KeyConstants.
VISIORFACTORY_NAME);
ComponentCacheVisitor cm = visitorFactory.createCacheVisitor(request,
targetMetaDef);
result = aopClient.invoke(cm, targetMetaDef);
} catch (Exception ex) {
Debug.logError(" ---> visitEJBServiceerror " + ex, module);
throw new Exception("system.error" + ex);
} catch (Throwable ex) {
Debug.logError(" ---> visitEJBServiceerror " + ex, module);
throw new Exception("system.error" + ex);
}
return result;
}
/**
* 从框架容器中获得普通EJB实例
* @param ejbName String 配置中的ejbService的name值
* @param request HttpServletRequest
* @param sc ServletContext
* @return Object
*/
public Object getEJBService(String ejbName, HttpServletRequest request) throws
Exception {
Object result = null;
try {
Debug.logVerbose("... load ServiceRMIImp from container ", module);
TargetMetaDef eJBMetaDef = getMetaDefFromXml(ejbName, request);
result = getEJBService(eJBMetaDef, request);
} catch (Exception ex) {
Debug.logError(" ---> getEJBService error " + ex, module);
throw new Exception("system.error");
}
return result;
}
/**
* 获得EJB 服务
* @param ejbName String
* @param request HttpServletRequest
* @return Object
*/
public Object getEJBService(TargetMetaDef eJBMetaDef,
HttpServletRequest request) throws
Exception {
ContainerWrapper cw = null;
Object result = null;
try {
Debug.logVerbose("... getEJBService from container ", module);
cw = scf.findContainer(request);
ServiceAdapter serviceAdapter = (ServiceAdapter) cw.lookup(KeyConstants.
SERVICE_NAME);
result = serviceAdapter.getService(eJBMetaDef, request);
} catch (Exception ex) {
Debug.logError(" ---> getEJBService error " + ex, module);
throw new Exception("system.error");
}
return result;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -