2013-12-11 13 views
6

Ho una casella Linux che non è connessa a Internet. ho installato su di esso Firefox 24.0 e jre1.7.0_40 (e anche 1.7.0_17) Quando inizio a FF con un'applicazione web installata localmente sulla scatola sto diventando un pop-up di avviso cheCome Java verifica che non è aggiornato

Aggiornamento Java necessario; La tua versione di Java non è aggiornata

Non capisco come Java sa che è "obsoleto" ??? Cosa si confronta con cosa? Suppongo che controlli le versioni disponibili su oracle.com e se quella corrente installata sul sistema sia troppo vecchia, quindi si elimina questo avviso.

Oppure l'applicazione stessa avviata contiene alcune informazioni sulla versione di Java che cosa era disponibile o che cosa è stato utilizzato al momento della compilazione ??

+1

Credo che verifica la versione client Java e confronta con la versione CONSIGLIATA per la tua applicazione. – iWumbo

+0

In questo caso non possiamo parlare di architettura client-server, voglio dire che il client è esso stesso l'host. – wildfrontier

+0

l'applicazione stessa non è sviluppata da me e Firefox insieme a jre e l'applicazione è fornita anche da una terza società di parti – wildfrontier

risposta

4

C'è una spiegazione nello 1.7.0u10 release notes.

La JRE si basa su controlli periodici con un server Oracle per determinare se (JRE) è ancora considerato up-to-date con tutte le aggiornamenti di sicurezza disponibili (al di sopra della linea di base di sicurezza). In passato, se JRE non era in grado di contattare Oracle Server, continuava a comportarsi come sebbene sia ancora la versione più recente per quanto riguarda la sicurezza, per un periodo indefinito.

Per evitare questo problema, un meccanismo secondario, che non si basa sulla comunicazione esterna , è stato aggiunto a JDK 7u10. Da questa versione in poi, tutti i JRE conterranno una data di scadenza hardcoded. La data di scadenza viene calcolata per terminare dopo il rilascio programmato del successivo aggiornamento di patch critiche.

Il controllo on-line ottiene i suoi dati dal https://javadl-esd-secure.oracle.com/update/baseline.version, credo.

La data di scadenza e le versioni hardcoded nel JRE sono memorizzati nella BuiltInProperties.class situato nel deploy.jar

Per 1.7.0u45, abbiamo

public static final boolean JRE_BASELINE_CHECKS_ENABLED = true; 
public static final String JRE_EXPIRATION_DATE = "02/14/2014"; 
public static final String BASELINE_VERSION_131 = "1.3.1_21"; 
public static final String BASELINE_VERSION_142 = "1.4.2_43"; 
public static final String BASELINE_VERSION_150 = "1.5.0_55"; 
public static final String BASELINE_VERSION_160 = "1.6.0_65"; 
public static final String BASELINE_VERSION_170 = "1.7.0_45"; 
public static final String BASELINE_VERSION_180 = "1.8.0"; 
public static final String CURRENT_VERSION = "1.7.0_45"; 
public static final String CURRENT_NODOT_VERSION = "170"; 
public static final String DEPLOY_VERSION = "10.45.2.18"; 
public static final String DEPLOY_NOBUILD_VERSION = "10.45.2"; 
public static final String DEPLOY_NODOT_VERSION = "10452"; 
public static final String JAVAWS_NAME = "javaws-10.45.2.18"; 
public static final String JAVAWS_VERSION = "10.45.2.18"; 
+0

Grazie! Sono stato in grado di provarlo da solo: ho guardato in BuiltInProperties.class e ho visto: il 12/10/2013. Se imposto la data al 09 dicembre 2013 e ho avviato il browser con quell'app Web, il popup di avviso di sicurezza non viene più. Ma quando ho impostato la data su corrente (oggi) mi sarei aspettato che l'avviso di sicurezza dovesse essere nuovamente rilasciato, ma non è stato – wildfrontier

+0

Le mie domande: 1. perché non è stato possibile riprodurlo in ordine inverso? Impostazione anticipata della data per sostituire la data hardcoded in BuiltInProperties.class. Ho provato a cancellare anche cahe del browser ma non ho ricevuto l'avviso di sicurezza 2.c'è un modo per evitare di far apparire un avviso di sicurezza senza questo hack per impostare il data back del sistema? Voglio dire qui per impostare manualmente alcuni file di configurazione che posso fare con uno script per esempio? – wildfrontier

+0

C'è un file chiamato deployment.properties (almeno su Windows). Questo file contiene proprietà (deployment.expiration.decision. *) Relative al controllo di scadenza. Forse l'eliminazione di questo file tra i test potrebbe essere d'aiuto. – RealHowTo

Problemi correlati