0

私たちの Java アプリケーションは奇妙な状況に陥りました。フラット ワイルを作成する必要があり、Flatworm Java ライブラリを使用することにしました。Unix サーバーでスケジュールする必要があるエンタープライズ Java アプリを作成しました。弊社で開発した Java アプリケーションは、弊社の Windows デスクトップ PC で適切に実行されます。Flatworm ライブラリを使用するアプリケーションを実行しようとすると、サイレント エラーが発生します。アプリケーションがハングし、例外はスローされません。そのため、多くのログ情報を記録しようとしましたが、どこに問題があるかを理解しました。

fileCreator = new FileCreator(outputData.getConfigMailFile(), outputData.getDownloadFolder() + trackFileName);
            fileCreator.open();
            fileCreator.setRecordSeperator("\n");
            for (MailFile mail : listMails) {
                fileCreator.setBean("mail", mail);
                fileCreator.write("mailRow");
            }

これら 2 つのメソッドを呼び出すと、エラーは Java cicle 内にあるはずです。

for (MailFile mail : listMails) {
                    fileCreator.setBean("mail", mail);
                    fileCreator.write("mailRow");
                }

この問題については少し迷っています。少なくとも、この例外をキャッチする方法を理解したいと考えています。コードを実行する Unix マシンが異常停止したようです。本当にありがとうございました。ありがとうございました

2012 年 7 月 19 日更新

Linux 3.2 カーネル Java 1.6 で試したところ、プログラムは動作しました。flatworm をブロックする何かがあるようです。コードのこの部分でアプリケーションがハングする flatworm のソースを調べました。

if (beanRef != null)
                        {
                            // Extract property name
                            Object bean = null;
                            String property = "";
                            try
                            {
                                int posOfFirstDot = beanRef.indexOf('.');
                                bean = beans.get(beanRef.substring(0, posOfFirstDot));
                                property = beanRef.substring(posOfFirstDot + 1);
                            } catch (ArrayIndexOutOfBoundsException ex)
                            {
                                throw new FlatwormCreatorException("Had trouble parsing : " + beanRef
                                        + " Its format should be <bean_name>.<property_name>");
                            }

                            // Convert to String for output
                            Object value = PropertyUtils.getProperty(bean, property);
                            val = convHelper.convert(type, value, convOptions, beanRef);
                            PropertyUtils.setProperty(bean, property, value);
                        } // end beanRef != null
                        // Handle any conversions that need to occur
                        if (val == null)
                        {
                            val = "";
                        }
                        val = convHelper.transformString(val, recElement.getConversionOptions(), recElement
                                .getFieldLength());

                        if (itRecElements.hasNext())
                            bufOut.write(val + delimit);
                        else
                            bufOut.write(val);

動作しない他の UNIX は、カーネル 2.6 と Java 1.6 です。

4

0 に答える 0