2013-07-07 2 views
0

У меня есть Java-апплет, который я использую для загрузки из interenet explorer на своем веб-сайте. , когда кнопка нажата на моем сайте, функция javascript входит в апплет и вызывает функцию OpenPrivDialog() апплета.Замедленный диалог файла в java-аплете

public void OpenPrivDialog() { 

    AccessController.doPrivileged(new PrivilegedAction<Object>() { 
     @Override 
     public Object run() { 
      OpenDialog(); 
      return true; 
     } 

    }); 
} 

public void OpenDialog(){  

    JFileChooser fc = new JFileChooser(); 

     fc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); 
     fc.setMultiSelectionEnabled(true); 
     Logger.getLogger(UploadApplet.class.getName()).log(Level.INFO, "Opening dialog", "fe"); 
     int retVal = fc.showOpenDialog(f); 
     if (retVal == JFileChooser.APPROVE_OPTION) { 
      Logger.getLogger(UploadApplet.class.getName()).log(Level.INFO, "approved", ""); 
      File[] files = fc.getSelectedFiles(); 
      Logger.getLogger(UploadApplet.class.getName()).log(Level.INFO, "got " + files.length+" files", ""); 
      AddFiles(files); 
     } 

} 

этот код работает, но ужасно медленно открывается filechooser dilog, но в течение минуты полностью отвечать на запросы, а затем просто очень медленно -любой идея, почему?

+0

1) Не так ли медленно, когда вы запускаете открытие диалога с помощью кнопки Java? 2) Почему он называется JS?3) Пожалуйста, ознакомьтесь с общепринятыми [соглашениями по именованию Java] (http://java.sun.com/docs/books/jls/second_edition/html/names.doc.html#73307) (в частности, для имен, используемых для имен) для класса , методы и имена атрибутов и использовать их последовательно. –

+0

нет, когда один и тот же код запускается с кнопки, он не медленный. Я хочу это из javascript, потому что дизайн кнопки является частью html, я хочу, чтобы мой апплет был независимым от дизайна веб-страницы. – Yuval

+0

Попробуйте найти [bug DB] (http://bugs.sun.com/), и если вы ничего не найдете, поднимите новый отчет. Посмотрите, что Oracle должен сказать по этому вопросу. –

ответ

1

Когда я прочитал этот пост, я мог представить ужасный опыт, который у меня был. Мне нужно было работать в программном обеспечении, намного более сложном, чем ваше, но по существу оно имело тот же принцип: взаимодействие Java-апплета с Javascript, работающим в веб-браузере.

Мы столкнулись с рядом проблем, и я хотел бы подчеркнуть:

  1. Медленная реакция: похоже на то, что вы испытываете.
  2. Вопрос безопасности: проверки безопасности, требующие от пользователя согласования с потенциально опасного кода и других вопросов, связанных с ноль-атаками.
  3. Нерабочее Javascript называет: редко наш апплет не может достичь яваскрипта кода, мы не нашли причину этого вопроса, и это было очень трудно воспроизвести.
  4. Совместимость с браузером: Firefox и Chrome были очень стандартными, но мы столкнулись с несколькими проблемами в Internet Explore and Safari.

Оказывается, что наш апплет код был готов в течение 5 дней, но интеграция с JavaScript заняло около месяца (у нас было 4 старших разработчики работают над этим) только потому, что наши заинтересованные стороны хотели, чтобы работать с некоторыми фантазии компонентов JQuery , Это был только кошмар!

Подводя итог, мы не смогли этого сделать. Кроме того, мы писали все в нашем апплете и предоставляли ряд свойств, которые разработчики пользовательского интерфейса могли использовать для изменения внешнего вида нашего апплета, который отлично работал, и все были довольны этим.

Поэтому я бы посоветовал не использовать JavaScript + Java-апплеты. Да, вы можете использовать некоторые базовые функции, но не продвигайтесь дальше.

Хорошо, давайте поговорим о вашей проблеме. В некоторых случаях мы заметили, что javascript был очень медленным при вызове методов Java, но никогда не замедлялся при изменении Java Propeties. Итак, мы создали некоторые переменные Java и изменили его с помощью Javascript. Затем мы просмотрели эти переменные (возможно, в потоке). Наконец, мы могли бы назвать правильные методы, основанные на этих переменных.

Нет, мне не нравится этот подход. Но это единственное, что сработало для нас, прежде чем опустил идею использования Javascript с Java-апплетами полностью.

Надеюсь, это поможет.

Cheers,

+0

спасибо! на самом деле идея об изменении переменной в коде javascript и наблюдении за ней в другом потоке звучит полезно. Я собираюсь попробовать это, спасибо. – Yuval

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