RESOLVIDO LTW no Tomcat com Spring

Boa tarde a todos!

Gostaria de pedir a ajuda de vocês na configuração do Spring para usar aspectos em LTW(load time weaving).... já tentei de quase tudo e não consegui.....

Após colocar o jar org.springframework.instrument.tomcat-3.1.0.M2.jar na lib do Tomcat e deixar o server.xml do Tomcat conforme abaixo:

      <Context docBase="Inventario" path="/Inventario" reloadable="true" source="org.eclipse.jst.jee.server:Inventario">
      		<Loader loaderClass="org.springframework.instrument.classloading.tomcat.TomcatInstrumentableClassLoader" useSystemClassLoaderAsParent="false"/>
      </Context>

Não funcionou, então tentei colocar no diretório META-INF/context.xml a mesma configuração acima e não funcionou… criei também o arquivo aop.xml e coloquei dentro do diretório META-INF e também não funcionou…

Segue abaixo o meu arquivo de configuração do Spring

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
http://www.springframework.org/schema/aop 
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">


	<context:annotation-config />
	<context:load-time-weaver/>
	<aop:aspectj-autoproxy/>
	<tx:annotation-driven proxy-target-class="true" transaction-manager="transactionManager"/>
  	<context:component-scan base-package="edu.fatec.zl.dao" />  	
  	<context:component-scan base-package="edu.fatec.zl.service" />
  	<context:component-scan base-package="edu.fatec.zl.bean" />
	<context:component-scan base-package="edu.fatec.zl.aspect" />
	<context:component-scan base-package="edu.fatec.zl.util" />

	<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
		<property name="persistenceUnitName" value="tcc" />
	</bean>
	
	<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
		<property name="entityManagerFactory" ref="entityManagerFactory"/>
	</bean>
</beans>

Desde já muito obrigado a todos !

oi,

Já viu este tutorial ??

O seu Bean tem que ter uma anotação, e a configuração do spring diverge um pouco da sua tb.

Espero que ajude

abs

Fala ae André blz ??

Então, diverge sim, mas o principal que é o LTW era pra funcionar… neste exemplo do noso amigo que deve ser indiano, não tem nehum Bean que esteja anotado com @AspectJ, uma das coisas que eu estou achando estranho é que eu coloco o context.xml dentro do META-INF e o Tomcat reclama, dizendo que não achou o Transformer, já quando eu altero o server.xml do Tomcat ele sobe de boa, porém o Aspecto não é chamado…

Segue abaixo o meu bean…

@Aspect
@Component
public class LoggingInterceptor {

	Logger logger = Logger.getLogger(GenericDao.class);

	@Pointcut("execution(@org.springframework.transaction.annotation.Transactional * *(..) )")
	public void transactionalMethod() {}

	@AfterThrowing(pointcut="transactionalMethod()",throwing="ex")
	public void logError(Throwable ex) throws Throwable {
		logger.error(ex.getMessage());
		throw ex;
	}
}

oi,

Você criou o arquivo de configuração do AspectJ tb? Que erro aparece no log do Tomcat??

Carinha, obrigado pela ajuda, coloquei o arquivo aop.xml e comentei o trecho de gerenciamento de transações do Spring, agora a minha app esta LTW \o/\o/\o/ . Vou ver mais detalhes e fazer um passo a passo sobre como subir o Spring com AspectJ em Load Time Weaving, ainda sobraram algumas dúvidas do tipo porque as transações não funcionam com o aspecto, alias, as transações funcionam quem não funciona é o Aspecto.

Ahhhhhhhhhhhhhhhh… esqueci de citar, o essencial, faltava o context:load-time-weaver/ no Spring e eu atualizei as libs do AspectJ

Segue abaixo o treho que eu tive que colocar dentro de src/META-INF/aop.xml

<!DOCTYPE aspectj PUBLIC    
  "-//AspectJ//DTD//EN"    "http://www.eclipse.org/aspectj/dtd/aspectj.dtd">

<aspectj>
	<aspects>
		<include within="edu.fatec.zl.aspect" />
	</aspects>
</aspectj>

Se alguém passar por este problema da transação citado acima, eu resolvi, anotei a classe com @Transactional