Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Informações
titleAtenção

Esta página foi revisada para considerar as novas configurações de server do fluig para a atualização é destinada para atualizações 1.6 .

Caso possua uma atualização anterior do fluig acesse: Como desenvolver datasets acessando BD externo na versão 1.5.13 ou inferior?

e superiores do TOTVS Fluig Plataforma.

Índice

Índice
outlinetrue
excludeÍndice
stylenone

...

O objetivo desse guia é apresentar os procedimentos necessários para criar datasets que acessem banco de dados externos ao fluigTOTVS Fluig Plataforma.

Nota
titleAtenção!

A partir das atualizações 1.6.5 Liquid, 1.7.0 Lake e 1.7.1 Crystal Lake, os select passados por constraint em dataset serão bloqueados pelo serviço. Abaixo temos um exemplo da correta utilização do procedimento.

Aviso
titleImportante!

Ao realizar um desenvolvimento usando o datasource do fluig, da plataforma a partir da atualização 1.6.5-190514 é indispensável usar o AppDS em vez do FluigDS ou FluigDSRO.


Datasets acessando banco de dados externo

...

Para que seja possível criar um dataset que acesse uma base externa ao fluigà plataforma, é necessário, primeiramente, configurar o arquivo domain.xml. Este arquivo se encontra dentro da pasta de instalação do fluig. Por exemplo: partindo do principio que a instalação foi feita em ambiente Windows no diretório C, o arquivo será encontrado em C:\fluig\appserver\domain\configuration\domain.xml.Edite o arquivo serviço JDBC.


Painel
Deck of Cards
historyfalse
idExemplo 1
Card
id1
labelJDBC pelo painel de controle

Acesse o TOTVS Fluig com usuário administrador a opção Painel de controle, agrupador Desenvolvimento e Serviços. Selecione a opção Novo serviço:

Image Added


Selecione o tipo de serviço JDBC e insira as informações solicitadas:

  • Nome: adicione um nome para o serviço que deseja cadastrar.
  • Descrição: adicione uma descrição para o serviço.
  • Driver: neste campo, será selecionado o driver desejado: MySQL, SQL Server ou Oracle. Após a gravação do serviço, o driver não pode ser editado.
  • URL: informe os dados do servidor de banco de dados.
  • Usuário: usuário de acesso ao banco de dados.
  • Senha: senha de acesso ao banco de dados.

Image Added

  • Acionar opção Salvar.


Testando o serviço JDBC


No serviço criado, selecione a opção Testar conexão Testar serviçoImage Added :

Image Added



Card
id2
labelJDBC pelo arquivo domain.xml

Edite o arquivo domain.xml localizado em [diretório_instalação]\appserver\domain\configuration. e procure pela linha que contém a tag <datasources>. Esta tag é responsável pelo agrupamento das conexões criadas na aplicação.


A seguir é apresentado um exemplo da tag no arquivo domain.xml:

Bloco de código
languagexml
titleTag datasource
linenumberstrue
<subsystem xmlns="urn:jboss:domain:datasources:
4
5.0">
	<datasources>

Dentro desta tag terá uma outra tag

...

chamada <datasource>,

...

responsável pelas configurações de uma conexão com um banco de dados.

O exemplo abaixo apresenta o uso da tag <datasource> (conexão) criado dentro da primeira tag <datasources> (Responsável pelo agrupamento das conexões), sendo que seu arquivo já possuirá alguns <datasource> configurados, que são responsáveis pela comunicação com o banco de dados

...

da plataforma.

Bloco de código
languagexml
linenumberstrue
<datasources>
	<datasource jta="false" jndi-name="java:/jdbc/AppDS" pool-name="AppDS" enabled="true" use-java-context="false">
		<connection-url>jdbc:mysql://localhost:3306/fluig</connection-url>
		<driver>mysqlDriver</driver>
		<transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation>
		<pool>
			<min-pool-size>10</min-pool-size>
			<max-pool-size>20</max-pool-size>
		</pool>
		<security>
			<user-name>root</user-name>
			<password>admin</password>
		</security>
		<validation>
			<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker"/>
			<validate-on-match>true</validate-on-match>
			<background-validation>false</background-validation>
		</validation>
		<statement>
			<share-prepared-statements>false</share-prepared-statements>
		</statement>
	</datasource>
	<drivers>
   		<driver name="mysqlDriver" module="com.mysql">
    		<driver-class>com.mysql.jdbc.Driver</driver-class>
    	</driver>
    </drivers>
</datasources>
Nota
titleObservação
Nunca remova ou altere

Não orientamos remover ou alterar as conexões (<datasource>) que já estão contidas no arquivo de configuração domain.xml. Estas conexões são

vitais

essenciais para o correto funcionamento

do fluig

da plataforma. Somente as novas conexões criadas com a finalidade de acesso aos datasets podem ser manipuladas.

No exemplo apresentado, além do datasource, existem duas outras tags que ficam dentro da estrutura da tag

...

<datasources> que são as <drivers> e <driver>. A tag <drivers> é responsável pelo agrupamento das configurações de driver. Já a tag <driver> é responsável pela comunicação com o banco de dados. Pode haver uma ou várias configurações de driver caso

...

mais de um banco seja acessado. (Oracle, MySQL, SQLServer).

Nota
titleObservações
  1. O exemplo apresentado
possui
  1. tem configurado somente o driver para uso do banco de dados MySQL. Se outro banco for utilizado
outro banco
  1. , verifique a configuração do driver necessária para seu uso.
Nunca
  1. Não remova o driver já configurado ou substitua ele por outro. Caso necessário, configure um novo driver seguindo a estrutura já descrita.

Neste caso, para criar um dataset que acesse uma determinada base de dados, é necessário acrescentar uma nova conexão <datasource> dentro da tag <datasources>.

Exemplo: para acessar uma base de dados em MySQL cujo nome da base seja minhabase, a configuração do novo datasource ficará da seguinte forma:

Bloco de código
languagexml
linenumberstrue
 <datasource jta="false" jndi-name="java:/jdbc/MeuDataSet" pool-name="MeuDataSet" enabled="true" use-java-context="false">
	<connection-url>jdbc:mysql://localhost:3306/minhabase</connection-url>
	<driver>mysqlDriver</driver>
	<pool>
		<min-pool-size>5</min-pool-size>
		<max-pool-size>15</max-pool-size>
	</pool>
	<security>
		<user-name>root</user-name>
		<password>admin</password>
	</security>
	<validation>
		<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker"/>
		<validate-on-match>true</validate-on-match>
		<background-validation>false</background-validation>
	</validation>
	<timeout>
		<blocking-timeout-millis>30000</blocking-timeout-millis>
	</timeout>
	<statement>
		<share-prepared-statements>false</share-prepared-statements>
	</statement>
</datasource>
 

A partir do código gerado acima,

...

vale destacar:

  • jndi-name =

...

...

  • é necessário informar um alias para conexão. No exemplo, foi dado o nome de MeuDataset ficando "java:/jdbc/MeuDataset"
  • pool-name =usar o mesmo nome dado

...

  • no alias para conexão. No exemplo

...

  • definimos como MeuDataset.
  • <connection-url> = dentro desta tag

...

  • deve ser informada a conexão com a base de dados, sendo que o exemplo mostra uma conexão com o banco de dados MySQL. Se outro banco for usado

...

warning!
  • , deve ser verificada a forma correta de conexão datasource com o banco ao qual se pretende conectar.
  • <user-name> = usuário de acesso ao banco de dados.
  • <password> = senha de acesso ao banco de dados.


Nota
titleImportante

Para garantir a integridade da base de dados que será acessada, é importante

garantir

que o usuário configurado para acesso ao banco seja criado com privilégios somente de leitura, garantindo assim que nenhum registro possa ser alterado.

Após criado o datasource, salve o arquivo domain.xml, e reinicie o serviço do

fluig

Fluig para que o servidor de aplicação (Wildfly) consiga mapear a nova conexão criada.



Construindo o Dataset para acesso à nova conexão

...

O exemplo abaixo apresenta o acesso ao datasource MeuDataSet criado como exemplo anteriormente no arquivo domain.xml.

Bloco de código
languagejs
linenumberstrue
function createDataset(fields, constraints, sortFields) {
	var newDataset = DatasetBuilder.newDataset();
	log.info("QUERY: " + myQuery);
	var dataSource = "/jdbc/MeuDataSet";
	var ic = new javax.naming.InitialContext();
	var ds = ic.lookup(dataSource);
	var created = false;
	var myQuery = "select * from pessoas";
	try {
		var conn = ds.getConnection();
		var stmt = conn.createStatement();
		var rs = stmt.executeQuery(myQuery);
		var columnCount = rs.getMetaData().getColumnCount();
		while (rs.next()) {
			if (!created) {
				for (var i = 1; i <= columnCount; i++) {
					newDataset.addColumn(rs.getMetaData().getColumnName(i));
				}
				created = true;
			}
			var Arr = new Array();
			for (var i = 1; i <= columnCount; i++) {
				var obj = rs.getObject(rs.getMetaData().getColumnName(i));
				if (null != obj) {
					Arr[i - 1] = rs.getObject(rs.getMetaData().getColumnName(i)).toString();
				} else {
					Arr[i - 1] = "null";
				}
			}
			newDataset.addRow(Arr);
		}
	} catch (e) {
		log.error("ERRO==============> " + e.message);
	} finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (conn != null) {
			conn.close();
		}
	}
	return newDataset;
}

A partir do código gerado acima, cabe vale destacar:

  • Na linha 4 : manter todo o código, alterando somente o nome " MeuDataSet" pelo nome dado ao criar seu datasource;
  • Na linha 8 : adicionar a query para acesso à tabela contida no banco, cuja conexão foi criada.

...