PDA

View Full Version : RMI در جاوا



hamidshahram
دوشنبه 10 دی 1386, 16:17 عصر
با سلام.
لطفا در این مورد منو راهنمایی کنید. من یک سری اطلاعاتی دارم اگر کسی می دونه به من بگه.:متفکر::عصبانی++:

YourName
دوشنبه 10 دی 1386, 16:27 عصر
با سلام و تبریک به شما کاربر جدید
مشابه Remoting در دات نت هست و برای فراخوانی متدها از راه دور استفاده می شود ولی امروزه با آمدن وب سرویسها نقش آنان کمرنگ تر شده است

hamidshahram
دوشنبه 10 دی 1386, 16:29 عصر
ممنونم می خواستم از این روش در یک پروژه ملی استفاده کنم ولی با صحبت های شما می خوام از وب سرویس استفاده کنم
لطفا یک مثال از اون برام بزنید می خوم ببینم چطوره؟
حل نشده

hamidshahram
دوشنبه 10 دی 1386, 19:32 عصر
سلام
البته من یه چیزایی در مورد Skeleton در مورد اون شنیدم ولی نمودنم چیه یک نمونه مثال هم دارم به صورت زیر:
import java.rmi.*;
import java.rmi.server.*;
publicclass SampleClient
{
publicstaticvoid main(String[] args)
{
// set the security manager for the client
System.setSecurityManager(new RMISecurityManager());
//get the remote object from the registry
try
{
System.out.println("Security Manager loaded");
String url = "//localhost/SAMPLE-SERVER";
SampleServer remoteObject = (SampleServer)Naming.lookup(url);
System.out.println("Got remote object");
//narrow the object down to a specific one
//System.out.println("Location: " + System.getProperty("LOCATION"));
// make the invocation
System.out.println(" 1 + 2 = " +
remoteObject.sum(1,2) );
}
catch (RemoteException exc)
{
System.out.println("Error in lookup: " + exc.toString());
}
catch (java.net.MalformedURLException exc)
{
System.out.println("Malformed URL: " + exc.toString());
}
catch (java.rmi.NotBoundException exc)
{
System.out.println("NotBound: " + exc.toString());
}

}
}

saeed_Z_F
سه شنبه 11 دی 1386, 12:57 عصر
سلام
به این لینک سر بزنید بدردتون میخوره :
http://java.sun.com/docs/books/tutorial/rmi/index.html

hamidshahram
چهارشنبه 26 دی 1386, 11:53 صبح
لطفا بیشتر کمک کنید
اگه ممکنه فارسی باشه
با تشکر

behrangsa
چهارشنبه 26 دی 1386, 13:55 عصر
ممنونم می خواستم از این روش در یک پروژه ملی استفاده کنم ولی با صحبت های شما می خوام از وب سرویس استفاده کنم
لطفا یک مثال از اون برام بزنید می خوم ببینم چطوره؟
حل نشده

با پوزش بسیار، شما می‌خواهید از RMI در یک پروژه ملی استفاده کنید، بعد انتظار دارید که این تکنولوژی را در یک تالار برنامه‌نویسی یاد بگیرید؟ فکر نمیکنید که این بی‌انصافی باشد؟ اگر واقعاٌ میخواهید RMI را یاد بگیرید، چرا یک کتاب مربوط به آن را تهیه نمیکنید و مطالعه نمی‌کنید؟ اگر این یک پروژه شخصی بود باز میشد در این باره بحث کرد اما یک پروژه ملی بسیار مهمتر از آن است که بخواهیم تا این حد سطحی با آن برخورد کنیم...

در ضمن با کمی جستجو در اینترنت جواب تمام سوالات خود را خواهید یافت. اگر آشنایی شما با این مفاهیم بسیار کم است شاید بهترین جا برای شروع کردن wikipedia باشد. بعد برای rmi tutorial و web services tutorial جستجو کنید. البته خود سایت سان میکروسیستمز یک خود آموز برای یادگیری web services دارد که برای شروع بد نیست.

موفق باشید،
بهرنگ

zer0cool
پنج شنبه 27 دی 1386, 08:49 صبح
RMI یک تکنولوژی قدیمی هستش و تکنولوژی جدیدش EJB هستش ولی من یه کد ساده از RMI براتون گذاشتم امیدوارم به دردتون بخوره، ولی بهر حال RMI یه تکنولوژی قدیمی محسوب میشه و اگه شما قصد انجام یه پروژه در سطح ملی رو دارین بهتر از EJB استفاده کنید.

hamidshahram
پنج شنبه 04 بهمن 1386, 14:20 عصر
اگه ممکنه در مورد ejb توضیح بدهید و مثالی بزنید

javaphantom
پنج شنبه 04 بهمن 1386, 17:44 عصر
ejb مجموعه ای از چند فایل جاوای که در نهایت تشکیل یک مولفه یا component می کند. وقتی صحبت از componet می کنیم اون موقع باید صحبت از برنامه نویسی کامپونتی نیز بکنیم. تعریف کامپونت چیه؟ واقعا componet هم مانند تعریف object در دهه های 70 تا 80 امروزه بسیار سخت و نا مفهوم به نظر می رسه اما به زبان ساده می شه اینطور تعریف کرد که کامپونت مجموعه ای از چند object هست که به محیط خارج از خودش هیچ وابستگی نداره. شما در زبانهای visual بسیار از این کامپونت ها استفاده کرده این مسله JButton یک کامپونت هست که از چندین object مختلف یا حتی کامپونتهای دیگه استفاده شده ولی موجودیت جداگانه برای خودش داره. ejb هم همانطور که گفته شد مجموعه ای از چند محصول مختلف جاوایی یا همان object های جاواست. صحبت از این همه object توی هم باشه ولی مدیریت نداشته باشیم ؟ این کامپونت ها همه در قسمت server اجرا می شن پس نیاز به یک نرم افزار دیگه داریم تا مدیریت فرایند تولید و چیدمان این کامپونت ها را بر عهده داشته باشه. دقیقا ما ظرفی در قسمت سرور می خوایم که این کامپوننت ها درون اون بریزیم تا اون بتونه طول عمر و نحوه گردش این کامپونت ها رو مدیریت می کند که به آن ejb Container می گویند. این تکنولوژی در حال حاضر برای ایجاد برنامه های سازمانی یا همان Enterprise بسیار استفاده می شود تازه تمام تکنولوژی های قبل خودشم از جمله CORBA رو نیز پشتیبانی می کند در نسخه های قبلی آن ۱.۲ تا ۲.۱ این تکنولوژی بسیار پیچیدگی های خاصه حودشرو داشت در نتیجه شرکت های مختلف شروع به ساختن framework هایی کردند که بتواند برای تولید این نوع کامپونت ها بسیار سریع عمل کنه اما خوب استاندارد برای سان نبود از جمله struts , spring با اومدن آخرین نسخه آن یعنی ejb3 دیگر این مشکلات هم حل شد. ejb3 با شعار POJO Plain Old Java Object و همچنین با کمک annotation که جای گزین فایلهای عظیم xml شد دیگر واقعا کار را بسیار آسان کرد و هشتداری بود برای framework بازها.
اینهایی که گفته شده حتی اول ejb هم نیست. ejb کد زدن نیست در ejb بحث bean provider و assembler و admin و architecture و و و هست. کلی مفهوم باید بدونی محیط IDEنیست که کلمه ای در باب اون بگی و بقیم بیان تاییدت کنن. این شده بار عملی این فروم.
مثال خواستی جالبه تازه هم برات نوشتم کجا میخوای اجراش کنی؟ من فقط یک اشاره در مورد ejb container کردم کلی خود اون بند و بساط داره کسی که می خواد enterprise کار کنه باید بدونه SOA چیه تازه بعدش IT می یاد تو کار ولی خوب ما یک مثال هم می زنیم که شما از ما راضی باشی مثال ساده HELLO WORD ولی اینجا من بلد ینستم که کد بزنم درست چاپ بشه امید وارم خودت یک جوری بتونی مرتبش کنی
لوازم لازم:
یک کامپیوتر که بر روی آن JVM نسب باشد JDK1.6
یک web server ما خودمون با JBoss کار می کنیم jboss-4.2.1.GA حتما نسخه چهار چون داریم با EJB3 کار می کنیم
روند کار
یک interface ساده به نام Hello که در آن یک method تعریف می کنیم که مقدار string بر می گرداند
یک فایل جاوایی که این interface در آن پیاده سازی یا implement می شود
در آخر سر یک jar فایل که نتیچه کارمون هست :D این قدرت POJO و ejb3

public interface Hello {
public String sayHello();
}
import javax.ejb.*
@Remote(Hello.class)
@Stateless
public class HelloBean implements Hello {
pubic String sayHello() {
return "Hello Java";
}
}
تموم شد.
کنار این دو فایل class یک folder به نام META-INF درست کن و در داخل آن یک فایل به نام MANIFEST.MF بساز. بعد برگرد یک مرحله قبل یعنی کنار اون دو کلاس بعد حالا جر فایل
jar -cvf mybean.jar *
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
این فایل باید در جایی که به container گفته شده که آن را deploy کند باید copy شود
تموم شد.
حالا سوال پیش می آید بابا من انیو چه جوری اجرا کنم.
JNDI در یک کلام. این JNDI چیه؟ می تونید اینو به عنوان یک سوال مطرح کنید بیان در باب این java naming هم یک صحبتی بکنند و ببیند بهترین IDE کدام است.
در ejb3 این کار هم راحت شده دیگر نیازی نیست
تا اینجا چیزهایی که من گفتم بسیار خلاصه بود ولی پر از مطلب
تا اینجا ببین چه جوری می ری جلو اگر پیشرفت خوب بود بریم سر درس بعدی
چاکس

hamidshahram
شنبه 06 بهمن 1386, 12:25 عصر
با سلام
ممنون از لطف شما خیلی خوب بود
واقعا از شما در این زمینه تشکر می کنم
اگه لطف کنید و شماره تلفن یا ایمیل به من بدید ممنون میشم:لبخندساده:

javaphantom
شنبه 06 بهمن 1386, 14:24 عصر
آیا این کار جزو قوانین اینجا هست . خوب اگر بازهم سوال دارید مطرح کنید بزاریم همه دوستان هم نظرات و پیشنهادات خودشون رو بدن

hamidshahram
دوشنبه 14 اردیبهشت 1388, 10:43 صبح
حرف شما درسته ولي بقيه مسائل ديگه فني و نمي تونم تايپ كنم چون زمان زيادي مي گيره
حالا يه شماره تلفن لازم دارم:متفکر:

javaphantom
دوشنبه 14 اردیبهشت 1388, 19:53 عصر
حرف شما درسته ولي بقيه مسائل ديگه فني و نمي تونم تايپ كنم چون زمان زيادي مي گيره
حالا يه شماره تلفن لازم دارم:متفکر:

آدرس ایمیل من در yahoo وچود داره می تونید بصورت ایمیل با من در تماس باشید.

javasurgeon@yahoo.com

unhandled_event
یک شنبه 20 اردیبهشت 1388, 10:12 صبح
سلام
من تونستم یک سرور کوچک rmi رو در حد فراخوانی یک متد ساده راه بندازم و بصورت local آزمایش کردم کار کرد با IP کامپیوتر در شبکه و یا حتی اسم و localhost.
اما وقتی از یک کامپیوتر دیگه شبکه میخوام به سرور rmi وصل بشم
connection refused میده و هر کاری کردیم درست نشده تا الان
میخواستم ببینم آیا تنظیم و permission خاصی باید در client.policy یا server.policy انجام بدیم ؟ میتونه مشکل شبکه باشه ؟
ممنون

javaphantom
یک شنبه 20 اردیبهشت 1388, 16:51 عصر
سلام
من تونستم یک سرور کوچک rmi رو در حد فراخوانی یک متد ساده راه بندازم و بصورت local آزمایش کردم کار کرد با IP کامپیوتر در شبکه و یا حتی اسم و localhost.
اما وقتی از یک کامپیوتر دیگه شبکه میخوام به سرور rmi وصل بشم
connection refused میده و هر کاری کردیم درست نشده تا الان
میخواستم ببینم آیا تنظیم و permission خاصی باید در client.policy یا server.policy انجام بدیم ؟ میتونه مشکل شبکه باشه ؟
ممنون

با خود api های rmi کار کردید یا با container ejb کار کردید؟

unhandled_event
یک شنبه 20 اردیبهشت 1388, 23:39 عصر
با rmiregistry . اول rmiregistry رو اجرا میکنم بعد برنامه سرور رو رو همون پورت پیش فرض که 1099 هست.

hamidshahram
دوشنبه 28 اردیبهشت 1388, 12:33 عصر
من نمي دونم ولي مي توانيد به سايت http://www.java.sun.com مراجعه فرماييد

enterprise
پنج شنبه 17 آذر 1390, 11:38 صبح
Connection refused
ممکنه از
firewall ویندوز ؟
باشه