كيفية إيقاف خطأ IoException باستخدام مع استخدام مجموعة من Jython و Pyro و Ant؟

StackOverflow https://stackoverflow.com/questions/2679520

  •  30-09-2019
  •  | 
  •  

سؤال

لذا فإن أدنى مستوى رائع في هذا الدعامة من المشكلة:

الإصدار القصير: نقوم بإنشاء نظام توزيع لهذا العنصر من البرامج التي نستخدمها. في الأساس ، نخرج قطعة أثرية ، وقم بتخزينها على خادم FTP الذي ينقله إلى عملاء متعددين يقومون بتنفيذ البرامج النصية لتصحيح خوادمهم.

نسخة طويلة:

1 خادم توزيع

خوادم عميل متعددة

البرنامج: Jython 2.5.1 ، Ant 1.8.0 ، Pyro 3.10

يحتوي خادم التوزيع على خادم FTP وعميل Pyro يعمل عليه. يحتوي كل خادم عميل على خادم Pryo يعمل عليه.

عندما يُطلب من عميل Pyro بدء إجراء التصحيح ، فإنه يقرأ قائمة الجهاز التي تحتوي على قائمة بجميع خوادم العميل. ثم يتصل بكل من خوادم Pyro واحدة تلو الأخرى وتنفيذ إجراء التصحيح. الإجراء هو: getPatch (يحصل على أحدث تصحيح لهذا الخادم) ، و STOPSERVER (يوقف البرنامج الذي قد يكون أو ماينوت الوصول إلى ما يجب تصحيحه) ، تطبيق التصحيح ، starterver. تستدعي كل عملية من العمليات برنامج نصي ANT الذي يمر مع بعض أسماء المجلدات وينتقل التكوين الأخرى. يحدث الجزء الممتع عندما تذهب لتطبيق التصحيح. انظر أدناه للحصول على سجل الخطأ. اضطررت إلى إزالة أسماء المجلد لأسباب NDA.

هذا يكون حيثما تستمتع. تشغيل كل قسم من الإجراء بشكل فردي. أي تشغيل getPatch ، stopServer ، إلخ. واحد في وقت يدوي. هذا الخطأ لا يحدث. جسديًا إلى الجهاز وتشغيل العمليات التي لا يحدث ذلك. فقط عندما نسمي جميع العمليات الأربعة واحدة تلو الأخرى. يحدث أثناء مرحلة ApplyPatch عندما يتم استدعاء البرنامج النصي لاستبدال ANT على ملفات متعددة. نعتقد أن الأمر قد يكون له علاقة مع JVM الحفاظ على الملف للثانية المقسمة أو 2. ومع ذلك ، فإن هذا يهدف إلى تصحيحه وفقًا لملاحظات الأخطاء على ANT.

باختصار:

خادم التوزيع ==> Jython ==> Pyro Connection ==> Client Server ==> Jython ==> Ant Script

سجل الخطأ:

<*snip>\ant\deploy.xml:12: IOException in <*snip>\bin\startGs.sh - java.io.IOException:Failed to delete <*snip>\bin\rep4698373081723114968.tmp while trying to rename it.
    at org.apache.tools.ant.taskdefs.Replace.processFile(Replace.java:709)
    at org.apache.tools.ant.taskdefs.Replace.execute(Replace.java:548)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
    at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
    at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.taskdefs.MacroInstance.execute(MacroInstance.java:398)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
    at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.Target.execute(Target.java:390)
    at org.apache.tools.ant.Target.performTasks(Target.java:411)
    at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1360)
    at org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets(SingleCheckExecutor.java:38)
    at org.apache.tools.ant.Project.executeTargets(Project.java:1212)
    at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:441)
    at org.apache.tools.ant.taskdefs.SubAnt.execute(SubAnt.java:302)
    at org.apache.tools.ant.taskdefs.SubAnt.execute(SubAnt.java:221)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
    at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.Target.execute(Target.java:390)
    at org.apache.tools.ant.Target.performTasks(Target.java:411)
    at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1360)
    at org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets(SingleCheckExecutor.java:38)
    at org.apache.tools.ant.Project.executeTargets(Project.java:1212)
    at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:441)
    at org.apache.tools.ant.Extaskdefs.SubAnt.execute(SubAnt.java:302)
    at org.apache.tools.ant.taskdefs.SubAnt.execute(SubAnt.java:221)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
    at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
    at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.taskdefs.MacroInstance.execute(MacroInstance.java:398)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
    at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68)
    at net.sf.antcontrib.logic.IfTask.execute(IfTask.java:197)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.TaskAdapter.execute(TaskAdapter.java:154)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
    at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.Target.execute(Target.java:390)
    at org.apache.tools.ant.Target.performTasks(Target.java:411)
    at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1360)
    at org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets(SingleCheckExecutor.java:38)
    at org.apache.tools.ant.Project.executeTargets(Project.java:1212)
    at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:441)
    at org.apache.tools.ant.taskdefs.SubAnt.execute(SubAnt.java:302)
    at org.apache.tools.ant.taskdefs.SubAnt.execute(SubAnt.java:221)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)

it at org.apache.tools.ant.task.perform (task.java:348) at org.apache.tools.ant.taskdefs.macroinstance.execute (macroinstance.java:398) على org.apache.tools.ant. غير معروف. 25) في java.lang.reflect.method.invoke (method.java:597) في org.apache.tools.ant.dispatch.dispatchutils.execute (dispatchutils.java:106) على org.apache.tools.ant.task.task.task .perform (task.java:348) at org.apache.tools.ant.taskdefs.equatial.execute (sequential.java:68) at org.apache.tools.ant.unknownelement.execute (unknownelement.java:291) on Sun.Reflect.NativeMethodAccessorImpl.Invoke0 (الطريقة الأصلية) في Sun.Reflect.NativeMethodAccessorImpl.invoke (NativeMethodaccessorImpl.java:39) في Sun.Reflect.DelegatingMeTactorImpl.Invoke t java.lang.reflect.method.invoke (method.java:597) at org.apache.tools.ant.dispatch.dispatchutils.execute (dispatchutils.java:106) على org.apache.tools.ant.task.perform (Task.java:348) at org.apache.tools.ant.taskdefs.macroinstance.execute (macroinstance.java:398) في sun.reflect.nativemetactoriMpl.invoke0 (nativactorcespl.invokebl.invokepl.invoke0 .java: 39) في sun.reflect.delegatingMethodAccessorImpl.Invoke (devatingMethodAccessorImpl.Java:25) في java.lang.reflect.method.invoke (method.java:597) في grogache.tools.ant.dispatch.dispatatch.dispatatch. تنفيذ (dispatchutils.java:106) على org.apache.tools.ant.task.perform (task.java:348) على org.apache.tools.ant.taskdefs.paraldal $ taskRunnable.run (parallel.java:433) في java.lang.thread.run (thread.java:619) سبب: java.io.ioException: فشل في حذف <*snip> bin rep4698373081723114968.tmp أثناء محاولة إعادة تسمية ذلك. في org.apache.tools.ant.util.fileutils.rename (fileUtils.java:1248) على org.apache.tools.ant.taskdefs.replace.processfile (استبدال.

سيكون موضع تقدير أي مساعدة.

هل كانت مفيدة؟

المحلول

يبدو أن FTP هي المشكلة. إنه يحتفظ بقفل عبر Jython على المجلدات الفردية. لذلك عندما يتم تقديم ملف جديد ، فإنه يحبسه في حالة غير قابلة للتحلل. لا يزال بإمكانك تحرير الملف ، أي تشغيل برنامج نصي استبداله عليه. ومع ذلك لا يمكنك حذفه. الذهاب إلى العمل على تنفيذ مختلف لـ FTP. أي استخدام نسخة Java/Jython بدلاً من ذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top