📄 controller.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 + -