Páginas filhas
  • Instalação do Servidor - Server (JBoss versão 4.2.3)

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

  • no Linux/Unix; observe que coloco explicitamente a versão do JBoss; o ideal é criar um link simbólico e usar somente /opt/jboss e, também uso um IP 192.168.0.185, que provavelmente não será o seu, tanto em testes como em produção!
  • teremos mais abaixo, um arquivo de propriedades usadas pelo Intellector e deve ficar em JBOSS_HOME/bin
  • Não use a variável de ambiente -Duser.dir=seu_dir, pois isso impede o Intellector de compilar as políticas! 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/bin/bash
 
# alguns snipets para o bootstrap do Intellector
export JAVA_OPTS="-Xms512m -Xmx536m -XX:PermSize=128m -XX:MaxPermSize=128m -Xss128k -Dintellector.datadir=/home/jboss/intellector -Dpersistence.configuration=./persistence.properties"
 
# exportar a variavel JBOSS_HOME, devido a compilacao de politicas
export JBOSS_HOME=/opt/jboss-4.2.3.GA
 
# a library log4j deve estar incluido no classpath, inprescindivel na
# compilacao de politicas; simplemente não compila as políticas
export JBOSS_CLASSPATH=$JBOSS_HOME/server/default/lib/log4j.jar
 
# inicia o JBoss numa instancia e IP especificos
./run.sh -c default --host 192.168.0.185


 

No Windows…

  

...

1
2
3
4
5
6
7
8
9
10
11
12
rem alguns snipets para o bootstrap do Intellector
set JAVA_OPTS=-Xms512m -Xmx536m -XX:PermSize=128m -XX:MaxPermSize=128m -Xss128k -Dintellector.datadir=c:/java/intellector-files
 
rem exportar a variavel JBOSS_HOME, devido a compilacao de politicas
set JBOSS_HOME=c:\java\jboss-4.2.3.GA
 
rem a library log4j deve estar incluido no classpath, inprescindivel na
rem compilacao de politicas; simplemente não compila as políticas
set JBOSS_CLASSPATH=%JBOSS_HOME%\server\default\lib\log4j.jar
 
rem inicia o JBoss numa instancia e IP especificos
./run.bat -c default --host 192.168.0.185

 

...

Se tudo foi bem, e os passos foram seguidos, iniciar o JBoss é a parte trivial; no diretórioJBOSS_HOME/bin, inicie o batch, simplesmente digitando ./run-intellector.sh (linux/unix) ou run.bat no Windows; abaixo o início e fim do bootstrap do JBoss: 

  • iniciando…

 

...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
=========================================================================
 
  JBoss Bootstrap Environment
 
  JBOSS_HOME: /opt/jboss-4.2.3.GA
 
  JAVA: /opt/jdk1.6.0_10/bin/java
 
  JAVA_OPTS: -Dprogram.name=run.sh -server -Xms512m -Xmx536m -XX:PermSize=128m -XX:MaxPermSize=128m -Xss128k -Dintellector.datadir=/home/jboss/intellector-files -Djava.net.preferIPv4Stack=true
 
  CLASSPATH: /opt/jboss-4.2.3.GA/server/default/lib/log4j.jar:/opt/jboss-4.2.3.GA/bin/run.jar:/opt/jdk1.6.0_10/lib/tools.jar
 
=========================================================================
 
17:25:25,676 INFO  [Server] Starting JBoss (MX MicroKernel)...
17:25:25,708 INFO  [Server] Release ID: JBoss [Trinity] 4.2.3.GA (build: SVNTag=JBoss_4_2_3_GA date=200807181417)
17:25:25,710 INFO  [Server] Home Dir: /opt/jboss-4.2.3.GA
17:25:25,710 INFO  [Server] Home URL: file:/opt/jboss-4.2.3.GA/

 

pronto pra atender requisições…

  

...

1
2
3
4
5
17:26:05,961 INFO  [intellector] -----------------------------------------------------------
17:26:05,962 INFO  [intellector] --------- Intellector configurado com sucesso... ----------
17:26:05,962 INFO  [intellector] -----------------------------------------------------------
17:26:06,146 INFO  [TomcatDeployer] deploy, ctxPath=/jmx-console, warUrl=.../deploy/jmx-console.war/
17:26:07,318 INFO  [Server] JBoss (MX MicroKernel) [4.2.3.GA (build: SVNTag=JBoss_4_2_3_GA date=200807181417)] Started in 21s:602ms


 

...

Exemplo datasource Oracle…

 

...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?xml version="1.0" encoding="UTF-8"?>
<datasources>
  <local-tx-datasource>
    <jndi-name>jdbc/OracleDS</jndi-name>
    <connection-url>jdbc:oracle:thin:@192.168.0.149:1521:oralin</connection-url>
    <!--
    Here are a couple of the possible OCI configurations.
 
    <connection-url>jdbc:oracle:oci:@youroracle-tns-name</connection-url>
        or
    <connection-url>jdbc:oracle:oci:@(description=(address=(host=youroraclehost)(protocol=tcp)(port=1521))(connect_data=(SERVICE_NAME=yourservicename)))</connection-url>
 
    Clearly, its better to have TNS set up properly.
     -->
    <driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
    <user-name>cartao_h</user-name>
    <password>uma_senha_qualquer</password>
    <!-- Uses the pingDatabase method to check a connection is still valid before handing it out from the pool -->
    <!--valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleValidConnectionChecker</valid-connection-checker-class-name-->
    <!-- Checks the Oracle error codes and messages for fatal errors -->
    <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name>
    <!-- sql to call when connection is created
    <new-connection-sql>some arbitrary sql</new-connection-sql>
    -->
    <!-- sql to call on an existing pooled connection when it is obtained from pool - the OracleValidConnectionChecker is prefered
    <check-valid-connection-sql>some arbitrary sql</check-valid-connection-sql>
    -->
    <!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml (optional) -->
    <metadata>
       <type-mapping>Oracle10g</type-mapping>
    </metadata>
  </local-tx-datasource>
</datasources>


 

Exemplo datasource PostgreSQL 9.x

 

...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?xml version="1.0" encoding="UTF-8"?>
<datasources>
    <no-tx-datasource>
        <jndi-name>intellector/totvs</jndi-name>
        <connection-url>jdbc:postgresql://localhost:5432/postgres</connection-url>
        <driver-class>org.postgresql.Driver</driver-class>
        <user-name>postgres</user-name>
        <password>esqueci_me_dela</password>
 
        <!-- The minimum connections in a pool/sub-pool. Pools are lazily constructed on first use -->
        <min-pool-size>1</min-pool-size>
        <!-- The maximum connections in a pool/sub-pool -->
        <max-pool-size>30</max-pool-size>      
    </no-tx-datasource>
</datasources>

 

Exemplo datasource SqlServer2008…

...

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?xml version="1.0" encoding="UTF-8"?>
<datasources>
 <no-tx-datasource>
    <jndi-name>jdbc/tools</jndi-name>
    <driver-class>net.sourceforge.jtds.jdbc.Driver</driver-class>
    <user-name>totvs</user-name>
    <password>ops_esqueci!</password>
    <!--pooling parameters-->
    <transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation>
    <min-pool-size>5</min-pool-size>
    <max-pool-size>30</max-pool-size>
    <blocking-timeout-millis>5000</blocking-timeout-millis>
    <idle-timeout-minutes>15</idle-timeout-minutes>
    <new-connection-sql>select 1</new-connection-sql>
    <check-valid-connection-sql>select 1</check-valid-connection-sql>
    <set-tx-query-timeout></set-tx-query-timeout>
    <metadata>
        <type-mapping>MS SQLSERVER2008</type-mapping>
    </metadata>
 </no-tx-datasource>
</datasources>

 

  • Além disso, também deverão ser colocados no diretório$JBOSS_HOME/server/[instance]/lib, os arquivos “.jar” referentes ao driver do banco de dados (ex : C:\java\jboss-4.2.3.GA\server\default\lib) 
  • Baixe o Driver JNDI para o SQLServer aqui. 
  • Baixe o Driver JNDI para o Oracle aqui.

...

  • Apagar o arquivo hsqldb-ds.xml da pasta JBOSS_HOME/server/[instance]/deploy
  • Copiar o respectivo arquivo correspondente ao DB que será usado deJBOSS_HOME/docs/examples/jca/*-ds.xml para a pasta deploy de sua instância
  • Alterar o jndi-name no arquivo *-ds.xml para no nome correspondente
  • Apagar o arquivo hsqldb-jdbc2-service.xml da pastaJBOSS_HOME/server/default/jms
  • Copiar o arquivo de gerência de persistência *-jdbc2-service.xml deJBOSS_HOME/docs/examples/jms para a pasta JBOSS_HOME/server/[instance]/jms
  • Alterar o nome do jndi no arquivo *-jdbc2-service.xml para o mesmo nome de jndi-name, contido no *-ds.xml (e.g. “DefaultDS”): jboss.jca:service=DataSourceBinding,name=DefaultDS
  • Renomear hsqldb-jdbc-state-service.xml para o nome do respectivo DB *-jdbc-state-service.xml, as configurações opcionais deixe como estão
  • Copiar o Driver de conexão (JDBC) para  a pasta  JBOSS_HOME/server/[instance]/lib

...

No Servidor de aplicação na pasta “(ex : C:\java\jboss-4.2.3.GA\server\default\deploy\jms\jbossmq-destinations-service.xml)”, neste arquivo contém as configurações das filas que o servidor disponibiliza para as aplicações conversarem entre si.

  

...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?xml version="1.0" encoding="UTF-8"?>
   ...
  <mbean code="org.jboss.mq.server.jmx.Queue"
     name="jboss.mq.destination:service=Queue,name=A">
    <depends optional-attribute-name="DestinationManager">jboss.mq:service=DestinationManager</depends>
  </mbean>
  <mbean code="org.jboss.mq.server.jmx.Queue"
     name="jboss.mq.destination:service=Queue,name=B">
    <depends optional-attribute-name="DestinationManager">jboss.mq:service=DestinationManager</depends>
  </mbean>
  <mbean code="org.jboss.mq.server.jmx.Queue"
     name="jboss.mq.destination:service=Queue,name=C">
     <depends optional-attribute-name="DestinationManager">jboss.mq:service=DestinationManager</depends>
  </mbean>
  <mbean code="org.jboss.mq.server.jmx.Queue"
     name="jboss.mq.destination:service=Queue,name=D">
    <depends optional-attribute-name="DestinationManager">jboss.mq:service=DestinationManager</depends>
  </mbean>
  <mbean code="org.jboss.mq.server.jmx.Queue"
     name="jboss.mq.destination:service=Queue,name=ex">
    <depends optional-attribute-name="DestinationManager">jboss.mq:service=DestinationManager</depends>
  </mbean>
  <mbean code="org.jboss.mq.server.jmx.Queue"
    <depends optional-attribute-name="DestinationManager">jboss.mq:service=DestinationManager</depends>
  </mbean>
 
</server>

 

Neste arquivo somente deve ser incluído a fila do Intelletor caso o Administrador do Servidor de Aplicação deseje que o Intellector não ocupe uma fila que poderá ser utilizada por outras aplicações. Neste caso deve-se incluir:

 

...

1
2
3
4
<mbean code="org.jboss.mq.server.jmx.Queue"
   <depends optional-attribute-name="DestinationManager">jboss.mq:service=DestinationManager</depends>
 </mbean>

 

para Para que o Intellector possa monitorar uma fila própria. Para configurar a Fila que o Intellector irá monitorar o Intellector possui um arquivo de configuração para as persistências de dados explicado mais adiante. 

 

Arquivo persistence.properties 

...

O Intellector ultiliza a API de persistência Hibernate de forma que este arquivo também serve para mapear as configurações mais eficazes para utilização da API.  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#persistence.properties
#Fri Feb 03 13:52:26 BRST 2012
 
### Define se o intellector utilizará banco de dados para persistência dos dados de acessos e políticas
intellector.usesdatabase=true
 
### Nome da fila utilizada pelo MDB (Não pode ser alterado)
persistence.queue.name=queue/intellector
 
### Connection Factory
persistence.queue.connection.factory=QueueConnectionFactory
 
### Context Factory
persistence.jndi.context.factory=org.jboss.security.jndi.JndiLoginInitialContextFactory
 
### Endereço da fila JMS
persistence.jndi.address=jnp://192.168.18.129:1099
 
### Emails de aviso de erro na fila de tarifação, separados por virgula, de preferência sem espaço
 
### Credenciais de conexão na fila Usuário/Senha
persistence.jndi.security.principal=
persistence.jndi.security.credentials=
 
### Parâmetros do Hibernate do Cache e Auditoria ###
####################################################
## Endereço JNDI da conexão
hibernate.connection.datasource=java:intellector/totvs
# dialetos suportados pelo Intellector
hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
#hibernate.dialect=org.hibernate.dialect.SQLServer2008Dialect
#hibernate.dialect=br.com.totvs.persistence.dialectfix.Oracle9iDialectFix
#hibernate.dialect=br.com.totvs.persistence.dialectfix.Oracle10gDialectFix
 
### auto schema export
hibernate.hbm2ddl.auto=update
 
### Delimitador de comandos específico do Banco de dados utilizado
hibernate.hbm2ddl.delimiter=;
 
### cache
#hibernate.cache.provider_class=org.hibernate.hibernate.NoCacheProvider
hibernate.use_second_level_cache=false
hibernate.max_fetch_depth=1
hibernate.cache.use_minimal_puts=true
hibernate.use_query_cache=false
 
### hibernate only
hibernate.show_sql=true
hibernate.format_sql=true
hibernate.use_sql_comments=true
hibernate.generate_statistics=true
hibernate.jdbc.batch_versioned_data=true
hibernate.session_factory_name=sessionFactory
hibernate.current_session_context_class=thread
 
### connection
hibernate.connection.release_mode=after_transaction
hibernate.connection.autocommit=false
 
## transaction controll
hibernate.transaction.flush_before_completion=false
hibernate.transaction.auto_close_session=false
#hibernate.transaction.factory_class=org.hibernate.transaction.JDBCTransactionFactory
hibernate.transaction.factory_class=org.hibernate.transaction.JTATransactionFactory
hibernate.transaction.manager_lookup_class=org.hibernate.transaction.JBossTransactionManagerLookup

 

Importante  ressaltar que as variáveis:  

1
2
hibernate.connection.datasource
hibernate.dialect

 

...

O intellector tem sua infraestrutura baseadas numa série de bibliotecas e frameworksdisponíveis no mercado, além das próprias. Essas bibliotecas devem ser colocadas no CLASSPATH do Servidor de Aplicação. Normalmente criamos um diretório dentro da instância nomeado intellector-lib, distribuído e disponível para download. No JBoss, para que elas fiquem disponíveis, consideramos que a pasta com as bibliotecas estejam em$JBOSS_HOME/server/[instance]/conf/jboss-service.xml, como abaixo  

1
2
3
4
5
6
<!-- Load all jars from the JBOSS_DIST/server/<config>/lib directory. This
  can be restricted to specific jars by specifying them in the archives
  attribute.
 -->
<classpath codebase="${jboss.server.lib.url:lib}" archives="*"/>
<classpath codebase="intellector-lib" archives="*"/>


 

...