Histórico da Página
...
O objetivo deste documento é demonstrar como sobrescrever as propriedades do produto DATASUL utilizadas em um ambiente com servidor de aplicação Tomcat.configurar o arquivo context.xml do Tomcat conforme as necessidades do ambiente
Na versão do produto que utiliza Web Service JBoss, existem vários arquivos de propriedades (datasul_framework.properties, config.xml, di.properties, etc.), que acabam dificultando o gerenciamento. Na nova arquitetura, o tratamento de propriedades do sistema foi alterado, onde as mesmas foram colocadas dentro de banco de dados para facilitar o gerenciamento e manutenção, com isso houve uma centralização das propriedades. Agora, as telas de Propriedades do Sistema são em HTML, facilitando o acesso e manutenção do ambiente., na nova versão as configurações são armazenadas no banco de dados e criamos a figura do agrupador de propriedades para tratar as propriedades que serão distintas a cada Tomcat utilizado.
Se não tem a necessidade de propriedades específicas por servidor as únicas configurações necessárias são:
Chave | Valor |
---|---|
totvs.appserver | Indica o endereço do appserver utilizado |
totvs.license.ambient.type | Tipo do ambiente Normal/Demonstration/Test |
totvs.license.port | porta do servidor de licença (opcional para Demonstration) |
totvs.license.server | host do servidor de licença (opcional para Demonstration) |
Abaixo exemplo do arquivoA única configuração obrigatória em arquivo é a URL de conexão no AppServer, que está contida no arquivo .../TOMCAT/conf/context.xml.
Para informar ao Tomcat qual deverá ser o Appserver que será utilizado, utilizá-se a tag Environment, conforme o exemplo abaixo:
<Environment name="totvs.appserver" value="AppServer:// |
---|
host:5132/NovoFrame" type="java.lang.String" /> <Environment name="totvs.license.ambient.type" value="Normal" type="java.lang.String" /> <Environment name="totvs.license.port" value="5555" type="java.lang.String" /> <Environment name="totvs.license.server" value="Ribanceira" type="java.lang.String" /> |
---|
draw.io Diagram | ||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Arquitetura
É possível esquematizar vários formatos de ambientes quando se trabalha com servidores Tomcat, conforme abaixo:
Neste exemplo, o ambiente
...
está distribuído entre
...
Tomcats
...
, Appservers e conjunto da bancos diferentes para demonstrar as possibilidades:
Situação Tomcat 1:
Configuração:
O arquivo context.xml contém apenas as propriedades citadas acima (totvs.appserver, totvs.license.ambient.type, totvs.license.port, totvs.license.server).
Comportamento:
Utiliza as propriedades default e não é afetado pelas alterações de propriedade dos Tomcats com agrupador (Tomcat 2 no exemplo).
Cuidados:
O Tomcat 3 não tem agrupador caso altere uma propriedade nesse servidor ela se propagará para esse.
Situação Tomcat 2:
Configuração:
O arquivo context.xml contém apenas as propriedades citadas acima (totvs.appserver, totvs.license.ambient.type, totvs.license.port, totvs.license.server) e mas a propriedade do agrupador totvs.envprop.group.
Comportamento:
As propriedades alteradas nesse servidor são exclusivas, elas não se propagam para os Tomcat 1 e 3
Cuidados:
Caso não tenha feito a alteração de uma propriedade, customizando ela para esse servidor, e essa propriedade for alterada nos servidores Tomcat 1 ou 3 essa alteração afetará esse servidor.
Situação Tomcat 3:
Configuração:
O arquivo context.xml contém apenas as propriedades citadas acima (totvs.appserver, totvs.license.ambient.type, totvs.license.port, totvs.license.server).
Comportamento:
Utiliza as propriedades default e não é afetado pelas alterações de propriedade dos Tomcats com agrupador (Tomcat 2 no exemplo).
Cuidados:
O Tomcat 1 não tem agrupador caso altere uma propriedade nesse servidor ela se propagará para esse.
...
Para informar para o Tomcat qual o Appserver será utilizado, é preciso definir uma tag Environment, dentro do arquivo .../TOMCAT/conf/context.xml, que conterá a propriedade "totvs.appserver" e a URL de conexão do AppServer, conforme o exemplo abaixo:
<Environment name="totvs.appserver" value="AppServer://servidorApp:5162/totvs-brk1" type="java.lang.String" /> |
---|
Neste outro exemplo, existem os seguintes ambientes: produção, desenvolvimento e testes.
O ambiente de produção está apontando para um único servidor Appserver e servidor de banco de dados.
Já o ambiente de desenvolvimento e testes podem apontar para um servidor Appserver diferente, onde cada um terá o seu próprio PROPATH, e cada servidor Appserver poderá apontar para o mesmo servidor de banco de dados.
Neste formato, onde é possível manter vários servidores appserver, utilizando o arquivo .../TOMCAT/conf/context.xml, pode-se especificar propriedades diferentes em cada servidor, por exemplo:
- No Tomcat de desenvolvimento, existe o licenciamento do tipo "normal", já no Tomcat de homologação o licenciamento do tipo "test".
Então concluí-se que no o arquivo .../TOMCAT/conf/context.xml, podem existir propriedades diferenciadas para os ambientes, onde os valores especificados ficarão "fixos" dentro desses ambientes.
draw.io Diagram | ||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
...
Context
Por meio do arquivo context.xml é possível sobrescrever as propriedades do produto DATASUL, o arquivo fica localizado na pasta conf, onde foi instalado o Tomcat. Para realizar o procedimento basta adicionar um nova Environment no arquivo context.xml.
Exemplo de propriedade sobrescrevendo a porta do License:
<Environment name="totvs.license.port" value="7777" type="java.lang.String"/> |
---|
Quando adicionada uma propriedade no context.xml, está "sobrescrevendo" (em tempo de execução) o valor desta propriedade, onde o valor já existente no banco de dados será ignorado e será desconsiderado qualquer valor especificado na tela HTML de Propriedades do Sistema. Este recurso é muito útil quando existem ambientes de homologação, desenvolvimento e produção, pois cada um poderá ter o seu próprio AppServer e as suas propriedades customizadas.
Informações |
---|
Todos as propriedades são do tipo java.lang.String |
draw.io Diagram | ||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Agrupadores de Propriedades
A partir da versão 12.1.28 do produto DATASUL, estará disponibilizada a funcionalidade de agrupadores de propriedades, que visa facilitar a criação, gerenciamento e redução dos recursos necessários para os ambientes.
Um exemplo interessante de utilização dos agrupadores, seria em um ambiente de homologação e de desenvolvimento, onde utilizando os agrupadores pode-se configurar propriedades com valores diferenciados entre eles. Com isso é possível utilizar o mesmo servidor Appserver e o mesmo servidor de banco de dados.
Nesse exemplo, as configurações do arquivo context.xml serão as seguintes:
Ambiente de Desenvolvimento
Bloco de código |
---|
<?xml version="1.0" encoding="UTF-8"?> <Context crossContext="true"> <WatchedResource>WEB-INF/web.xml</WatchedResource> <WatchedResource>WEB-INF/tomcat-web.xml</WatchedResource> <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource> <Environment name="totvs.appserver" value="AppServer://servidorApp:5162/totvs-brk1" type="java.lang.String" /> <Environment name="totvs.envprop.group" value="desenv" type="java.lang.String" /> <Environment name="totvs.license.ambient.type" value="normal" type="java.lang.String" /> </Context> |
Ambiente de Homologação
Bloco de código |
---|
<?xml version="1.0" encoding="UTF-8"?> <Context crossContext="true"> <WatchedResource>WEB-INF/web.xml</WatchedResource> <WatchedResource>WEB-INF/tomcat-web.xml</WatchedResource> <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource> <Environment name="totvs.appserver" value="AppServer://servidorApp:5162/totvs-brk1" type="java.lang.String" /> <Environment name="totvs.envprop.group" value="homolog" type="java.lang.String" /> <Environment name="totvs.license.ambient.type" value="test" type="java.lang.String" /> </Context> |
draw.io Diagram | ||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Lista de propriedades
Propriedade | Obrigatório? | Descrição |
---|---|---|
totvs.appserver | Sim | Contém o caminho, tipo url, para o appserver progress no formato <appserver://host:port/service> ou no formato <http://host:port/apsv>. |
totvs.license.ambient.type | Não | Define o tipo de licenciamento do ambiente. Valores permitidos: normal, test, demonstration. |
totvs.license.port | Não | Define a porta do License Server a ser utilizada. |
totvs.license.server | Não | Define o nome do servidor aonde o License Server esta sendo executado. |
totvs.envprop.group | Não | Define o nome do agrupador de propriedades, caso não seja informado, será considerado o registro padrão que está especificado dentro do banco de dados. |
...