Domanda

I sviluppare applicazioni ColdFusion sul mio portatile con il proprio ColdFusion 8 Server con IIS che funzionano su Windows Vista. Sto avendo un problema piuttosto fastidioso.

Il problema è che ogni volta che faccio alcuna modifica al mio CFC, sembra che se non si riavvia il server ColdFusion Application, le modifiche al mio CFC non avranno effetto unti lo faccio. Spesso, devo ricominciare tutta la mia macchina perché non è possibile riavviare il servizio ColdFusion Application Server. C'è un modo migliore per ripristinare la cache CFC di ColdFusion Server?

Questo sta cominciando a succhiare un sacco di tempo solo dover riavviare ogni tanto dopo faccio un cambiamento. Tutta la comprensione sarebbe molto apprezzato!

Grazie!

È stato utile?

Soluzione

Vi garantisco che si sta creando questi come oggetti in una sorta di entità persistenti, per esempio: l'applicazione, gli ambiti di sessione. Quello che di solito fare per evitare questo problema durante lo sviluppo è creare un parametro URL e verificare che nel file Application.cfm / CFC (o ovunque si sta creando gli oggetti) e ricreare gli oggetti se viene rilevato che il parametro URL.

Esempio:

<cfif NOT structKeyExists(application,"myObj") OR structKeyExists(url,"reinit")>
    <cfset application.myObj = createObject("component","path.to.cfc") />
</cfif>

naturalmente si avrebbe bisogno di fare questo con ogni oggetto che si stanno avendo un problema con.

Altri suggerimenti

non sono sicuro se questo è in altre versioni di CF anche ma in CF9 si può fare ApplicationStop () e si ripristinerà la CFApplication e ricaricarla.

Deseleziona "Componente cache" in CFAdmin -> Caching

Anche controllare CFAdmin -> Mapping e assicurarsi che la cartella di CFC punta a destra di una eventuale. A volte le persone clonare il loro codice sorgente e non cambiano la mappatura nella nuova cartella.

Nel vostro amministratore Coldfusion, hai una delle seguenti abilitata (selezionata)?

Caching> Cache Trusted

Caching> file di classe Salva

Basta chiedere l'ovvio: Sta chiamando queste funzioni da onApplicationStart?

Forse provare il pulsante "cache del modello Clear" sotto CF Amministrazione> Caching.

Questo è successo a me prima. Di solito ho a fare clic sul pulsante più volte per CF registrano i file modificati.

potrebbe anche provare a deselezionare tutto sotto Caching pure. Nota: fare questo solo per le macchine di sviluppo !!!

Se è necessario disporre di memorizzazione nella cache in dev, si potrebbe fare quello che faccio:

In primo luogo mettere un assegno per una bandiera URL alla parte superiore del vostro metodo di onRequest () che chiamerà il metodo onApplicationStart ():

<cfif IsDefined("URL.dev")>
    <cflock timeout="5" scope="Session" type="Exclusive">
        <cfif URL.dev EQ true>
            <cfset SESSION.debug = true />
        <cfelse>
            <cfset StructDelete(SESSION, "debug") />
        </cfif> 
    </cflock>
</cfif>

<cflock timeout="5" scope="Session" type="Readonly">
    <cfif IsDefined("URL.appreset") or IsDefined("SESSION.dev")>
            <cfset StructClear(SESSION) />
            <cfset onApplicationStart() />
        </cfif>
</cflock>   

In questo modo risolvere la maggior parte dei vostri problemi. Tuttavia, se avete un problema in una classe che si sta caricando, non sarà mai abbastanza lontano per verificare la presenza di questo flag. La soluzione che uso per questo:

Aggiungere il seguente alla bottome del vostro onError () Metodo:

<cfif IsDefined("APPLICATION")>
      <cfset StructClear(APPLICATION) />
</cfif>

Infine, si desidera controllare che esiste l'oggetto Application e che ogni classe si dichiara come parte del campo di applicazione applicazione esiste o che si desidera richiamare onApplicationStart (). Per fare questo, aggiungere il seguente proprio sotto il primo blocco di codice nella parte superiore di onRequestStart ():

<cfif not IsDefined("APPLICATION")
    OR not StructKeyExists(APPLICATION, "[ClassName1]")
    OR not StructKeyExists(APPLICATION, "[ClassName2]")
    ...>
    <cfset onApplicationStart() />
</cfif>

ho avuto lo stesso identico problema, a volte ho dovuto riavviare la macchina se i cambiamenti non rifletterebbero dopo l'avvio del server il responsabile del servizio.

Quello che faccio è, a (Administrator, Caching): 1. I incontrollato tutte le opzioni di cache 2. Ho impostato i valori casella di testo a "0" 3. I Keep il (Administrator, Caching) pagina aperta durante lo sviluppo, in modo che quando si invia una modifica e non riflette, ho appena colpito il "Clear Template cache adesso".

Questo è ciò che sta lavorando per me su CF8, server Web integrato, XP.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top