Aktarımların Controller alt yapısı ile yapıldığı fakat çağırımların multi thread işletildiği kod örneği aşağıda verilmiştir.
Server side
/**
* testGLAccounts
* minThread
* maxThread
* queueCapacity--> liste boyutu
* waitWhenBlocked -- true,false
*/
public Object ControllerMultiThreadTest(IServerContext context){
LbsControllerUtil.configureTaskQueue(3, 10, 30, true);
try
{
System.out.println("Single task started :" + JLbsDateUtil.dateToString(GregorianCalendar.getInstance()));
GLControllerSample controllerSample = new GLControllerSample();
GLControllerParams params = new GLControllerParams();
params.m_Code = "CODE_SINGLE_TEST";
params.m_Desc = "DESC_SINGLE_TEST";
controllerSample.setParams(params);
LbsControllerUtil.executeControllerTask(context, controllerSample);
}
catch (Exception e)
{
System.err.println("Error singletask : " + e.getMessage());
}
finally
{
System.out.println("Single task finished :" + JLbsDateUtil.dateToString(GregorianCalendar.getInstance()));
}
try{
System.out.println("Multi task started :" + JLbsDateUtil.dateToString(GregorianCalendar.getInstance()));
GLControllerParams params = new GLControllerParams();
LbsQueuedTask queuedTask = new LbsQueuedTask(params, GLControllerSample.class)
{
@Override
public void initialize(ILbsControllerTask currentTask, ILbsTaskParams params)
{
if (currentTask instanceof GLControllerSample)
{
GLControllerSample glTask = (GLControllerSample) currentTask;
glTask.setParams((GLControllerParams) params);
}
}
};
LbsControllerUtil.executeQueuedTask(context, queuedTask);
LbsControllerUtil.waitForQueuedTasks(params, true);
System.out.println("Multi task end :" + JLbsDateUtil.dateToString(GregorianCalendar.getInstance()));
}
catch (Exception e)
{
System.err.println("Error multitask : " + e.getMessage());
}
finally
{
System.out.println("Multi task finished :" + JLbsDateUtil.dateToString(GregorianCalendar.getInstance()));
}
return "dönüş değeri atanacak !";
}
Client Side
Aşağıdaki kod parçasındai, server side tanımlı metod çağrımı yapılmaktadır.callRemoteMethod("CSRV3", "ControllerMultiThreadTest", ...
public void ControllerMultiTaskTestonClick(JLbsXUIControlEvent event)
{
try
{
IClientContext context = event.getClientContext();
RemoteMethodResponse MyResponse = context.callRemoteMethod("CSRV3", "ControllerMultiThreadTest", new Object[]{null});
String MyResponseStr = MyResponse.Result.toString();
JOptionPane.showMessageDialog(null, MyResponseStr);
}
catch (Exception e)
{
e.printStackTrace();
JOptionPane.showMessageDialog(null, e.getMessage());
}
}
NOT : LPT Projenizdeki Definitions dizininde Remoteservices te tanımın yapılmış olması gerekir.
Cevap vermek için giriş yapmanız gerekmektedir.
Soru sormak için lütfen oturum açınız.
multi thread controller
30/03/15 09:33   j-Platform/LPTj-Platform'a veri aktarımlar için controller teknolojisini kullanıyoruz. Performansını arttırmak için multi thread yapıyı kullanabilirmiyiz?
Aktarım yapacağımız firma sayısı ve aktarım yapacağımız kayıt oldukça fazla. Mümkün ise multi thread olarak kayıtları yapmak daha sağlıklı olacaktır.
multi thread controller controller