programaticamente, via XML, ou qualquer outra implementação seja em nosso código seja a partir de um método main, seja a partir de uma classe que recebe essa responsabilidade ou qualquer outra estrutura temos que chamar sempre CoreContext.getInstance().initialize(coreConfiguration); ou coreConfiguration.initializeContext(); para configurar e inicializar o framework.
Em uma aplicação WEB é comum que um framework forneça recursos para que a configuração seja feita de forma automática, sem precisar de nada programaticamente.
Este recurso também é provido pelo lindbergframework através de um ServletContextListener e da definição de alguns
Essa configuração é muito simples. Baseia-se em declarar no web.xml da aplicação o ServletContextListener provido pelo lindbergframework e definir os parâmetros (<context-param>) informando onde está o arquivo de configuração do framework e qual a implementação do parser de configuração a ser usado, se será Xml, Properties, Txt, seja lá qual for, sendo que para este último é esperado uma implementação de WebCoreConfiguration.
Tanto o local onde se encontra o arquivo de configuração quando a implementação de WebCoreConfiguration a ser usada não são requeridos pois ambos possuem valores padrão. O path do arquivo de configuração caso não seja definido tem como padrão o valor lindberg-config.xml na raiz do classpath do projeto. E a implementação de WebCoreConfiguration, caso não seja declarada, é usada como padrão:
org.lindbergframework.web.core.configuration.WebClassPathXmlCoreConfiguration.
Abaixo é descrito um exemplo do que precisaria ser adicionado ao nosso web.xml se fossemos usar o mesmo arquivo de configuração que usamos nos exemplos anteriores só que agora em um projeto WEB para configurar o framework de forma automática:
<context-param><!--(ISTO É OPCIONAL. O caminho padrão para o arquivo de configuração é 'lindbergconfig.xml' localizado na raiz do classpath)-->
<param-name>lindbergConfigLocation</param-name>
<param-value>org/lindbergframework/configuracao/lindberg-config.xml</param-value>
</context-param>
<context-param> <!--(ISTO É OPCIONAL)-->
<param-name>lindbergConfigClass</param-name>
<param-alue>org.lindbergframework.core.context.WebClassPathXmlCoreConfiguration</param-value>
</context-param>
<listener>
<listener-class>org.lindbergframework.web.LindbergContextLoaderListener</listener-class>
</listener>
No exemplo acima observe que adicionamos o listener LindbergContextLoaderListerner, que é o ServletContextListener provido pelo lindbergframework e que sabe como configurar de forma automatizada o framework. Adicionamos o parâmetro lindbergConfigLocation que é onde está o arquivo de configuração.
Esta propriedade é opcional e caso não seja declarada, o framework usa o nome e local padrão para o arquivo de configuração, que é 'lindberg-config.xml' na raiz do classpath. Importante dizer que o arquivo não obrigatoriamente tem que ser um XML, isto depende da implementação de WebCoreConfiguration que estiver usando. Se, por exemplo, ocorresse a necessidade de usar uma implementação para configurações definidas em um arquivo .properties então este parâmetro apontaria para um arquivo properties, da mesma forma se eu criar minha própria implementação de WebCoreConfiguration que trabalha com um arquivo TXT segundo uma formatação que eu criei então esse parâmetro vai apontar para um arquivo TXT que segue o padrão de formatação definido. Para que haja essa flexibilidade, é que é possível definir a implementação de WebCoreConfiguration que deve ser usada através do parâmetro lindbergConfigClass.
Passos para configuração no web.xml:
• Declarar o listener: org.lindbergframework.web.LindbergContextLoaderListener
• Declarar os Parâmetros via
-- ◦ lindbergConfigLocation: Local onde está o arquivo de configuração caso o -- arquivo de configuração não siga o padrão é 'lindberg-config.xml' na raiz do
-- classpath.
-- ◦ lindbergConfigClass: Implementação de CoreConfiguration que efetuará o parser -- da configuração. Quando não definido este parâmetro a implementação padrão,
-- WebClassPathXmlCoreConfiguration, é usada.
A partir daí é só iniciar o servidor que o a configuração será efetuada automaticamente e você verá no console as mensagens de log informando o processo de inicialização do contexto WEB do framework.
ATENÇÃO: Para alguns servidores é necessário adicionar a lib do xmlbeans direto nas libs do servidor de modo a sobrescrever a lib padrão provida pelo mesmo. Isso se faz necessário quando ao subir o servidor se obtenha uma mensagem de erro como a descrita abaixo indicando conflito de carregamento de classes do xmlbeans.
”...Loader constraint violation in interface itable initialization: when resolving method
"org.apache.xmlbeans.impl.store.Xobj$NodeXobj.setUserData(Ljava/lang/String;Ljava/lang/Object;Lorg/w3c/dom/UserDataHa
ndler;)Ljava/lang/Object;" the class loader (instance of org/jboss/classloader/spi/base/BaseClassLoader) of the
current class, org/apache/xmlbeans/impl/store/Xobj$NodeXobj, and the class loader (instance of
interface org/w3c/dom/Node have different Class objects for the type org/w3c/dom/UserDataHandler used in the
signature”
Nenhum comentário:
Postar um comentário