я реализовал плагин инфраструктуру, где у меня есть:Performance с URLClassLoader с банкой файлами
а> война файл: Эта война файл имеет класс, который загружает файл банка динамически из файловой системы.
b> Файл Jar: они размещаются в файловой системе, которая будет использована военным файлом выше.
Я беспокоюсь, что файл jar будет вызываться много в день. Является ли мой дизайн правильным или есть возможности для улучшения? Как это повлияет на производительность военного файла?
War класс контроллера файла:
public class PluginController {
/**
* This method is used to invoke plugin class dynamically
* @param requestBean : This object contains all parameter to
* complete the request
* @return responseBean : This object contains the response from vendor
*/
public ResponseBean invokePlugin(RequestBean requestBean){
URLClassLoader urlClassLoader = null;
ResponseBean responseBean = null;
Map<String, String> parameters = marshalRequest(requestBean);
try {
urlClassLoader = new URLClassLoader(new URL[]{new URL("file:///C:/Users/jamju02/Desktop/today/otp.jar")});
if(urlClassLoader != null){
Class pluiginClass = urlClassLoader.loadClass("com.ca.pas.plugin.bean.PluginTest");
if(pluiginClass != null){
// Create a new instance from the loaded class
Constructor<?> constructor = pluiginClass.getConstructor();
Object classobject = constructor.newInstance();
Method method = pluiginClass.getDeclaredMethod("sendOTP", Map.class);
method.setAccessible(true);
responseBean = (ResponseBean) method.invoke(classobject, parameters);
}else{
System.out.println("class file name not found in jar file");
}
}else{
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}finally{
try {
if(urlClassLoader != null){
urlClassLoader.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return responseBean;
}
public Map<String, String> marshalRequest(RequestBean requestBean){
Map<String, String> parameters = new HashMap<>();
parameters.put("TXN_ID", requestBean.getTxnId());
parameters.put("BANK_ID", requestBean.getBankId());
parameters.put("RANGE_ID", requestBean.getRangeId());
parameters.put("CARD_NUMBER", requestBean.getCardNumber());
parameters.put("CARDHOLDER_NAME", requestBean.getCardholderName());
parameters.put("OTP", requestBean.getOrb().getOtp());
parameters.put("MOBILE_NUMBER", requestBean.getOrb().getMobileNumber());
parameters.put("EMAIL", requestBean.getOrb().getEmailAddress());
return parameters;
}
}
================================== =============================================
Класс Jar-файла имеет некоторый контент для вызова веб-службы.
Подсказка: если вы ищете обзор рабочего кода, рассмотрите возможность обращения к codereview.stackexchange.com ... – GhostCat