Como mover a localização de Atomikos tm.e *.época arquivos?
-
16-09-2020 - |
Pergunta
Estou executando um J2SE aplicativo que usa Atomikos que despeja seus diversos arquivos de log no diretório atual.Eu gostaria de passar a localização destes ficheiros em "/tmp", mas eu não posso localizar uma propriedade de configuração que eu possa definir a partir de dentro da minha Primavera XML do arquivo de configuração.
O Atomikos referências de documentação de um imóvel:
com.atomikos.icatch.output_dir
O que parece exatamente o que eu preciso, mas como conjunto de Primavera-lo sem um jta.propriedades do arquivo?Aqui é o meu gerenciador de transações config:
<bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager">
<property name="transactionManager" ref="atomikosTransactionManager" />
<property name="userTransaction" ref="atomikosUserTransaction" />
</bean>
<bean id="atomikosTransactionManager" class="com.atomikos.icatch.jta.UserTransactionManager"
init-method="init" destroy-method="close">
<!-- When close is called, should we force transactions to terminate? -->
<property name="forceShutdown" value="false" />
</bean>
<bean id="atomikosUserTransaction" class="com.atomikos.icatch.jta.UserTransactionImp">
<!-- Number of seconds before transaction timesout. -->
<property name="transactionTimeout" value="30" />
</bean>
Solução
A propriedade em questão deve ser definida em a instância singleton do transactionService um objeto que normalmente é criado por demanda pelo usuário do gerenciador de transações:
<bean id="userTransactionService" class="com.atomikos.icatch.config.UserTransactionServiceImp"
init-method="init" destroy-method="shutdownForce">
<constructor-arg>
<!-- IMPORTANT: specify all Atomikos properties here -->
<props>
<prop key="com.atomikos.icatch.service">com.atomikos.icatch.standalone.UserTransactionServiceFactory</prop>
<prop key="com.atomikos.icatch.output_dir">target/</prop>
<prop key="com.atomikos.icatch.log_base_dir">target/</prop>
</props>
</constructor-arg>
</bean>
Agora, a propriedade é definida.Mas, a fim de garantir que você não tem duas transação de serviços em execução, você também deve modificar a transação do usuário do gerenciador de bean como segue:
<bean id="atomikosTransactionManager" class="com.atomikos.icatch.jta.UserTransactionManager"
init-method="init" destroy-method="close" depends-on="userTransactionService">
<!-- When close is called, should we force transactions to terminate? -->
<property name="forceShutdown" value="false" />
<!-- Do not create a transaction service as we have specified the bean in this file -->
<property name="startupTransactionService" value="false" />
</bean>