⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 containerclient.java

📁 Java/J2EE框架Jdon-Framework系统的Sample
💻 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 + -