ورود

View Full Version : نگه داشتن مقادیر object قبلی در object جدید



pro_mvb
شنبه 23 دی 1391, 12:27 عصر
سلام
من یه کد دارم به این شکل:

package jspy;
import java.io.*;
import java.net.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;


public class Jserver implements Serializable{

public static void main(String[] args){
System.out.println("oyy amoo");
try{
ServerSocket listener = new ServerSocket(1368);
System.out.println("server is ready for request......");
while(true){
Socket socket=listener.accept();
Tests test=new Tests(socket);
test.Do();
}
}catch(Exception e){
e.printStackTrace();
}
}
}



کارش اینه مدام روی پورت Listen می کنه و request که سمتش میاد ، از کلاس تست obj رو میسازه و اون Obj یک سری مقادیر که از سمت کلاینت اومده نگه میداره و خروحی رو بر حسب اونا میسازه.

بحث اینجاس که با درخواست بعدی obj دوباره ساخته میشه و Obj قبلی که دارای مقدار بود از بین میره ! ولی خوب من به مقدار های اون obj نیاز دارم تا کارم پیش بره!
چیکار کنم که مقدار های Obj قبلی از بین نره (اگرم از حلقه بیارمش بیرون فقط 1 بار اجرا میشه و بی فایدس )

ممنون:قلب::قلب:

spiderman200700
شنبه 23 دی 1391, 18:25 عصر
سلام.
test رو سراسری تعریف کن

L u k e
شنبه 23 دی 1391, 19:02 عصر
خوب شما باید برای هر Request یک ترد ایجاد کنید که در ورودی شی Socket رو بگیره و پردازش مربوط به Reuqest رو انجام بده ( مثلا به اسم Session (
و یک HashMap داشته باشید از نوع Session که زمانی که یه Request می یاد با یک کلیدی اون شی Session رو می زاره تو اون ( که واسه دسترسی به اون اون کلید رو بدید و اون Session مربوط رو بگیرید می تونید از IP استفاده کنید )
که بعد از تموم شدن پردازش Request باید اون رو از HashMap ه پاک کنید .
این کارتون برای افزایش performance نیاز داره که بصورت Multithread پیاده سازی شده
مثلا تو Thread اصلی مدام چک کنید که Request جدید اومد بزارید تو اون Hashmap
و یه ترد دیگه داشته باشید که اون Hashmap رو تک تک می خونه و کارشو انجام می ده و پاکش می کنه
می تونید از Queue هم استفاده کنید به جای Hashmap
این جوری یه سیستم pooling خیلی ساده می تونید واسه server تون داشته باشید
یه پیشنهاد دیگه می تونید از Framework های آماده استفاده کنید .
vertx هم که رویداد گراس مثل nodejs
jetty هم هست که سادس مثل Tomcat و Glassfish

pro_mvb
شنبه 23 دی 1391, 21:40 عصر
محسن اصلا نفهمیدم چی گفتی :D
اینو بگم همه request ها از یه ip هست