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

📄 controller.java

📁 webwork study w ebwork study
💻 JAVA
字号:
package jaction.workspace;

import java.io.*;
import java.util.*;
import java.lang.*;
import java.lang.reflect.*;
import javax.xml.parsers.*;
import org.w3c.dom.*;
import org.xml.sax.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.*;
import javax.xml.transform.stream.*;

import jaction.utility.*;
import jaction.datapool.*;
import jaction.xml.*;

/**
 * 业务控制,任务分发类<br>
 * @author weigang
 * @version 1.1 
 * <p>clean by yanger 2003-4-24 11:58
*/

public class Controller {
	
    /**
    * 构造函数
    */
    public Controller()throws JactionException {
  	}

    /**
     * 控制处理,分发任务
	 * @param ip 输入参数
	 * @param op 输出参数
	 * @param sp 系统参数
	 * @throws Exception 业务调用异常
     */
    public static void invoke(InputParam ip, OutputParam op, 
    					SystemParam sp) throws Exception{

	    	String actionKey = ip.getString(Jaction.JACTION_ACTION_KEY);
			String beanName = ActionParser.getBeanName(actionKey);

		try{
			if(beanName==null)throw new Exception(ActionResource.getMessage("controller.error.nobeanname",actionKey));
	    	Class beanClass = Class.forName(beanName);
	    	
			FileUtil.log("ActionParser.getBeanName(actionKey):"+ActionParser.getBeanName(actionKey));
			Class cla[] = new Class[3];
			cla[0]=ip.getClass();
			cla[1]=op.getClass();
			cla[2]=sp.getClass();

			String callName = ActionParser.getMethod(actionKey);
			if(callName==null)//default call name is process(yanger 2003-4-13 10:38:22)
					callName = "process";
	    	Method call = beanClass.getMethod(callName,cla);//业务bean方法
			Object args[] = new Object[3];
			args[0]= ip;
			args[1]= op;
			args[2]= sp;
			

			//业务bean调用
			call.invoke(beanClass.newInstance(),args);
    	}
		//没有调用的方法
    	catch(NoSuchMethodException nsme){
			//nsme.printStackTrace();
			SysLogger.error("Controler", "invoke", "业务Bean不能得到process方法"+StringUtil.ObjectToString(nsme));
			throw nsme;
		}
		//安全性异常
		catch(SecurityException se){
			//se.printStackTrace();
			SysLogger.error("Controler", "invoke", "方法调用安全异常"+StringUtil.ObjectToString(se));
			throw se;
		}
		//方法调用
		catch(IllegalAccessException iae){
			//iae.printStackTrace();
			SysLogger.error("Controler", "invoke", "调用方法失败"+StringUtil.ObjectToString(iae));
			throw iae;
		}
		//参数异常
		catch(IllegalArgumentException iae2){
			//iae2.printStackTrace();
			SysLogger.error("Controler", "invoke", "调用方法参数异常"+StringUtil.ObjectToString(iae2));
			throw iae2;
		}
		//业务方法调用
		catch(InvocationTargetException ite){
			//得到方法里面的Exception
			SysLogger.error("Controler", "invoke", "业务类调用终止"+StringUtil.ObjectToString(ite));
			//ite.printStackTrace();
			Exception e = (Exception)ite.getTargetException();
			throw e;//抛出JactionException("errorCode")
		}
		//实例化异常
		catch(InstantiationException ie){
			SysLogger.error("Controler", "invoke", "实例化beanClass失败"+StringUtil.ObjectToString(ie));
			//ie.printStackTrace();
			throw (Exception)ie;
		}
		catch(ClassNotFoundException cnfe){
			//cnfe.printStackTrace();
			SysLogger.error("Controler", "invoke", "找不到指明的类:"+StringUtil.ObjectToString(cnfe));		
			throw cnfe;
		}
		catch(Exception e){
			//e.printStackTrace();
    		SysLogger.error("Controler", "invoke", "Excepton:"+StringUtil.ObjectToString(e));
    		throw e;
    	}
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -