2014-01-15 4 views
10

У меня есть страница с апплет Java, который имеет следующий JavaScript код, который делает LiveConnect вызов при закрытии окна, чтобы выполнить некоторые вымыться задачи:LiveConnect вызовы блокируются на 7u45, так как Java 7u51 стали доступны

window.onbeforeunload = function(e) { 
    var result = document.OutApplet.closeCheck(); 

До вчерашнего дня это работало так, как ожидалось, и выполняло задачи очистки в апплете.

Теперь, когда Java 7u51 доступен, я сегодня получил доступ к этому апплетам и выбрал «Позже» при появлении запроса на обновление до последней версии Java. Теперь, когда я закрываю окно, я получаю ошибку JavaScript:

Object doesn't support property or method 'closeCheck'

Просто, чтобы уточнить это с установленной Java 7u45.

Ожидаемое поведение или есть что-нибудь, что я могу сделать, чтобы он все еще работал на 7u45? Я не могу найти упоминания об этом в примечаниях к выпуску, и до 7u51 наш звонок с живым подключением по-прежнему будет работать, не имея последней базовой базы безопасности.

Update

Выше было с моей Java безопасности установлен как высокий.

Я изменил его на Средний и повторил выше. Теперь я получаю сообщение о том, хочу ли я разрешить или заблокировать вызов LiveConnect.

Allow LiveConnect prompt

Кажется, теперь без документов (насколько я могу найти) требование о том, LiveConnect будет работать только если вы находитесь на базовой безопасности (7u51).

Обратите внимание на LiveConnect вызов апплета работает без каких-либо изменений в апплет когда я обновил до 7u51

+3

Я только что нашел этот пост от кого-то, имеющего подобную проблему: https://community.oracle.com/thread/2620141 –

ответ

6

Это известная ошибка Java затрагивает все версии от 7u25 до 7u45 :

http://bugs.sun.com/view_bug.do?bug_id=8027405

только решение перейти на 7u45 7u51 или установить безопасность Java слайдер - «Средний».

[Edit] исправлена ​​починки версию, согласно отчету об ошибке

+0

Это объяснило бы это. На самом деле это не помогает, поскольку все еще заставляет всех наших пользователей обновлять до 7u51 сейчас, что является базовым. –

+1

«Только для обновления до 7u45». Я думаю, вы имеете в виду обновление до 7u51. –

+0

Мы столкнулись с проблемой с 7u45, поэтому вы должны быть правы @chrisr. На самом деле в отчете об ошибке четко указано, что это будет исправлено в 7u51 – Cerber

0

Та же проблема здесь.

Оракул предупредил о новых обязательных (см. Ниже) вариантах в сентябре. Мы реализовали и доставили их в конце прошлого года, но сегодня они, кажется, не работает ...

https://blogs.oracle.com/java-platform-group/entry/new_security_requirements_for_rias

http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/manifest.html

+0

I» Я не уверен, что это связано. Мы также внедрили их, и наш апплет все еще работает нормально. Проблема для нас - после ее запуска, и мы пытаемся сделать вызов LiveConnect от JS. –

+1

@ChrisR вы посмотрели на [Атрибут Caller-Allowable-Codebase] (http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/manifest.html#caller_allowable), который контролирует, кому разрешено используйте LiveConnect – Cerber

+1

Да, у нас был этот атрибут, когда мы впервые увидели сообщение в блоге, которое вы связали несколько месяцев назад. Я обновил свой ответ выше, чтобы сказать, что наш апплет работает без изменений на 7u51. Учитывая, что он также работал, как и на 7u45 до сегодняшнего дня, единственное, что я могу думать, это изменение - это базовый уровень безопасности, поэтому мое предположение о том, что это теперь работает только в том случае, если вы находитесь на базовой линии безопасности. –

1

, почему это недавно (вчера) началось неудачу потому, что базовая линия была обновлена ​​https://javadl-esd-secure.oracle.com/update/baseline.version, теперь при редактировании C: \ Users \ имя пользователя \ AppData \ LocalLow \ Sun \ Java \ Deployment \ security \ baseline.versions и измените 1.7.0_51 на 1.7.0_45 и сохраните файл, он должен снова начать работать (но в конечном итоге будет обновлен, вероятно, через какое-то время).

0

Другим решением, если вы не можете обновить вас JRE (застрял между 1.7.0_25 и 1.7.0_45):

  • открыть панель управления Java в 1,7 JRE (javacpl.exe)
  • идти на вкладке Дополнительно
  • снимите флажок ниже "Java Plug-в" вариант: 'Включить следующее поколение Java Plug-In'
1

1) Закройте все браузеры и программы

2) В проводнике Windows перейдите в папку% LOCALAPPDATA% низкий \ Sun \ Java \ Deployment

3) Откройте файл с именем «deployment.properties»

4) Добавить в следующей строке в конце этот файл

    deployment.expiration.check.enabled=false 

5) Сохраните и закройте файл

+0

Это может сработать (я не пробовал), но это изменение на каждом компьютере, используемом для доступа к апплетам, - это не меньше усилий, чем просто обновление их всех на Java 7u51. –