@RequestMapping("/testJar")
public @ResponseBody String exteriorJar(int ys, int csd,int jg,int sf,int yf,int sd){
String result = "error";
//从数据库中读取算法类
String sql = "select EXTERIOR from T_EXTERIOR where id=2";
InputStream ins = null;
try{
Connection con = jdbcTemplate.getDataSource().getConnection();
Statement ps = con.createStatement();
ResultSet rs = ps.executeQuery(sql);
while(rs.next()){
Blob blob = rs.getBlob("EXTERIOR");
ins = blob.getBinaryStream();
}
File file = new File("test.jar");
OutputStream os = new FileOutputStream(file);
byte[] bt = new byte[1024];
int size = 0;
while((size=ins.read(bt))!=-1){
os.write(bt,0,size);
}
os.flush();
os.close();
ins.close();
URLClassLoader loader = new URLClassLoader(new URL[]{new URL("file:"+file.getAbsolutePath())});
Class cs = loader.loadClass("com.tf.userApp.bean.Exterior");
Object obj = cs.newInstance();
Method[] methods = obj.getClass().getMethods();
for(Method method : methods){
if(method.getName().equals("add")){
Class[] css = method.getParameterTypes();
Object[] params = new Object[css.length];
params[0] = ys;
params[1] = csd;
params[2] = jg;
params[3] = sf;
params[4] = yf;
params[5] = sd;
/**
int index = 0;
for(Class cs : css){
if(String.class == cs){
params[index++] = "String val is :" + index;
}
}*/
Object rt = method.invoke(obj, params);
if(rt.getClass() == Integer.class){
result = String.valueOf((Integer)rt);
}else if(rt.getClass()==String.class){
result = (String)rt;
}
}
}
}catch (Exception e) {
e.printStackTrace();
}
return result;
}