[RESOLVIDO]Spring + Quartz?

4 respostas
T

Pessoal estou com a seguinte duvida… estou tentando criar um temporizador para minha aplicação, onde uma determinada rotina tem que ser executada de madrugada…

estou conseguindo disparar a aplicação normal mas na hora que ela vai conectar com o banco esta dando erro de SQL Exception, indicando logon denied… mas o problema eh q quando executo essa rotina na mao ela funciona normalmente… e a aplicação esta usando o msm metodo para realizar essa rotina…

abaixo segue os metodos juntamente com a configuração e o erro.

se alguem puder dar qualquer ajuda sera mto bem vinda.

stack do erro

02:53:06,524  INFO Log:19 - Importando Dados

java.sql.SQLException: ORA-01017: invalid username/password; logon denied

	at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
	at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289)
	at oracle.jdbc.ttc7.O3log.receive2nd(O3log.java:496)
	at oracle.jdbc.ttc7.TTC7Protocol.logon(TTC7Protocol.java:278)
	at oracle.jdbc.driver.OracleConnection.<init>(OracleConnection.java:346)
	at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.java:468)
	at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:314)
	at org.apache.tomcat.dbcp.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:38)
	at org.apache.tomcat.dbcp.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:294)
	at org.apache.tomcat.dbcp.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:974)
	at org.apache.tomcat.dbcp.dbcp.AbandonedObjectPool.borrowObject(AbandonedObjectPool.java:84)
	at org.apache.tomcat.dbcp.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:96)
	at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:880)
	at portal.model.dao.impl.OSDAOImpl.findListaDetalheOS(OSDAOImpl.java:153)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:287)
	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:165)
	at $Proxy6.findListaDetalheOS(Unknown Source)
	at portal.model.service.impl.PortalServiceImpl.findListaOSImportar(PortalServiceImpl.java:623)
	at portal.model.service.impl.PortalServiceImpl.updateListaOS(PortalServiceImpl.java:332)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:287)
	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:165)
	at $Proxy26.updateListaOS(Unknown Source)
	at portal.model.facade.impl.PortalFacadeImpl.updateListaOS(PortalFacadeImpl.java:113)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:287)
	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:165)
	at $Proxy32.updateListaOS(Unknown Source)
	at portal.task.ImportacaoOrdemEnviadaTask.importar(ImportacaoOrdemEnviadaTask.java:50)
	at portal.task.ImportacaoOrdemEnviadaTask.executeInternal(ImportacaoOrdemEnviadaTask.java:33)
	at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:90)
	at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
	at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:529)
java.lang.RuntimeException: java.sql.SQLException: ORA-01017: invalid username/password; logon denied

configuração do quartz

<!-- Importacao Ordem Enviada -->
	<bean name="importacaoOrdemEnviadaTask" class="org.springframework.scheduling.quartz.JobDetailBean">
		<property name="jobClass" value="portal.task.ImportacaoOrdemEnviadaTask"/>
		<property name="jobDataAsMap">
			<map>
				<entry key="portalFacade">
					<ref bean="portalFacade"/>
				</entry>
			</map>
		</property>
	</bean>
	<bean id="cronTriggerImportacaoOrdemEnviada" class="org.springframework.scheduling.quartz.CronTriggerBean">
		<property name="jobDetail" ref="importacaoOrdemEnviadaTask"/>
		<!-- run every morning at 1:00 AM -->
		<property name="cronExpression" value="0 0 1 ? * * "/>
	</bean>

classe da importação

import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;

import portal.model.facade.PortalFacade;
import portal.util.Constante;
import portal.util.Log;

public class ImportacaoOrdemEnviadaTask extends QuartzJobBean {

    private PortalFacade portalFacade;

    public void setPortalFacade(PortalFacade portalFacade) {
        this.portalFacade = portalFacade;
    }

    @Override
    protected void executeInternal(JobExecutionContext arg0) throws JobExecutionException {

    	importar(Constante.DADOS_BANCOX);
    	
    	importar(Constante.DADOS_BANCOX2);
    	
    	importar(Constante.DADOS_BANCOX3);
    	
        importar(Constante.DADOS_BANCOX4);
    	
    }

    private void importar(String tipoOS) {
        long inicio = 0;
        long fim = 0;

       try {
                inicio = System.currentTimeMillis();
                portalFacade.updateListaOS(tipoOS);
                fim = System.currentTimeMillis();
                Log.info("TEMPO EXEC. IMPORTAR_"+ tipoOS +"(ms): "+(fim-inicio));
                
            } catch (Exception e) {
                Log.info("ERRO NA TAREFA IMPORTAR_"+tipoOS);
                e.printStackTrace();
            }
    }
}

agradeço a todos qualquer ajuda

4 Respostas

devel.andrerocha

Já debugou esse cara pra ver se a sessão ta rolando nesta chamada? Pode ser que esteja faltando o sessionFactory pra esse cara…

T

num ta faltando nao…

vou colocar a configuraçao de conexao aqui com os meu bancos

e testei os logins e senhas no toad e conectou blz…

oq sera q pode estar rolando ?? to sem ideias ja…

<Resource name="jdbc/bancox1"
		              auth="Container"
		              type="javax.sql.DataSource"
		              factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
		              driverClassName="oracle.jdbc.OracleDriver"
		              url="jdbc:oracle:thin:@ip:1521:Bancox1"
		              username="xxxxx"
		              password="xxxx"
		              maxActive="25"
		              maxIdle="25"
		              maxWait="5000"
		              removeAbandonedTimeout="300"
		              logAbandoned="true"
		              removeAbandoned="true" 
		              validationQuery="SELECT * FROM DUAL"
		              testOnBorrow="true" />	


			<Resource name="jdbc/bancoX2"
		              auth="Container"
		              type="javax.sql.DataSource"
		              factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
		              driverClassName="oracle.jdbc.OracleDriver"
		              url="jdbc:oracle:thin:@ip:1521:bancox2"
		              username="xxxxx"
		              password="xxxxx"
		              maxActive="10"
		              maxIdle="10"
		              maxWait="5000"
		              removeAbandonedTimeout="300"
		              logAbandoned="true"
		              removeAbandoned="true" 
		              validationQuery="SELECT * FROM DUAL"
		              testOnBorrow="true" />		              

				 
			<Resource name="jdbc/bancox3"
		              auth="Container"
		              type="javax.sql.DataSource"
		              factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
		              driverClassName="oracle.jdbc.OracleDriver"
		              url="jdbc:oracle:thin:@ip:1521:bancox3"
		              username="xxxxxx"
		              password="xxxxx"
		              maxActive="10"
		              maxIdle="10"
		              maxWait="5000"
		              removeAbandonedTimeout="300"
		              logAbandoned="true"
		              removeAbandoned="true" 
		              validationQuery="SELECT * FROM DUAL"
		              testOnBorrow="true" />	

			
			<Resource name="jdbc/bancox4"
		              auth="Container"
		              type="javax.sql.DataSource"
		              factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
		              driverClassName="oracle.jdbc.OracleDriver"
		              url="jdbc:oracle:thin:@ip:1528:bancox4"
		              username="xxxx"
		              password="xxxxx"
		              maxActive="10"
		              maxIdle="10"
		              maxWait="5000"
		              removeAbandonedTimeout="300"
		              logAbandoned="true"
		              removeAbandoned="true" 
		              validationQuery="SELECT * FROM DUAL"
		              testOnBorrow="true" />
fantomas
Até onde estou entendendo, o problema é com o usuário ou a senha.

Acredito que esteja acontecendo o seguinte:

Quando vc executa "na mão" vc está informando um usuário válido/senha (bem conhecido por você), mas quando a execução ocorre no horário programado deve estar sendo informado um outro usuário/senha provavelmente vindo de um arquivo de configuração xml ou properties.

Dê uma vasculhada nas configurações para confirmar.

Um Java abraço a todos.

Até onde estou entendendo, o problema é com o usuário ou a senha.

Acredito que esteja acontecendo o seguinte:

Quando vc executa “na mão” vc está informando um usuário válido/senha (bem conhecido por você), mas quando a execução ocorre no horário programado deve estar sendo informado um outro usuário/senha provavelmente vindo de um arquivo de configuração xml ou properties.

Dê uma vasculhada nas configurações para confirmar.

Um Java abraço a todos.

T

Pessoal,

consegui resolver o problema.

estava faltando a configurar os no context.xml do tomcat como informa essa doc.

http://tomcat.apache.org/tomcat-5.5-doc/jndi-resources-howto.html

agradeço a todos pela ajuda!

Criado 30 de dezembro de 2008
Ultima resposta 2 de jan. de 2009
Respostas 4
Participantes 3