نوشته شده توسط
m44miri
پس در glassfish استفاده از mappedName اشکالی نداره!! ولی چرا وقتی mappedName وجود داره دائما error پیدا نکردن ماژول را میده..
شما میدونی مشکل از چی میتونه باشه؟ شما خودتون از چه application server استفاده میکنید؟
آخه این چه حرفی داری می زنی که اشکالی نداره. معلومه که نداره. مشکل شما اینکه هنوز مفهوم IOC، Container و از همه مهمتر JNDI رو متوجه نشدین.
وقتی کلاسی که بالاش تگ stateless می خوره داخل container ejb می اندازی یا به عبارت دیگر deploy می کنی به این معناست که داری به container می گی بابا life cycle این object دست تو یعنی خودت از این class object درست کن هر چندتا که باید بکنی خودت از بین ببر زمانی که باید از ببین ببری و هزار داستان دیگه. خوب حالا داستان JNDI چی هست. باید از این کلاسی که نمونه ازش ساخته می شه یک آدرسی درست بشه که شما از سمت کلاینت بتونی بهش دسترسی داشته باشی دیگه. مثل اینکه بگی c:\porogram files\java\bin\java.exe
یک آدرس داری می ری که به java.exe برسی.این داستان هم دقیقا برای اون object داره بوجود می یاد.
حالا می تونی یک shortcut برای آدرس بالا بوحود بیاری و اسمش رو بزار java و روی desktop بزاری. ولی نهایت اون آدرس بالا رو خودش میره. داستان mappedName هم همینه. مثل shortcut می مونه. بجایی اینکه کل آدرس رو بدی یک اسم بهش می دی او خودش آدرس رو می ره. ربطی به glassfish یا JBoss یا هر چیزه دیگه نداره. منتها در هر webapplication server آدرس دادن متفاوت مثل تفاوت windows با linux که تو windows برای جدا کردن فلودر از \ استفاده می شه در linux از /.
تو پست قبل بهت گفتم توی glassfish آدرس مستقیم رو نمی خواد بصورت java:global/EJBModule/SessionBean!ejb.SessionBeanRemote
بدی کافی هست که از آدرس package کلاس تا خود کلاس رو بدی
یعنی اگر کلاس تو که @Statateless هست توی package ی مثل com.ejb.MyClass هست همین رو فقط بنویس یعنی lookup("com.ejb.MyClass");
یا lookup("com/ejb/MyClass");