Pergunta

Eu desenvolvo aplicativos ColdFusion no meu laptop com seu próprio servidor ColdFusion 8 com o IIS, que são executados no Windows Vista. Estou tendo um problema bastante irritante.

O problema é que, sempre que eu faço alterações nos meus CFCs, parece que, a menos que eu reinicie meu servidor de aplicativos ColdFusion, as alterações nos meus CFCs não entrarão em vigor até que eu o faça. Muitas vezes, eu tenho que reiniciar minha máquina inteira porque o Windows não pode reiniciar o serviço de servidor de aplicativos ColdFusion. Existe uma maneira melhor de redefinir o cache CFC do servidor Coldfusion?

Isso está começando a sugar muito tempo, só de reiniciar de vez em quando depois de fazer uma mudança. Qualquer insight seria muito apreciado!

Obrigada!

Foi útil?

Solução

Eu garanto que você está criando isso como objetos em algum tipo de escopo persistente, por exemplo: aplicativo, escopos de sessão. O que geralmente faço para evitar esse problema durante o desenvolvimento é criar um parâmetro de URL e verificar isso no arquivo Application.cfm/cfc (ou onde quer que você esteja criando os objetos) e recrie os objetos se esse parâmetro URL for detectado.

Exemplo:

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

É claro que você precisaria fazer isso com todos os objetos com os quais está tendo problemas.

Outras dicas

Não tenho certeza se isso também está em outras versões do CF, mas no CF9 você pode fazer o ApplicationStop () e redefinirá o CFApplication e recarregue -o.

Desmarcar "cache de componentes" em cfadmin -> cache

Verifique também Cfadmin -> Mapeamentos e verifique se a pasta CFC está apontando para a direita, se houver. Às vezes, as pessoas clonam seu código -fonte e não mudam o mapeamento para a nova pasta.

No seu administrador do ColdFusion, você tem um dos seguintes seguintes (verificados)?

Cache> cache confiável

Cache> Salvar arquivos da classe

Apenas perguntando ao óbvio: você está chamando essas funções do OnApplicationStart?

Talvez tente o botão "cache do modelo claro" em CF Admin> Cacheing.

Isto aconteceu comigo antes. Normalmente, tenho que clicar no botão várias vezes para o CF registrar os arquivos alterados.

Também pode tentar desmarcar tudo em armazenamento em cache também. Nota: Faça isso apenas para máquinas de desenvolvimento !!!

Se você deve ter armazenamento em cache no dev, você pode fazer o que eu faço:

Primeiro, coloque uma verificação de um sinalizador de URL no topo do seu método onRequest () que chamará o método 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>   

Isso resolverá a maioria dos seus problemas. No entanto, se você tiver um problema em uma classe que está carregando, não chegará longe o suficiente para verificar esse sinalizador. A solução que eu uso para isso:

Adicione o seguinte ao bottome do seu método onError ():

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

Por fim, você deseja verificar se o objeto de aplicativo existe e se existe cada classe que você está declarando como parte do escopo do aplicativo ou deseja se lembrar do OnApplicationStart (). Para fazer isso, adicione o seguinte logo abaixo do primeiro bloco de código no topo de OnRequestStart ():

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

Eu tinha exatamente o mesmo problema, às vezes tive que reiniciar a máquina se as alterações não refletissem depois de iniciar o servidor o gerenciador de serviços.

O que eu faço é, em (Administrador, armazenamento em cache): 1. Eu desmarquei todas as opções de cache 2. Defino os valores da caixa de texto para "0" 3. Eu mantenho a página (administrador, cache) aberta ao desenvolver, de modo que quando eu Carregue uma alteração e não reflete, eu apenas pressiono o "cache de modelo claro agora".

É isso que está funcionando para mim no CF8, incorporado ao servidor da web, XP.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top