I am trying a simple logging interceptor for a bean which extends HibernateDaoSupport..When i try to do getBean and cast it to my bean, i get java.lang.ClassCastException: $Proxy4..
if i remove extends from HibernateDaoSupport, aspect with BeanNameAutoProxyCreator works fine and if remove BeanNameAutoProxyCreator aspect, just the dao and hibernate works fine..it only fails if i extend hibernatedaosupport and apply beannameautoproxy aspect..
1)below is my java file
2)below is my spring configCode:package springex; import net.sf.hibernate.SessionFactory; /** * @author administrator * * TODO To change the template for this generated type comment go to * Window - Preferences - Java - Code Style - Code Templates */ public class AdderImpl extends org.springframework.orm.hibernate3.support.HibernateDaoSupport { //private SessionFactory sessionFactory; public int add(int arg0, int arg1) { return arg0 + arg1; } public void add(){ } }
3)below is my class that invokes..Code:<beans> <bean id="appDataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName"><value>COM.ibm.db2.jdbc.app.DB2Driver</value></property> <property name="url"><value>jdbc:db2:dbname</value></property> <property name="username"><value>userid</value></property> <property name="password"><value>password</value></property> </bean> <bean id="appHibernateProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean"> <property name="properties"> <props> <prop key="hibernate.hbm2ddl.auto">update</prop> <prop key="hibernate.dialect">org.hibernate.dialect.DB2Dialect</prop> <prop key="hibernate.query.substitutions">true 'T', false 'F'</prop> <prop key="hibernate.show_sql">true</prop> <prop key="hibernate.c3p0.minPoolSize">5</prop> <prop key="hibernate.c3p0.maxPoolSize">20</prop> <prop key="hibernate.c3p0.timeout">600</prop> <prop key="hibernate.c3p0.max_statement">50</prop> <prop key="hibernate.c3p0.testConnectionOnCheckout">false</prop> </props> </property> </bean> <bean id="appSessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource"><ref local="appDataSource"/></property> <property name="hibernateProperties"> <ref bean="appHibernateProperties" /> </property> <property name="mappingResources"> <list> <value>Mapping.hbm.xml</value> </list> </property> </bean> <bean id="Adder1" class="springex.AdderImpl"> <property name="sessionFactory"><ref local="appSessionFactory"/></property> </bean> <bean id="loggingInterceptor" class="springex.LoggingInterceptor"/> <bean id="loggingProxy" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator"> <property name="beanNames"> <list> <value>*</value> </list> </property> <property name="interceptorNames"> <list> <value>loggingInterceptor</value> </list> </property> </bean>
4)below is my classpathCode:public static void main(String[] args) { ClassPathXmlApplicationContext appContext = new ClassPathXmlApplicationContext(new String[] { "springbeans.xml" }); System.out.println ("class :: " + appContext.getBean("Adder1")); AdderImpl a = (AdderImpl) appContext.getBean("Adder1"); System.out.println("result = " + a.add(4, 7)); }
Code:db2java.zip; commons-dbcp.jar; commons-pool.jar; db-ojb-1.0.4.jar; hibernate2.jar; spring.jar; (1.2.8) spring-aop.jar; commons-logging-api.jar; jta.jar; dom4j-1.5.2.jar; commons-collections-3.0.jar; ehcache-1.1.jar; hibernate3.jar; cglib-nodep-2.1_3.jar


Reply With Quote
