בעיה ב-RMI

DadleFish

New member
בעיה ב-RMI

אני מנסה להוסיף RMI INTERFACE למערכת שלנו ונתקלתי ב-exception הבא בהרצת ה-SERVER:
18:29:56.522 ERROR [main] # Failed setting up RMI interface! RemoteException occurred in server thread; nested exception is: java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is: java.lang.ClassNotFoundException: com.blahblah.blah.ifc.rmi.MsRMIServer_Stub​
עקבתי אחרי ה-RMI TRAIL של SUN, ועבדתי עם ה-TUTORIAL הזה. ה-TUTORIAL אפילו מציין את קיום ה-exception הנ"ל ותגובתו לעניין היא שצריך לדאוג שה-stub יהיה ב-classpath של הפרויקט; העניין הוא שה-stub אכן נמצא שם - שורה לפני ביצוע ה-Naming.rebing אני עושה new למחלקה שנמצאת בדיוק שם, ליד ה-stub, והיצירה מצליחה. ניסיתי להריץ את rmic שוב, וזה לא עזר. רעיונות? תודה!
 

galh

New member
לא ממש... ../images/Emo4.gif

רציתי רק להגיד שתחזור כבר ל- ++C ותפסיק להביך את עצמך.
למרות שגם שם התחלת לחרוק, ע"ע "צבעים בקונסול".
 

DadleFish

New member
אני צריך להזכיר שהקוד שלך מכוער?

אל תדאג, אני לא מפסיק עם ++C.
 

ahab

New member
עוד קצת פרטים..?

יעזור אם תתן את הפקודות בהן השתמשת כדי לקמפל ולהריץ את זה, ואת מיקום כל הקבצים הרלוונטיים. כרגע, מה שעולה לי לראש זה לבדוק שוב את ה-classpath, ואת ההגדרה של java.rmi.server.codebase.
 

DadleFish

New member
הממממ

אני עובד דרך ECLIPSE. הפרויקט הוא פרויקט גדול, הכל מתקמפל היטב. הקבצים מחולקים לספריית src שתחתיה מתקיימת היררכיית ה-com וכו', וספריית bin שגם תחתיה יש com וכו', רק שב-bin יש, כצפוי, קבצי class. הרצתי rmic על שם ה-class המלא כולל הנתיב (com....MsRMIServer), זוהי המחלקה הכוללת את המימוש של ה-interface היחיד שאני חושף. הרצתי את הפקודה כשאני עומד בספריית ה-bin. אח"כ הפעלתי את rmiregistry, והפעלתי את התוכנה שמכילה את ה-server, וקיבלתי את ה-exception האמור. ההגדרה של java.rmi.server.codebase? לא נגעתי בכזה דבר, בא לך להרחיב?
 

ahab

New member
codebase

מהאתר של sun:
This property specifies the locations from which classes that are published by this JVM (for example: stub classes, custom classes that implement the declared return type of a remote method call, or interfaces used by a proxy or stub class) may be downloaded. The value of this property is a string in URL format (or a space-separated list of URLs in 1.2 and later) that will be the codebase annotation for all classes loaded from the CLASSPATH of (and subsequently marshalled by) this JVM. Note:This property must be set correctly in order to dynamically download classes and interfaces using RMI. If this property is not set correctly, you will likely encounter exceptions when attempting to run your server or client. For more information on this property, see Dynamic code downloading using RMI (http://java.sun.com/j2se/1.4.1/docs/guide/rmi/codebase.html).​
בלי קשר, אם אתה עובד עם eclipse, אני ממליץ בחום על ה-rmi plugin של גנדי. הוא יוצר stubs אוטומטית, ועוזר בשינוי ההגדרות של rmi.
 

DadleFish

New member
תודה,

אני אבדוק את עניין ה-codebase. ראיתי את הפלאגין של גנאדי, אבל הוא בתשלום.
 

DadleFish

New member
ממשיך...

טוב, הבעיה השתנתה במקצת וכעת הוא טוען ש -
11:02:31.446 ERROR [main] # Failed setting up RMI interface!access denied (java.io.FilePermission \\D\ClearCaseViews\MS_1.0\SP_APP\media-server\bin read) java.security.AccessControlException: access denied (java.io.FilePermission \\D\ClearCaseViews\MS_1.0\SP_APP\media-server\bin read) at java.security.AccessControlContext.checkPermission(AccessControlContext.java:269)​
למרות שקובץ ה-policy שלי נראה ככה -
grant { permission java.security.AllPermission; };​
רעיונות?
 

ahab

New member
מוזר...

ניסיתי להריץ תוכנית שכתבתי בזמנו, וגיליתי שכשאני מריץ אותה מה-command line, אני מקבל הודעה דומה. אבל כשאני מריץ אותה מ-eclipse, הכל עובד כמו שצריך. מוזר. אם אני אגלה משהו, אני אודיע לך.
 

DadleFish

New member
אוקיי,

אז לי בהתחלה זה היה הפוך עד שגיליתי ששמתי את ה-policy ב-edit box הלא נכון באקליפס. בכל מקרה, כתבתי תוכנית קטנה בצד, ובה הכל עובד נהדר. גם ניסיתי לעשות כל מיני דברים שחשדתי בהם, והכל עובד בסדר... לא ברור. אני מנסה להשוות בין האפליקציה הגדולה לבין הקטנה אבל לא ממש רואה הבדל. בעיה!
 

DadleFish

New member
הבעיה נפתרה

ממש, ממש מוזר. אין לי מושג מה היה פה. כנראה שזה עוד אחד מהמקרים בהם לילה של מנוחה (למחשב
) עזר. פתאום הכל עובד כאילו כלום. לא עשיתי שום דבר שאני יודע ממנו. מעצבן.
 
למעלה