الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مشكلة في استخدام RMI

مغلق
بدأه MKSoft في 22 أبريل 2007 · 37 رد · 2,931 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#26

اخ MK اسف على التاخير وذلك لانشغالي..

المهم اعتقد عندك مشكلة في جملة الاتصال

cnn=DriverManager.getConnection("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=Company.mdb;DriverID=22;READONLY=true}");

بالاضافة انه يجب عليك ان تمنح صلاحيات للوصول الى قاعدة البيانات طبعا من خلال الملف policy

اكتب فيه التالي داخل البلوك grant

permission java.lang.RuntimePermission "accessClassInPackage.sun.jdbc.odbc";
permission java.util.PropertyPermission "file.encoding", "read";

بالتوفيق

منقطع من حين لاخر

#27
اقتباس
السلام عليكم

اخي ابو فؤاد اشكر جهودك لمساعدتنا

انا لدي برنامج rmi

تظهر لي الصورة التاليه عند تنفيذ tart client.bat

الملف المرفق

هل تقصد عند تنفيذ كود الاخ MK ??

منقطع من حين لاخر

#28

لا أقول إلا جزاك الله عني يا أبو فؤاد خير الجزاء ... ألف تحية إليك .

فعلا برنامج RMIServer أشتغل ممتاز و عمل اتصال مع قاعدة البيانات , لكن أريد أن أقول لك أني غيرت القيمة المرجعة Return value ,

وهي من نوع ResultSet , وقمت بوضع محتواها في Vector , وقمت بإرجاع Vector بدلا من ResultSet , وقد قمت بذلك لأن ResultSet سببت لي Exception , حيث أن ResultSet يجب أن بحدث لها عملية marshilling , أي بجب أن تكون Serialized ,

لذلك أخي أبو فؤاد كيف أجعلها Serializable ؟؟؟.

-الشيء ألثاني اخي أبو فؤاد أرجو أن تجيبني على السؤال الذي طرحته عليك في مشاركة سابقة وهو :

اقتباس
انت تعلم أني عندما انشأت برنامج RMIServer و RMIClient , وباقي Classes قد تم وضعهم جميعا في نفس المجلد , بمعنى اخر , ان كل من Client و Server على نفس الحاسوب ,

لكن من المنطقي أن يتم وضع برنامج RMIServer و ملحقاته على host معين , و RMIClient على Host اخر .. لذلك السؤال المطلوب , ماهي Classes التي يجب أن توضع مع RMIServer على جهاز , وماهي التي يجب أن يتم وضعها مع RMIClient على جهاز اخر , و إذا هناك Classes أو برامج مساعدة يجب اضافتها حتى يكتمل الاتصال , أرجو منك أخي أبو فؤاد ان تقول لي عنها , وبارك الله فيك ؟؟؟؟؟

#29

السلام عليكم ورحمة الله وبركاته

شو قصتك اخى mksoft كل ما بدك تسال عن شى على طول المشرفين بعملك بلوك على موضوعك

#30
اقتباس
لذلك أخي أبو فؤاد كيف أجعلها Serializable ؟؟؟.

لا يمكن جعلها Serializable و لكن يمكنك استخدام التغليف Encapsulation و ذلك بانشاء كلاس جديد يحتوي على ResultSet فقط و يكون هذا الكلاس Serializable

اقتباس
انت تعلم أني عندما انشأت برنامج RMIServer و RMIClient , وباقي Classes قد تم وضعهم جميعا في نفس المجلد , بمعنى اخر , ان كل من Client و Server على نفس الحاسوب ,

لكن من المنطقي أن يتم وضع برنامج RMIServer و ملحقاته على host معين , و RMIClient على Host اخر .. لذلك السؤال المطلوب , ماهي Classes التي يجب أن توضع مع RMIServer على جهاز , وماهي التي يجب أن يتم وضعها مع RMIClient على جهاز اخر , و إذا

هناك Classes أو برامج مساعدة يجب اضافتها حتى يكتمل الاتصال , أرجو منك أخي أبو فؤاد ان تقول لي عنها , وبارك الله فيك ؟؟؟؟؟

يتم وضع نسخة من الانترفيس عند كل من الكلاينت و السيرفر

بالاضافة الى وضع نسخة من ملف الـ Stub

طبعا كود الكلاينت عند الكلاينت

وكود السيرفر عند السيرفر

تم تعديل هذه المشاركة بواسطة ابو الفؤاد في 4 مايو 2007 في 17:28

منقطع من حين لاخر

#31

بارك الله فيك أخي أبو فؤاد على كل المساعدات و على كل الصبر و على كل الوقت الذي قضيته معي .. فحياك الله على كل تلك الفائدة التي استفدتها منك , وأقول لك أسأل الله أن يجمعك و إياي مع محمد صلى الله عليه وسلم في جنة الرحمن بإذن الله ..

و ألف ألف تحية إليك .

أخوك MKSoft .

#32

السلام عليكم ورحمة الله وبركاته

اخى صحيح انت مخالف لقوانين منتدنا العظيم

بس شو بدنا نعمل هدا واجبنا ان نساعدك بس الرجاء الالتزام بقوانين المنتدى **كل شى عندك سوال ** //حرام لتنزلك درس يستفيد منه الاعضاء//

المهم

1

import java.rmi.*;

public interface Hello extends java.rmi.Remote
{
   public String		sayHello()		 throws RemoteException;

   public MessageObject getMessageObject() throws RemoteException;

}

2

import java.rmi.*;
import java.rmi.server.*;

public

class HelloImpl

extends UnicastRemoteObject

implements Hello, Unreferenced
{

   public HelloImpl() throws RemoteException
   {
	  super();
   }

   public String sayHello() throws RemoteException
   {
	 return "Hello!";

   }

   public MessageObject getMessageObject() throws RemoteException
   {
	  MessageObject mo = new MessageObjectImpl();

	  return mo;
   }

   public void unreferenced()
   {
	  System.out.println( "HelloImpl: Unreferenced" );
   }

   public void finalize() throws Throwable
   {
	  super.finalize();

	  System.out.println( "HelloImpl: Finalize called" );
   }
}

3

import java.io.Serializable;
import java.rmi.server.*;

public

interface MessageObject extends java.rmi.Remote

{

   public int getNumberFromObject() throws java.rmi.RemoteException;

   public int getNumberFromClass() throws java.rmi.RemoteException;

}

4

import java.io.Serializable;
import java.rmi.server.*;
import java.rmi.*;

public

class MessageObjectImpl

extends UnicastRemoteObject

implements MessageObject, Serializable, Unreferenced
{
   static  int number = 0;
   private int objNumber;

   public MessageObjectImpl() throws RemoteException
   {
	  objNumber = number;
	  System.out.println( "MessageObject: Class Number is #" + number + " Object Number is #" +  objNumber );
	  number = number + 1;
   }

   public int getNumberFromObject()
   {
	 return objNumber;
   }

   public int getNumberFromClass()
   {
	  return number;
   }

   public void finalize() throws Throwable
   {
	  super.finalize();

	  System.out.println( "MessageObject: Finalize for object #: " + objNumber );
   }

   public void unreferenced()
   {
	  System.out.println( "MessageObject: Unreferenced for object #: " + objNumber );
   }

}

5

import java.util.Date;
import java.net.MalformedURLException;

import java.rmi.*;


public class RMIClient
{
   private static final int	PORT		= 2003;

   private static final String HOST_NAME   = "Silmi";

   private static RMIClient  rmi;

   public static void main ( String[] args )
   {
	  rmi = new RMIClient();
   }  

   public RMIClient()
   {

	  try
	  {
		 Hello hello = (Hello)Naming.lookup( "//" + HOST_NAME + ":" + Integer.toString( PORT ) + "/" + "Hello" );

		 System.out.println( "HelloService lookup successful" );

		 System.out.println( "Message from Server: " + hello.sayHello() );

		 MessageObject mo;

		 for ( int i = 0; i< 1000; i++ )
		 {
			mo = hello.getMessageObject();
			System.out.println( "MessageObject: Class Number is #" + mo.getNumberFromClass() + " Object Number is #" +  mo.getNumberFromObject() );
			mo = null;
		 }

	  }
	  catch ( java.rmi.UnknownHostException uhe )
	  {
		 System.out.println( "The host computer name you have specified, " + HOST_NAME + " does not match your real computer name." );
	  }
	  catch ( RemoteException re )
	  {
		 System.out.println( "A Remote Exception was thrown when requesting the TimeService" );
		 System.out.println( "" + re );
	  }
	  catch ( MalformedURLException mURLe )
	  {
		 System.out.println( "There is a problem with the rmi: URL you are using" );
		 System.out.println( "" + mURLe );
	  }
	  catch ( NotBoundException nbe )
	  {
		 System.out.println( "" + nbe );
	  }
   }

}

6

import java.net.*;
import java.io.*;

import java.rmi.*;
import java.rmi.server.*;
import java.rmi.registry.LocateRegistry;


public class RMIServer
{
   private static final int	PORT		= 2003;
   private static final String HOST_NAME   = "Silmi";
   private static RMIServer  rmi;

   public static void main ( String[] args )
   {

	  System.setSecurityManager( new RMISecurityManager() );

	  try
	  {
		 rmi = new RMIServer();
	  }
	  catch ( java.rmi.UnknownHostException uhe )
	  {
		 System.out.println( "The host computer name you have specified, " + HOST_NAME + " does not match your real computer name." );

	  }
	  catch ( RemoteException re )
	  {
		 System.out.println( "Error starting service" );
		 System.out.println( "" + re );
	  }
	  catch ( MalformedURLException mURLe )
	  {
		 System.out.println( "Internal error" + mURLe );
	  }
	  catch ( NotBoundException nbe )
	  {
		 System.out.println( "Not Bound" );
		 System.out.println( "" + nbe );
	  }

   } 



   public RMIServer() throws RemoteException, MalformedURLException, NotBoundException
   {
	  LocateRegistry.createRegistry( PORT );

	  System.out.println( "Registry created on host computer " + HOST_NAME + " on port " + Integer.toString( PORT) );

	  Hello hello = new HelloImpl();

	  System.out.println( "Remote HelloService implementation object created" );

	  String urlString = "//" + HOST_NAME + ":" + Integer.toString( PORT ) + "/" + "Hello";

	  Naming.rebind( urlString, hello );

	  System.out.println( "Bindings Finished, waiting for client requests." );
   }

}

تم تعديل هذه المشاركة بواسطة silmi في 5 مايو 2007 في 01:33

#33

إخواني جميعا لكم تحية لما تبذولونه من جهد وعمل رائع

اخواني انا اخذت الكودالذي كتبه الاخ MKSoft

وقمت بتطبيق جميع الخطوات والحلول التي وضعت

ولكن لم يعمل البرنامج

مع العلم اني استخدم JBuilder7

عند عمل تنفيذ لسيرفر يظهر:

Stub class not found: rmi.TestRMIServant_Stub; nested exception is:

java.lang.ClassNotFoundException: rmi.TestRMIServant_Stub

مع العلم اني ظبت الباث من الفاريبل انفايرومت

كيف احل هذه المشكلة

#34
اقتباس
عند عمل تنفيذ لسيرفر يظهر:

Stub class not found: rmi.TestRMIServant_Stub; nested exception is:

java.lang.ClassNotFoundException: rmi.TestRMIServant_Stub

يبدو من الخطا ان عملية انشاء ملف الـ Stub لم تتم

تاكد ان من تشغيل الامر rmic TestRMIServant مباشرة بدوم ملف الباتش

منقطع من حين لاخر

#35

أخي ابو الفؤاد

عندما اقوم بتشغيل الامر

rmic TestRMIServant

يخرج الخطأ التالي

error TestRMIServant not found

1 error

ما هي المشكلة

#36

يبدو ن الخطا ان الملف TestRMIServant غير موجود هل تمت عملية الكمايل بشكل صحيح ؟؟

وهل تم انشاء ملف TestRMIServant.class ??

منقطع من حين لاخر

#37

خي ابو الفؤاد

تأكدت من ملف الTestRMIServant.class

وهو موجود ضمن ملفات الclass الموجودة في ملف الclasses

(( انا استخدم الجي بلدر 7 ))

وقمت بعمل برنامج آخر يعمل جمع لعددين

ولم يكن هناك اي خطأ في البرنامج ولكنه كلما عملت له تشغيل تظهر هناك أخطاء

وساقوم بوضعه مي مشاركه لوحده

#38

ما حل المشكلة السابقة

؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

هذا الموضوع مغلق.

مواضيع مشابهة