نوشته شده توسط
maamiri
فكر ميكنم اين مثالي كه تو لينك داده session باشه.
خوب پس نتيجه اخلاقي اين ميشه كه session رو توضيح بديد
اینجا مگه آموزشگاست .
session در هرجا معنی خواص خودشو داره. من نمی دونم مربوط به کدوم قسمت رو میخوای بدونی.
اگر منظورت session bean ها در EJB 3 هستند من به شما پیشنهاد می کنم با این پایه ضعیفی که داری بیخیال بشی و بری اول سراغ مطالب پایه ای تر و اولیه J2EE بهتره.
نوشتن چند خط کد که معنیشم نمی فهمی و برای اجرای آنها دیگه IDE و نمی دونم آموزش گام گام نمی تونه کمکت کنه.
باید بشنی وقت بزاری چندین کتاب بخونی بعد کمک بگیری.
خیلی مفهوم ها ست که باید بدونی. و واقعا من نمی تونم اینجا به همشون توضیح بدم. شما کتاب servlet & jsp ماله core java رو تهیه کن زبان اصلی. با مفاهیم اولیه j2ee آشنا بشو. با یک servlet container آشنا بشو مثل tomcat. تنظیمات و قابلیت ها رو یاد بگیر. پیاده سازی بکن بعد تازه وارد یک دنیای دیگه بشو. همین خودش یک ۲ سالی مشغولت می کنه. عوضش بعد از ۲ سال یک چیزخوب و قوی و با معلومات پر فیلتر شدی. این نظر من. با این تفاسیر برای اینکه باورت بشه که مطالبی که گفتم واقعیت داره من یک مثال ساده HelloWorld رو با ejb3 و session bean ها به اضافه مطلب jndi برای شما می نویسم.
web application: glassfish
در قسمت server و مربوط به فسمت business کار که قرار چاپ کنه hello world بعد اونو به سمت client پاس بده از طریق jndi از طرف client این business صدا می شه و رشته تولید شده به سمت client بر گردونده می شه و درسمت کلات رشته hello world چاپ می شه.
در قسمت server
import javax.ejb.Remote;
@Remote
public interface HelloRemote {
public String sayHelloWorld();
}
حالا نوبت نوشتن session bean هست که از طریق این interface مشخص می کنه که یک بصورت remote هست و باید یک متدود رو پیاده سازی کنه که همون چاپ کردن hellow world است.
این session بصورت stateless هست. طول عمر کوتاه ودر کنترل ejb container هست. یعنی این ejb container شما هست که بنا به در خواست client از اون instance می گیره و بعدش هم خودش هر موقع که بخواد دخلشو می یاره.
import javax.ejb.Stateless;
@Stateless
public claas HelloBean implements HelloRemote {
public String sayHelloWorld() {
return "Hello World";
}
}
حالا بعد از compile کردن این دوتا یک jar فایل درست می کنیم بعد این jar file رو deploy می کنیم توی web application نمون که ejb container داره. می ریم سراغ client و jndi
اول یک سری نتظمات مربوط به glassfish و بعد یک context که می رهه از طریق jndi اون object مورد نظر که همونی هست که توی EJB Container مون Deploy کردیم رو صدا می کنه و کار تمومه.
import java.util.Properties;
import javax.naming.Context;
import javax.naming.InitialContext;
/**
*
* @author root
*/
public class Main {
public static void main(String[] s) throws Exception {
Properties prop = new Properties();
prop.setProperty("java.naming.factory.initial", "com.sun.enterprise.naming.SerialInitContextFactor y");
prop.setProperty("java.naming.factory.url.pkgs", "com.sun.enterprise.naming");
prop.setProperty("java.naming.factory.state", "com.sun.corba.ee.impl.presentation.rmi.JNDIStateF actoryImpl");
prop.setProperty("org.omg.CORBA.ORBInitialHost", "localhost");
prop.setProperty("org.omg.CORBA.ORBInitialPort", "4325");
Context ctx = new InitialContext(prop);
HelloRemote h = (HelloRemote) ctx.lookup("HelloRemote");
System.out.println(h.sayHelloWorld());
}
}
بعد این فایل مثل حالت معمولی با javac کامپایل و اجرا می شه و میره از توی server و business رو صدا می کنه
الله اکبر داره.