Часть 2: веб-приложение запуска: проблема параллелизма - PullRequest
1 голос
/ 12 октября 2011

С вашими предложениями по этой теме ,

Я пытался использовать FileLock, однако, когда я что-то записываю в файл, файл Excel как-то повреждается, и в нем ничего нет (он пуст, содержимого там нет)

У меня есть следующий метод:

void writeIntoTheFile(XSSFWorkbook defectWorkBook, File fileToWrite) {

            FileLock lock = null;
            FileChannel channel = null;
            FileOutputStream out = null;
            try {
                //fileToWrite contains an excel .xlsx file
                channel = new RandomAccessFile(fileToWrite, "rw").getChannel();
                lock = channel.tryLock();
                if (lock != null) {
                    out = new FileOutputStream(fileToWrite.getPath());
                    defectWorkBook.write(out);

                } else {
                    JOptionPane.showMessageDialog(null, "Another instance is already writing, Try after a few seconds.", "Write Error...", JOptionPane.INFORMATION_MESSAGE);
                }
                    out.close();

            } catch (Exception e) {
                e.getMessage();
            } 


           finally{   
            if (lock != null && lock.isValid()) {
                    lock.release();
                }
            channel.close();

            } 

        }

Кажется, проблема в следующем коде:

channel = new RandomAccessFile(fileToWrite, "rw").getChannel();
 lock = channel.tryLock();

Может кто-нибудь помочь мне в этом вопросе?

Рахул

1 Ответ

0 голосов
/ 12 октября 2011

Я подозреваю, что вы получаете исключение в своем блоке try {}, но ваши часы перехвата не выводят его. e.getMessage () получит сообщение, но не распечатает его.

Я предлагаю что-то вроде e.printStackTrace () (для производственной системы, которую выхотел бы сделать что-то более полезное за исключением).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...