@RequestMapping("/testJar")public @ResponseBody String exteriorJar(int ys, int csd,int jg,int sf,int yf,intsd){
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= newFileOutputStream(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= newObject[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();
}returnresult;
}