2013-10-07 2 views
2

Следующий фрагмент кода не вызывает никаких ошибок при выполнении в автономном режиме. Когда я раскрываю это в веб-сервер [реализации ИНТЕРФЕЙС сервера и добавлены в качестве JAR в пути к классам], я получаюjava.util.concurrent.ExecutionException: java.lang.NullPointerException Error

java.util.concurrent.ExecutionException: java.lang.NullPointerException 
at java.util.concurrent.FutureTask$Sync.innerGet(Unknown Source) 
at java.util.concurrent.FutureTask.get(Unknown Source) 
at com.nbis.process.JSON_2_File_Split_V004.fn_1_parserEntity(JSON_2_File_Split_V004.java:256) 
at com.nbis.process.JSON_2_File_Split_V004.fn_0_primaryCaller(JSON_2_File_Split_V004.java:177) 
at com.nbis.process.JSON_2_File_Split_V004.execute(JSON_2_File_Split_V004.java:151) 

фрагмент кода:

this.callable = new JSON_3_File_Process_V005(this.originalFileName, this.inProgressDirLoc, this.processedDirLoc, "[" + jSONRecord.toString() + "]", this.dataMDHolder, this.dataAccIDValueMap, this.dataCountryNameValueMap); 
String[] fullContent = null;  
try { 
    fullContent = executor.submit(this.callable).get(); 
} catch (ExecutionException e) { 
    StringWriter errors = new StringWriter(); 
    e.printStackTrace(new PrintWriter(errors)); 
    log.info("Srii: " + errors.toString()); 
    executor.shutdown(); 
    return 7; 
    } 

Добавление возвращаемого значения ГЭТ в к ExecutorCompletionService будет вариант, но разве это не убьет концепцию асинхронной обработки? Другими словами, я собираю в StringBuilder выходную строку из вызываемого get и сохраняют на диск, когда счетчик получения достигает определенного числа. Как только данные будут отправлены на диск, я обновляю StringBuilder. Таким образом я нажимаю данные на диск через регулярные промежутки времени, не сохраняя их в памяти.

Любые предложения относительно того, что я делаю здесь неправильно? Оцените любые входы. Спасибо.

+0

Не могли бы вы указать на строку кода, которая вызывает исключение? –

+0

thats точно я все еще пытаюсь понять, след кажется усеченным. – Srii

ответ

3

Это исправлено. Если бы это было полезно:

Проблема была в том, как были объявлены переменные. Я должен был объявить переменную уровня класса статичной, чтобы любые изменения, применяемые к этому, начали отражать всюду. Как ни странно, я вижу проблему, когда она была выполнена автономно.

+0

Не могли бы вы объяснить немного больше? К какой переменной вы относитесь? – laike9m

+0

Как долгое время назад, я не вспоминаю точно детали переменных. Но я считаю, что это одно из следующего: 'this.originalFileName, this.inProgressDirLoc, this.processedDirLoc, this.dataMDHolder, this.dataAccIDValueMap, this.dataCountryNameValueMap' Мне пришлось установить их как статические, как значения, назначенные [или измененные] на любой член не отражался во время ссылок переменной внутри класса. – Srii

Смежные вопросы