نداء الربيع RMI
RMI (استدعاء الطريقة عن بُعد) استدعاء الطريقة عن بُعد لتحقيق التواصل عن بُعد بين تطبيقات JAVA. يصف ما يلي كيفية استخدام RMI باستخدام الربيع.
هيكل الحزمة كما يلي:
حدد واجهة الاتصال
واجهة عامة userDao {public string getUser (string username) رمي الاستثناء ؛}فئة تنفيذ الواجهة
الفئة العامة userDaoImplimples userDao {public string getUser (stringUserName) يلقي الاستثناء {return "test:"+username ؛ }}(1) تكوين خدمة RMI:
ApplicationContext-rmi-server.xml <beanid = "userDaoimpl" class = "com.rmi.userdaoimpl"/> <beanid = "userDaoimpl_exporter" class = "org.springframework.remoting.rmi.rmiserviceexporter <PrefertaryName = "servicename" value = "rmi/userDaoImpl"/> <propertyName = "serviceInterface" value = "com.rmi.userdao"/> <PertaryName = "RegistryPort" value = "8819"/> </bean>
(2) بدء خدمة RMI:
الفئة العامة rmiserver {publicstaticfinal applicationContextContext = جديد classpathxmlapplicationContext ("ApplicationContext-rmi-server.xml") ؛ PublicStaticVoid Main (String [] args) {}}(3) الوصول إلى خدمات RMI
ApplicationContext-rmi-client.xml <beanid = "userDaoImpl_Client" class = "org.springframework.remoting.rmi.rmiproxyfactorybean"> <pertorname = "serviceUrl" value = "rmi: // localhost: 8819/rmi/userdaiMpl" <PrefturanceName = "serviceInterface" value = "com.rmi.userdao"/> <propertyName = "RefreshStubOnConnectFaileure" value = "true"/> <propertyName = "lookupStubOnStartup" value = "false"/> </bean classpathxmlapplicationContext ("ApplicationContext-rmi-client.xml") ؛ userDao userDao = (userDao) context.getBean ("userDaoimpl_Client") ؛ if (userDao! = null) {try {system.out.println (userDao.getuser ("li")) ؛ } catch (استثناء e) {E.PrintStackTrace () ؛ }}}} نداء الربيع الكوارتز
1.Quartz هو إطار لجدولة الوظائف ، الكوارتز متكامل مع Spring ، وهو مريح للغاية للاستخدام.
2. اكتب فصول التنفيذ
استيراد org.springframework.context.applicationContext ؛ استيراد org.springframework.context.support.classpathxmlapplicationContext ؛ الفئة العامة QuartzTest {public static void main (string [] args) {system.out.println ("test start.") ؛ ApplicationContext Context = جديد classpathxmlapplicationContext ("ApplicationContext-quartz.xml") ؛ // إذا تم تعيين altain-init of startquetz bean على خطأ في ملف التكوين ، فلا داعي لإنشاء إنشاء //context.getBean("startquertz ") ؛ system.out.print ("نهاية الاختبار ..") ؛ }}3. اكتب ملفات التكوين
<!-الفئة العاملة للاتصال-> <bean id = "quartzjob" /> <!-تحديد طريقة استدعاء الكائنات وكائنات الاتصال-> <bean id = "jobdetail"> <property name = "targetObject" ref = "quartzjob" /> <property name = "targetmethod" value = "work" /> name = "jobdetail"> <ref bean = "jobdetail"/> </property> <!-cron expression-> <property name = "cronexpression"> <value> 2/5 44-46 22،23 9 9؟ 2012 </value> <!- من اليسار إلى اليمين: ثواني ، دقائق ، وقت ، اليوم ، الشهر ، السنة ، والأسبوع؟ لا يمكن استخدام الأرقام إلا في مجالات اليوم والأسبوع ، ولكن لا يمكن استخدامها في وقت واحد في هذين المجالين. هل يمكنك التفكير؟ الشخصية هي "لا يهمني ما هي القيمة الموجودة في الحقل." هذا يختلف عن النجمة ، مما يشير إلى كل قيمة في الحقل. ؟ يعني أنه لا يتم تحديد أي قيمة لهذا الحقل. يتم استخدام فاصلة (،) لتحديد قائمة القيم إلى حقل. على سبيل المثال ، يعني استخدام القيم 0،15،30،45 في الحقل الثاني أن المشغل يتم تشغيله كل 15 ثانية. يتم استخدام المائل (/) لجداول زمنية تدريجية. لقد استخدمنا فقط الفواصل لتمثيل الزيادات كل 15 دقيقة ، ولكن يمكننا أيضًا كتابتها على أنها 0/15. يتم استخدام خربشة (-) لتحديد نطاق. على سبيل المثال ، 3-8 في مجال الساعة يعني "3 ، 4 ، 5 ، 6 ، 7 و 8 نقاط." لا تسمح قيم المجال بالعودة ، لذلك لا يُسمح بقيم مثل 50-10. يشير النجمة (*) إلى أنك تريد تضمين جميع القيم القانونية في هذا الحقل. على سبيل المثال ، يعني استخدام النجمة في مجال الشهر أن هذا الزناد سيتم تشغيله كل شهر. يشير الحرف L إلى القيمة الأخيرة المسموح بها في الحقل. يتم دعمها فقط من قبل المجالات اليومية والأسبوعية. تمثل شخصية W أيام الأسبوع (MON-RI) ولا يمكن استخدامها إلا في المجال اليومي. يتم استخدامه لتحديد يوم الأسبوع الأقرب إلى اليوم المحدد (غير السبت). # لا يمكن استخدام الأحرف إلا في المجال المحيطي. يتم استخدامه لتحديد أي يوم من الأسبوع في شهر محدد. على سبيل المثال ، إذا حددت قيمة الحقل الأسبوعي لتكون 6 رقم 3 ، فهذا يعني الجمعة الثالثة لشهر معين (6 = الجمعة ، رقم 3 يعني الأسبوع الثالث من الشهر). -> </property> </bean> <!-فئة الإدارة العامة إذا تم استخدام lazy-init = 'false' ، ستقوم الحاوية بتنفيذ الجدولة-> <bean id = "startquertz" lazy-init = "false" autowire = "no"> <property name = "triggers"> <list>
4. حول تعبيرات cronexpression
<!-التعبير cron-> <property name = "cronexpression"> <value> 2/5 44-46 22،23 9 9؟ 2012 </value> <!- من اليسار إلى اليمين: ثواني ، دقائق ، وقت ، اليوم ، الشهر ، السنة ، والأسبوع؟ لا يمكن استخدام الأرقام إلا في مجالات اليوم والأسبوع ، ولكن لا يمكن استخدامها في وقت واحد في هذين المجالين. هل يمكنك التفكير؟ الشخصية هي "لا يهمني ما هي القيمة الموجودة في الحقل." هذا يختلف عن النجمة ، مما يشير إلى كل قيمة في الحقل. ؟ يعني أنه لا يتم تحديد أي قيمة لهذا الحقل. يتم استخدام فاصلة (،) لتحديد قائمة القيم إلى حقل. على سبيل المثال ، يعني استخدام القيم 0،15،30،45 في الحقل الثاني أن المشغل يتم تشغيله كل 15 ثانية. يتم استخدام المائل (/) لجداول زمنية تدريجية. لقد استخدمنا فقط الفواصل لتمثيل الزيادات كل 15 دقيقة ، ولكن يمكننا أيضًا كتابتها على أنها 0/15. يتم استخدام خربشة (-) لتحديد نطاق. على سبيل المثال ، 3-8 في مجال الساعة يعني "3 ، 4 ، 5 ، 6 ، 7 و 8 نقاط." لا تسمح قيم المجال بالعودة ، لذلك لا يُسمح بقيم مثل 50-10. يشير النجمة (*) إلى أنك تريد تضمين جميع القيم القانونية في هذا الحقل. على سبيل المثال ، يعني استخدام النجمة في مجال الشهر أن هذا الزناد سيتم تشغيله كل شهر. يشير الحرف L إلى القيمة الأخيرة المسموح بها في الحقل. يتم دعمها فقط من قبل المجالات اليومية والأسبوعية. تمثل شخصية W أيام الأسبوع (MON-RI) ولا يمكن استخدامها إلا في المجال اليومي. يتم استخدامه لتحديد يوم الأسبوع الأقرب إلى اليوم المحدد (غير السبت). # لا يمكن استخدام الأحرف إلا في المجال المحيطي. يتم استخدامه لتحديد أي يوم من الأسبوع في شهر محدد. على سبيل المثال ، إذا حددت قيمة الحقل الأسبوعي لتكون 6 رقم 3 ، فهذا يعني الجمعة الثالثة لشهر معين (6 = الجمعة ، رقم 3 يعني الأسبوع الثالث من الشهر). ->