You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@wicket.apache.org by Bruce McGuire <br...@coastware.com> on 2009/06/16 21:26:10 UTC

DAO not getting injected, using springbean

Hello.

I have created a new small project to try to figure out how to use the 
SpringBean, Service, and Repository annotations with Wicket, Spring, 
Hibernate, Maven and Eclipse.

However, I am getting an error with a user DAO that I have created.

I have a service that is using the dao tagged as @Service, I have the 
DAO in the service tagged with @SpringBean, and the DAO code itself is 
tagged with @Repository.  The service that is using the DAO is getting 
found correctly.

When I have the InjectorHolder code in the dao constructor, I get an 
error that says 'InjectorHolder has not been assigned an injector'

When I comment out the InjectorHolder line in the dao constructor, the 
DAO is null, and getUserDAO throws an exception.

Since I am not certain that I can attach files, I will insert the 
relevant code and exceptions into this email.

Any pointers you can give would be greatly appreciated.

Thanks very very much,

Bruce.

UserServiceImpl
=========================
@Service("UserService")
public class UserServiceImpl implements UserService
{
    @SpringBean
    UserDAO userDAO ;

    private UserDAO getUserDAO()
    {
        if (null == userDAO)
        {
            throw new RuntimeException("userDAO is null") ;
        }

        return(userDAO) ;
    }

    @Override
    public List<User> getUsers()
    {
        return (getUserDAO().findAll());
    }
=========================

UserDAOHibernate
=========================
@Repository("UserDAO")
public class UserDAOHibernate extends GenericDAOHibernate<User, String> 
implements UserDAO
{
    private static Log log = LogFactory.getLog("UserDAOHibernate");

    public UserDAOHibernate()
    {
        InjectorHolder.getInjector().inject(this);
    }

...
=========================

HomePage
=========================
public class HomePage extends WebPage
{
    @SpringBean
    private UserService userService ;

    public HomePage(final PageParameters parameters)
    {
        super (parameters) ;

        List<User> userList = userService.getUsers() ;

        RepeatingView rv = new RepeatingView("Users") ;
        for(User user: userList)
        {
            Label userName = new Label("username", user.getUsername()) ;
            rv.add(userName) ;
        }

        this.add(rv) ;
    }
}
=========================

CoastwareApplication
=========================
public class CoastwareApplication extends WebApplication
{
    private ApplicationContext ctx;

    @SpringBean
    private UserService userService ;

    protected static Log log = 
LogFactory.getLog(CoastwareApplication.class) ;

    private static ISpringContextLocator CTX_LOCATOR = new 
ISpringContextLocator()
    {
        public ApplicationContext getSpringContext()
        {
            return(CoastwareApplication.get().ctx) ;
        }
    } ;

    public CoastwareApplication()
    {
    }

    public void init()
    {
        ctx = new ClassPathXmlApplicationContext("appContext.xml") ;

        addComponentInstantiationListener(new 
SpringComponentInjector(this));

        super.init() ;
    }

    @Override
    public Session newSession(Request request, Response response)
    {
        return (new WebSession(request)) ;
    }

    public static CoastwareApplication get()
    {
        return ((CoastwareApplication) Application.get()) ;
    }

    private <T> T createProxy(Class<T> clazz)
    {
        return ((T) LazyInitProxyFactory.createProxy(clazz, new 
SpringBeanLocator(clazz, CTX_LOCATOR))) ;
    }

    public Class<HomePage> getHomePage()
    {
        return HomePage.class;
    }

    public UserService getUserService()
    {
        if (null == userService)
        {
            userService = createProxy(UserService.class) ;
        }
        return userService;
    }
}
=========================


Web.xml
=========================
    <display-name>vProbe</display-name>

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:appContext.xml</param-value>
    </context-param>

    <context-param>
        <param-name>configuration</param-name>
        <param-value>development</param-value>
    </context-param>

    <listener>
        <listener-class>
            org.springframework.web.context.ContextLoaderListener
        </listener-class>
    </listener>

    <filter>
        <filter-name>wicketFilter</filter-name>
         
<filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class>
        <init-param>
            <param-name>applicationClassName</param-name>
            
<param-value>com.coastware.vProbe.CoastwareApplication</param-value>
         </init-param>
    </filter>

    <filter>
        <filter-name>opensessioninview</filter-name>
        
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>wicketFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <filter-mapping>
        <filter-name>opensessioninview</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
=========================

appContext.xml
=========================
<?xml version="1.0" encoding="UTF-8"?>
<beans
    default-autowire="autodetect"
    xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
        http://www.springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
        http://www.springframework.org/schema/context
        
http://www.springframework.org/schema/context/spring-context-2.5.xsd">

    <bean id="dataSource" 
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="url" value="jdbc:mysql://192.168.15.128/vprobe"/>
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="username" value="vProbe"/>
        <property name="password" value="vProbe"/>
    </bean>

    <bean id="sessionFactory" 
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>

        <property name="packagesToScan">
            <list>
                <value>com.coastware.vProbe.model</value>
            </list>
        </property>

        <property name="hibernateProperties">
            <props>
                <prop 
key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hibernate.format_sql">true</prop>
                <prop key="hibernate.use_sql_comments">true</prop>
            </props>
        </property>
    </bean>

    <context:component-scan base-package="com.coastware" />

    <bean id="openSessionInViewInterceptor" 
class="org.springframework.orm.hibernate3.support.OpenSessionInViewInterceptor">
        <property name="sessionFactory">
            <ref bean="sessionFactory"/>
        </property>
    </bean>

    <bean id="transactionManager" 
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="sessionFactory">
            <ref bean="sessionFactory"/>
        </property>
    </bean>

    <bean id="hibernateTemplate" 
class="org.springframework.orm.hibernate3.HibernateTemplate">
        <property name="sessionFactory">
            <ref bean="sessionFactory"/>
        </property>
    </bean>

    <tx:annotation-driven transaction-manager="transactionManager"/>

    <bean 
class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"/>

    <bean 
class="org.springframework.transaction.interceptor.TransactionAttributeSourceAdvisor">
        <property name="transactionInterceptor" ref="txInterceptor"/>
    </bean>

    <bean id="txInterceptor" 
class="org.springframework.transaction.interceptor.TransactionInterceptor">
        <property name="transactionManager" ref="transactionManager"/>
        <property name="transactionAttributeSource">
            <bean 
class="org.springframework.transaction.annotation.AnnotationTransactionAttributeSource"/>
        </property>
    </bean>
</beans>
=========================


Error with InjectorHolder line
=========================
SEVERE: Exception sending context initialized event to listener instance 
of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.BeanCreationException: Error creating 
bean with name 'UserDAO' defined in file [C:\Program Files\Apache 
Software Foundation\Tomcat 
6.0\webapps\vProbe\WEB-INF\classes\com\coastware\vProbe\model\dao\hibernate\UserDAOHibernate.class]: 
Instantiation of bean failed; nested exception is 
org.springframework.beans.BeanInstantiationException: Could not 
instantiate bean class 
[com.coastware.vProbe.model.dao.hibernate.UserDAOHibernate]: Constructor 
threw exception; nested exception is java.lang.IllegalStateException: 
InjectorHolder has not been assigned an injector. Use 
InjectorHolder.setInjector() to assign an injector. In most cases this 
should be done once inside SpringWebApplication subclass's init() method.
    at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:883)
    at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:839)
    at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:440)
    at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
    at java.security.AccessController.doPrivileged(Native Method)
    at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
    at 
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
    at 
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
    at 
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
    at 
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
    at 
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
    at 
org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429)
    at 
org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728)
    at 
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380)
    at 
org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255)
    at 
org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199)
    at 
org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45)
    at 
org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3843)
    at 
org.apache.catalina.core.StandardContext.start(StandardContext.java:4342)
    at 
org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
    at 
org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:830)
    at 
org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:719)
    at 
org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:490)
    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1149)
    at 
org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
    at 
org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
    at 
org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
    at 
org.apache.catalina.core.StandardService.start(StandardService.java:516)
    at 
org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:578)
    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.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
Caused by: org.springframework.beans.BeanInstantiationException: Could 
not instantiate bean class 
[com.coastware.vProbe.model.dao.hibernate.UserDAOHibernate]: Constructor 
threw exception; nested exception is java.lang.IllegalStateException: 
InjectorHolder has not been assigned an injector. Use 
InjectorHolder.setInjector() to assign an injector. In most cases this 
should be done once inside SpringWebApplication subclass's init() method.
    at 
org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:115)
    at 
org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:61)
    at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:877)
    ... 40 more
Caused by: java.lang.IllegalStateException: InjectorHolder has not been 
assigned an injector. Use InjectorHolder.setInjector() to assign an 
injector. In most cases this should be done once inside 
SpringWebApplication subclass's init() method.
    at 
org.apache.wicket.injection.web.InjectorHolder.getInjector(InjectorHolder.java:64)
    at 
com.coastware.vProbe.model.dao.hibernate.UserDAOHibernate.<init>(UserDAOHibernate.java:26)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown 
Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at 
org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:100)
    ... 42 more
=========================

Error when InjectorHolder line is commented out.
=========================

java.lang.RuntimeException: userDAO is null at 
com.coastware.vProbe.service.UserServiceImpl.getUserDAO(UserServiceImpl.java:90) 
at 
com.coastware.vProbe.service.UserServiceImpl.getUsers(UserServiceImpl.java:68) 
at java.lang.reflect.Method.invoke(Unknown Source) at 
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307) 
at 
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:198) 
at $Proxy15.getUsers(Unknown Source) at 
java.lang.reflect.Method.invoke(Unknown Source) at 
org.apache.wicket.proxy.LazyInitProxyFactory$JdkHandler.invoke(LazyInitProxyFactory.java:416) 
at org.apache.wicket.proxy.$Proxy16.getUsers(Unknown Source) at 
com.coastware.vProbe.HomePage.<init>(HomePage.java:27) at 
java.lang.reflect.Constructor.newInstance(Unknown Source) at 
org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:147) 
at 
org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:66) 
at 
org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.newPage(BookmarkablePageRequestTarget.java:272) 
at 
org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.getPage(BookmarkablePageRequestTarget.java:293) 
at 
org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.processEvents(BookmarkablePageRequestTarget.java:210) 
at 
org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:91) 
at 
org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1220) 
at org.apache.wicket.RequestCycle.step(RequestCycle.java:1297) at 
org.apache.wicket.RequestCycle.steps(RequestCycle.java:1399) at 
org.apache.wicket.RequestCycle.request(RequestCycle.java:529) at 
org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:356) 
at 
org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:201) 
at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 
at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 
at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) 
at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286) 
at 
org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:857) 
at 
org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:565) 
at 
org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1509) 
at java.lang.Thread.run(Unknown Source)

Complete stack:

org.apache.wicket.WicketRuntimeException: Can't instantiate page using 
constructor public 
com.coastware.vProbe.HomePage(org.apache.wicket.PageParameters) and 
argument at 
org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:168) 
at 
org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:66) 
at 
org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.newPage(BookmarkablePageRequestTarget.java:272) 
at 
org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.getPage(BookmarkablePageRequestTarget.java:293) 
at 
org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.processEvents(BookmarkablePageRequestTarget.java:210) 
at 
org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:91) 
at 
org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1220) 
at org.apache.wicket.RequestCycle.step(RequestCycle.java:1297) at 
org.apache.wicket.RequestCycle.steps(RequestCycle.java:1399) at 
org.apache.wicket.RequestCycle.request(RequestCycle.java:529) at 
org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:356)

java.lang.reflect.InvocationTargetException at 
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at 
sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at 
java.lang.reflect.Constructor.newInstance(Unknown Source) at 
org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:147) 
at 
org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:66) 
at 
org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.newPage(BookmarkablePageRequestTarget.java:272) 
at 
org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.getPage(BookmarkablePageRequestTarget.java:293) 
at 
org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.processEvents(BookmarkablePageRequestTarget.java:210) 
at 
org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:91) 
at 
org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1220) 
at org.apache.wicket.RequestCycle.step(RequestCycle.java:1297) at 
org.apache.wicket.RequestCycle.steps(RequestCycle.java:1399) at 
org.apache.wicket.RequestCycle.request(RequestCycle.java:529) at 
org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:356)

=========================


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org


Re: Re: Re: Re: Re: DAO not getting injected, using springbean

Posted by Bruce McGuire <br...@coastware.com>.
Hi James.

It turns out that I had 'userDAO' in one spot, and 'UserDAO' in another. 
Problem solved.

Thanks,

Bruce.

James Carman wrote:
> Did you mark UserDAOHibernate with the @Repository annotation?
>
> 2009/6/16 Bruce McGuire <br...@coastware.com>:
>   
>> Hi Vasu.
>>
>> Thanks for the info. Now I get it, and have successfully wired my demo app
>> so that it does the job.
>>
>> Although I did notice that along with the context:component-scan I did need
>> to define the beans that I was going to autowire. How did you get around
>> this?
>>
>>   <context:component-scan base-package=om.coastware" />
>>   <bean id=serDAO"
>> class=om.coastware.vProbe.model.dao.hibernate.UserDAOHibernate" />
>>
>> Other than that, this is a very much reduced context file.
>>
>> Now I need to duplicate this in my real application.
>>
>> Thanks for everyone's help.
>>
>> Bruce McGuire.
>>
>> Vasu Srinivasan wrote:
>>     
>>> Using annotations, I have only one line in the spring's
>>> applicationContext.xml --
>>>
>>> <context:component-scan base-package=ackagename" />
>>>
>>> Services are tagged with @Service, Daos are tagged with
>>> @Component("xxxDaoImpl"), Wicket web pages have @SpringBean
>>> (name=serviceName>")
>>>
>>> Within the ServiceImpl, the Daos are tagged with @Autowired.
>>>
>>> No other xml config, setter, getter for daos etc.
>>>
>>> Works like a charm.
>>>
>>> 2009/6/16 James Carman <jc...@carmanconsulting.com>
>>>
>>>
>>>       
>>>> You are correct.  You should only use @SpringBean in your wicket-related
>>>> code (components/pages).  Let Spring wire the rest together, however you
>>>> want to configure it to do that (with annotations or xml).  You can use
>>>> @Autowired to inject your DAOs into your Services.  You just have to make
>>>> sure you set up your Spring context so that it takes care of that.
>>>>
>>>> On Tue, Jun 16, 2009 at 4:36 PM, Bruce McGuire <br...@coastware.com>
>>>> wrote:
>>>>
>>>>
>>>>         
>>>>> Hello James.
>>>>>
>>>>> So I have completely missed the point of the Repository, Service and
>>>>> SpringBean annotations?  I was under the impression that the idea was to
>>>>> avoid using a lot of xml in my context files.
>>>>>
>>>>> If I am understanding correctly, what you and Martijn are saying is the
>>>>> following:
>>>>> Tag the dao and service classes with Repository and Service, and in
>>>>>
>>>>>           
>>>> wicket
>>>>
>>>>         
>>>>> code, tag any use of them with SpringBean. However, in the service
>>>>>
>>>>>           
>>>> classes,
>>>>
>>>>         
>>>>> use the normal xml injection method and get/set to get the dao into the
>>>>> service class.
>>>>>
>>>>> Is this a correct interpretation?
>>>>>
>>>>> Thanks,
>>>>>
>>>>> Bruce.
>>>>>
>>>>> James Carman wrote:
>>>>>
>>>>>
>>>>>           
>>>>>> You shouldn't use @SpringBean in your spring-managed beans, only in
>>>>>> your Wicket code.  You don't want view-specific code in your "domain"
>>>>>> code.
>>>>>>
>>>>>> On Tue, Jun 16, 2009 at 4:17 PM, Bruce McGuire <br...@coastware.com>
>>>>>> wrote:
>>>>>>
>>>>>>
>>>>>>
>>>>>>             
>>>>>>> Hi Martijn.
>>>>>>>
>>>>>>> Thanks for the quick response.
>>>>>>>
>>>>>>> Are you saying that the dao and the service should have the
>>>>>>> InjectorHolder code, rather than the @Repository and @Service tags?
>>>>>>>
>>>>>>> Bruce.
>>>>>>>
>>>>>>> Martijn Dashorst wrote:
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>               
>>>>>>>> @SpringBean only works with Components. For all other uses you should
>>>>>>>> either call InjectorHolder.getInjector().inject(this) in your
>>>>>>>> constructor or use Salve.
>>>>>>>>
>>>>>>>> Martijn
>>>>>>>>
>>>>>>>> On Tue, Jun 16, 2009 at 9:26 PM, Bruce McGuire<br...@coastware.com>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>                 
>>>>>>>>> Hello.
>>>>>>>>>
>>>>>>>>> I have created a new small project to try to figure out how to use
>>>>>>>>>
>>>>>>>>>                   
>>>> the
>>>>
>>>>         
>>>>>>>>> SpringBean, Service, and Repository annotations with Wicket, Spring,
>>>>>>>>> Hibernate, Maven and Eclipse.
>>>>>>>>>
>>>>>>>>> However, I am getting an error with a user DAO that I have created.
>>>>>>>>>
>>>>>>>>> I have a service that is using the dao tagged as @Service, I have
>>>>>>>>> the
>>>>>>>>> DAO in
>>>>>>>>> the service tagged with @SpringBean, and the DAO code itself is
>>>>>>>>>
>>>>>>>>>                   
>>>> tagged
>>>>
>>>>         
>>>>>>>>> with
>>>>>>>>> @Repository.  The service that is using the DAO is getting found
>>>>>>>>> correctly.
>>>>>>>>>
>>>>>>>>> When I have the InjectorHolder code in the dao constructor, I get an
>>>>>>>>> error
>>>>>>>>> that says 'InjectorHolder has not been assigned an injector'
>>>>>>>>>
>>>>>>>>> When I comment out the InjectorHolder line in the dao constructor,
>>>>>>>>>
>>>>>>>>>                   
>>>> the
>>>>
>>>>         
>>>>>>>>> DAO
>>>>>>>>> is null, and getUserDAO throws an exception.
>>>>>>>>>
>>>>>>>>> Since I am not certain that I can attach files, I will insert the
>>>>>>>>> relevant
>>>>>>>>> code and exceptions into this email.
>>>>>>>>>
>>>>>>>>> Any pointers you can give would be greatly appreciated.
>>>>>>>>>
>>>>>>>>> Thanks very very much,
>>>>>>>>>
>>>>>>>>> Bruce.
>>>>>>>>>
>>>>>>>>> UserServiceImpl
>>>>>>>>> ==================> @Service("UserService")
>>>>>>>>> public class UserServiceImpl implements UserService
>>>>>>>>> {
>>>>>>>>>  @SpringBean
>>>>>>>>>  UserDAO userDAO ;
>>>>>>>>>
>>>>>>>>>  private UserDAO getUserDAO()
>>>>>>>>>  {
>>>>>>>>>    if (null =DAO)
>>>>>>>>>    {
>>>>>>>>>        throw new RuntimeException("userDAO is null") ;
>>>>>>>>>    }
>>>>>>>>>
>>>>>>>>>    return(userDAO) ;
>>>>>>>>>  }
>>>>>>>>>
>>>>>>>>>  @Override
>>>>>>>>>  public List<User> getUsers()
>>>>>>>>>  {
>>>>>>>>>    return (getUserDAO().findAll());
>>>>>>>>>  }
>>>>>>>>> ==================>
>>>>>>>>> UserDAOHibernate
>>>>>>>>> ==================> @Repository("UserDAO")
>>>>>>>>> public class UserDAOHibernate extends GenericDAOHibernate<User,
>>>>>>>>>
>>>>>>>>>                   
>>>> String>
>>>>
>>>>         
>>>>>>>>> implements UserDAO
>>>>>>>>> {
>>>>>>>>>  private static Log log úctory.getLog("UserDAOHibernate");
>>>>>>>>>
>>>>>>>>>  public UserDAOHibernate()
>>>>>>>>>  {
>>>>>>>>>    InjectorHolder.getInjector().inject(this);
>>>>>>>>>  }
>>>>>>>>>
>>>>>>>>> ...
>>>>>>>>> ==================>
>>>>>>>>> HomePage
>>>>>>>>> ==================> public class HomePage extends WebPage
>>>>>>>>> {
>>>>>>>>>  @SpringBean
>>>>>>>>>  private UserService userService ;
>>>>>>>>>
>>>>>>>>>  public HomePage(final PageParameters parameters)
>>>>>>>>>  {
>>>>>>>>>    super (parameters) ;
>>>>>>>>>
>>>>>>>>>    List<User> userList =ervice.getUsers() ;
>>>>>>>>>
>>>>>>>>>    RepeatingView rv =epeatingView("Users") ;
>>>>>>>>>    for(User user: userList)
>>>>>>>>>    {
>>>>>>>>>        Label userName =abel("username", user.getUsername()) ;
>>>>>>>>>        rv.add(userName) ;
>>>>>>>>>    }
>>>>>>>>>
>>>>>>>>>    this.add(rv) ;
>>>>>>>>>  }
>>>>>>>>> }
>>>>>>>>> ==================>
>>>>>>>>> CoastwareApplication
>>>>>>>>> ==================> public class CoastwareApplication extends
>>>>>>>>> WebApplication
>>>>>>>>> {
>>>>>>>>>  private ApplicationContext ctx;
>>>>>>>>>
>>>>>>>>>  @SpringBean
>>>>>>>>>  private UserService userService ;
>>>>>>>>>
>>>>>>>>>  protected static Log log
>>>>>>>>> úctory.getLog(CoastwareApplication.class)
>>>>>>>>>
>>>>>>>>>                   
>>>> ;
>>>>
>>>>         
>>>>>>>>>  private static ISpringContextLocator CTX_LOCATOR >>>>>>>> ISpringContextLocator()
>>>>>>>>>  {
>>>>>>>>>    public ApplicationContext getSpringContext()
>>>>>>>>>    {
>>>>>>>>>        return(CoastwareApplication.get().ctx) ;
>>>>>>>>>    }
>>>>>>>>>  } ;
>>>>>>>>>
>>>>>>>>>  public CoastwareApplication()
>>>>>>>>>  {
>>>>>>>>>  }
>>>>>>>>>
>>>>>>>>>  public void init()
>>>>>>>>>  {
>>>>>>>>>    ctx =lassPathXmlApplicationContext("appContext.xml") ;
>>>>>>>>>
>>>>>>>>>    addComponentInstantiationListener(new
>>>>>>>>> SpringComponentInjector(this));
>>>>>>>>>
>>>>>>>>>    super.init() ;
>>>>>>>>>  }
>>>>>>>>>
>>>>>>>>>  @Override
>>>>>>>>>  public Session newSession(Request request, Response response)
>>>>>>>>>  {
>>>>>>>>>    return (new WebSession(request)) ;
>>>>>>>>>  }
>>>>>>>>>
>>>>>>>>>  public static CoastwareApplication get()
>>>>>>>>>  {
>>>>>>>>>    return ((CoastwareApplication) Application.get()) ;
>>>>>>>>>  }
>>>>>>>>>
>>>>>>>>>  private <T> T createProxy(Class<T> clazz)
>>>>>>>>>  {
>>>>>>>>>    return ((T) LazyInitProxyFactory.createProxy(clazz, new
>>>>>>>>> SpringBeanLocator(clazz, CTX_LOCATOR))) ;
>>>>>>>>>  }
>>>>>>>>>
>>>>>>>>>  public Class<HomePage> getHomePage()
>>>>>>>>>  {
>>>>>>>>>    return HomePage.class;
>>>>>>>>>  }
>>>>>>>>>
>>>>>>>>>  public UserService getUserService()
>>>>>>>>>  {
>>>>>>>>>    if (null =Service)
>>>>>>>>>    {
>>>>>>>>>        userService =eProxy(UserService.class) ;
>>>>>>>>>
>>>>>>>>>    }
>>>>>>>>>    return userService;
>>>>>>>>>  }
>>>>>>>>> }
>>>>>>>>> ==================>
>>>>>>>>>
>>>>>>>>> Web.xml
>>>>>>>>> ==================>   <display-name>vProbe</display-name>
>>>>>>>>>
>>>>>>>>>  <context-param>
>>>>>>>>>    <param-name>contextConfigLocation</param-name>
>>>>>>>>>    <param-value>classpath:appContext.xml</param-value>
>>>>>>>>>  </context-param>
>>>>>>>>>
>>>>>>>>>  <context-param>
>>>>>>>>>    <param-name>configuration</param-name>
>>>>>>>>>    <param-value>development</param-value>
>>>>>>>>>  </context-param>
>>>>>>>>>
>>>>>>>>>  <listener>
>>>>>>>>>    <listener-class>
>>>>>>>>>        org.springframework.web.context.ContextLoaderListener
>>>>>>>>>    </listener-class>
>>>>>>>>>  </listener>
>>>>>>>>>
>>>>>>>>>  <filter>
>>>>>>>>>    <filter-name>wicketFilter</filter-name>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>>  <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class>
>>>>
>>>>         
>>>>>>>>>    <init-param>
>>>>>>>>>        <param-name>applicationClassName</param-name>
>>>>>>>>>
>>>>>>>>> <param-value>com.coastware.vProbe.CoastwareApplication</param-value>
>>>>>>>>>     </init-param>
>>>>>>>>>  </filter>
>>>>>>>>>
>>>>>>>>>  <filter>
>>>>>>>>>    <filter-name>opensessioninview</filter-name>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
>>>>
>>>>         
>>>>>>>>>  </filter>
>>>>>>>>>
>>>>>>>>>  <filter-mapping>
>>>>>>>>>    <filter-name>wicketFilter</filter-name>
>>>>>>>>>    <url-pattern>/*</url-pattern>
>>>>>>>>>  </filter-mapping>
>>>>>>>>>
>>>>>>>>>  <filter-mapping>
>>>>>>>>>    <filter-name>opensessioninview</filter-name>
>>>>>>>>>    <url-pattern>/*</url-pattern>
>>>>>>>>>  </filter-mapping>
>>>>>>>>> ==================>
>>>>>>>>> appContext.xml
>>>>>>>>> ==================> <?xml version="1.0" encoding="UTF-8"?>
>>>>>>>>> <beans
>>>>>>>>>  default-autowire=etect"
>>>>>>>>>  xmlns=//www.springframework.org/schema/beans"
>>>>>>>>>  xmlns:xsi=//www.w3.org/2001/XMLSchema-instance"
>>>>>>>>>  xmlns:aop=//www.springframework.org/schema/aop"
>>>>>>>>>  xmlns:tx=//www.springframework.org/schema/tx"
>>>>>>>>>  xmlns:context=//www.springframework.org/schema/context"
>>>>>>>>>  xsi:schemaLocation>>>
>>>>>>>>> http://www.springframework.org/schema/beans
>>>>>>>>>    http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
>>>>>>>>>    http://www.springframework.org/schema/aop
>>>>>>>>>    http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
>>>>>>>>>    http://www.springframework.org/schema/tx
>>>>>>>>>    http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
>>>>>>>>>    http://www.springframework.org/schema/context
>>>>>>>>>
>>>>>>>>> http://www.springframework.org/schema/context/spring-context-2.5.xsd
>>>>>>>>>
>>>>>>>>>                   
>>>> ">
>>>>
>>>>         
>>>>>>>>>  <bean id=ource"
>>>>>>>>> class=pringframework.jdbc.datasource.DriverManagerDataSource">
>>>>>>>>>    <property name=value="jdbc:mysql://192.168.15.128/vprobe"/>
>>>>>>>>>    <property name=rClassName" value="com.mysql.jdbc.Driver"/>
>>>>>>>>>    <property name=ame" value="vProbe"/>
>>>>>>>>>    <property name=ord" value="vProbe"/>
>>>>>>>>>  </bean>
>>>>>>>>>
>>>>>>>>>  <bean id=onFactory"
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> class=pringframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
>>>>
>>>>         
>>>>>>>>>    <property name=ource" ref="dataSource"/>
>>>>>>>>>
>>>>>>>>>    <property nameZ'kagesToScan">
>>>>>>>>>        <list>
>>>>>>>>>            <value>com.coastware.vProbe.model</value>
>>>>>>>>>        </list>
>>>>>>>>>    </property>
>>>>>>>>>
>>>>>>>>>    <property name=nateProperties">
>>>>>>>>>        <props>
>>>>>>>>>            <prop
>>>>>>>>> key=nate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
>>>>>>>>>            <prop key=nate.show_sql">true</prop>
>>>>>>>>>            <prop key=nate.format_sql">true</prop>
>>>>>>>>>            <prop key=nate.use_sql_comments">true</prop>
>>>>>>>>>        </props>
>>>>>>>>>    </property>
>>>>>>>>>  </bean>
>>>>>>>>>
>>>>>>>>>  <context:component-scan base-package=oastware" />
>>>>>>>>>
>>>>>>>>>  <bean id=essionInViewInterceptor"
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> class=pringframework.orm.hibernate3.support.OpenSessionInViewInterceptor">
>>>>
>>>>         
>>>>>>>>>    <property name=onFactory">
>>>>>>>>>        <ref bean=onFactory"/>
>>>>>>>>>    </property>
>>>>>>>>>  </bean>
>>>>>>>>>
>>>>>>>>>  <bean id=actionManager"
>>>>>>>>> class=pringframework.orm.hibernate3.HibernateTransactionManager">
>>>>>>>>>    <property name=onFactory">
>>>>>>>>>        <ref bean=onFactory"/>
>>>>>>>>>    </property>
>>>>>>>>>  </bean>
>>>>>>>>>
>>>>>>>>>  <bean id=nateTemplate"
>>>>>>>>> class=pringframework.orm.hibernate3.HibernateTemplate">
>>>>>>>>>    <property name=onFactory">
>>>>>>>>>        <ref bean=onFactory"/>
>>>>>>>>>    </property>
>>>>>>>>>  </bean>
>>>>>>>>>
>>>>>>>>>  <tx:annotation-driven transaction-manager=actionManager"/>
>>>>>>>>>
>>>>>>>>>  <bean
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> class=pringframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"/>
>>>>
>>>>         
>>>>>>>>>  <bean
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> class=pringframework.transaction.interceptor.TransactionAttributeSourceAdvisor">
>>>>
>>>>         
>>>>>>>>>    <property name=actionInterceptor" ref="txInterceptor"/>
>>>>>>>>>  </bean>
>>>>>>>>>
>>>>>>>>>  <bean id=erceptor"
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> class=pringframework.transaction.interceptor.TransactionInterceptor">
>>>>
>>>>         
>>>>>>>>>    <property name=actionManager" ref="transactionManager"/>
>>>>>>>>>    <property name=actionAttributeSource">
>>>>>>>>>        <bean
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> class=pringframework.transaction.annotation.AnnotationTransactionAttributeSource"/>
>>>>
>>>>         
>>>>>>>>>    </property>
>>>>>>>>>  </bean>
>>>>>>>>> </beans>
>>>>>>>>> ==================>
>>>>>>>>>
>>>>>>>>> Error with InjectorHolder line
>>>>>>>>> ==================> SEVERE: Exception sending context initialized
>>>>>>>>> event to listener instance of
>>>>>>>>> class org.springframework.web.context.ContextLoaderListener
>>>>>>>>> org.springframework.beans.factory.BeanCreationException: Error
>>>>>>>>>
>>>>>>>>>                   
>>>> creating
>>>>
>>>>         
>>>>>>>>> bean
>>>>>>>>> with name 'UserDAO' defined in file [C:\Program Files\Apache
>>>>>>>>> Software
>>>>>>>>> Foundation\Tomcat
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> 6.0\webapps\vProbe\WEB-INF\classes\com\coastware\vProbe\model\dao\hibernate\UserDAOHibernate.class]:
>>>>
>>>>         
>>>>>>>>> Instantiation of bean failed; nested exception is
>>>>>>>>> org.springframework.beans.BeanInstantiationException: Could not
>>>>>>>>> instantiate
>>>>>>>>> bean class
>>>>>>>>>
>>>>>>>>>                   
>>>> [com.coastware.vProbe.model.dao.hibernate.UserDAOHibernate]:
>>>>
>>>>         
>>>>>>>>> Constructor threw exception; nested exception is
>>>>>>>>> java.lang.IllegalStateException: InjectorHolder has not been
>>>>>>>>> assigned
>>>>>>>>> an
>>>>>>>>> injector. Use InjectorHolder.setInjector() to assign an injector. In
>>>>>>>>> most
>>>>>>>>> cases this should be done once inside SpringWebApplication
>>>>>>>>> subclass's
>>>>>>>>> init()
>>>>>>>>> method.
>>>>>>>>>  at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:883)
>>>>
>>>>         
>>>>>>>>>  at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:839)
>>>>
>>>>         
>>>>>>>>>  at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:440)
>>>>
>>>>         
>>>>>>>>>  at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
>>>>
>>>>         
>>>>>>>>>  at java.security.AccessController.doPrivileged(Native Method)
>>>>>>>>>  at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
>>>>
>>>>         
>>>>>>>>>  at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
>>>>
>>>>         
>>>>>>>>>  at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
>>>>
>>>>         
>>>>>>>>>  at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
>>>>
>>>>         
>>>>>>>>>  at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
>>>>
>>>>         
>>>>>>>>>  at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
>>>>
>>>>         
>>>>>>>>>  at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429)
>>>>
>>>>         
>>>>>>>>>  at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728)
>>>>
>>>>         
>>>>>>>>>  at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380)
>>>>
>>>>         
>>>>>>>>>  at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255)
>>>>
>>>>         
>>>>>>>>>  at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199)
>>>>
>>>>         
>>>>>>>>>  at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45)
>>>>
>>>>         
>>>>>>>>>  at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3843)
>>>>
>>>>         
>>>>>>>>>  at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.apache.catalina.core.StandardContext.start(StandardContext.java:4342)
>>>>
>>>>         
>>>>>>>>>  at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
>>>>
>>>>         
>>>>>>>>>  at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
>>>>
>>>>         
>>>>>>>>>  at
>>>>>>>>>
>>>>>>>>> org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
>>>>>>>>>  at
>>>>>>>>>
>>>>>>>>> org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:830)
>>>>>>>>>  at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:719)
>>>>
>>>>         
>>>>>>>>>  at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:490)
>>>>
>>>>         
>>>>>>>>>  at
>>>>>>>>>
>>>>>>>>>                   
>>>> org.apache.catalina.startup.HostConfig.start(HostConfig.java:1149)
>>>>
>>>>         
>>>>>>>>>  at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
>>>>
>>>>         
>>>>>>>>>  at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
>>>>
>>>>         
>>>>>>>>>  at
>>>>>>>>>
>>>>>>>>> org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
>>>>>>>>>  at
>>>>>>>>>
>>>>>>>>>                   
>>>> org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
>>>>
>>>>         
>>>>>>>>>  at
>>>>>>>>>
>>>>>>>>> org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
>>>>>>>>>  at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
>>>>
>>>>         
>>>>>>>>>  at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.apache.catalina.core.StandardService.start(StandardService.java:516)
>>>>
>>>>         
>>>>>>>>>  at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
>>>>
>>>>         
>>>>>>>>>  at org.apache.catalina.startup.Catalina.start(Catalina.java:578)
>>>>>>>>>  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.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
>>>>>>>>>  at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
>>>>>>>>> Caused by: org.springframework.beans.BeanInstantiationException:
>>>>>>>>>
>>>>>>>>>                   
>>>> Could
>>>>
>>>>         
>>>>>>>>> not
>>>>>>>>> instantiate bean class
>>>>>>>>> [com.coastware.vProbe.model.dao.hibernate.UserDAOHibernate]:
>>>>>>>>> Constructor
>>>>>>>>> threw exception; nested exception is
>>>>>>>>> java.lang.IllegalStateException:
>>>>>>>>> InjectorHolder has not been assigned an injector. Use
>>>>>>>>> InjectorHolder.setInjector() to assign an injector. In most cases
>>>>>>>>>
>>>>>>>>>                   
>>>> this
>>>>
>>>>         
>>>>>>>>> should be done once inside SpringWebApplication subclass's init()
>>>>>>>>> method.
>>>>>>>>>  at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:115)
>>>>
>>>>         
>>>>>>>>>  at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:61)
>>>>
>>>>         
>>>>>>>>>  at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:877)
>>>>
>>>>         
>>>>>>>>>  ... 40 more
>>>>>>>>> Caused by: java.lang.IllegalStateException: InjectorHolder has not
>>>>>>>>>
>>>>>>>>>                   
>>>> been
>>>>
>>>>         
>>>>>>>>> assigned an injector. Use InjectorHolder.setInjector() to assign an
>>>>>>>>> injector. In most cases this should be done once inside
>>>>>>>>> SpringWebApplication
>>>>>>>>> subclass's init() method.
>>>>>>>>>  at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.apache.wicket.injection.web.InjectorHolder.getInjector(InjectorHolder.java:64)
>>>>
>>>>         
>>>>>>>>>  at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> com.coastware.vProbe.model.dao.hibernate.UserDAOHibernate.<init>(UserDAOHibernate.java:26)
>>>>
>>>>         
>>>>>>>>>  at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
>>>>>>>>> Method)
>>>>>>>>>  at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown
>>>>>>>>> Source)
>>>>>>>>>  at
>>>>>>>>> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown
>>>>>>>>> Source)
>>>>>>>>>  at java.lang.reflect.Constructor.newInstance(Unknown Source)
>>>>>>>>>  at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:100)
>>>>
>>>>         
>>>>>>>>>  ... 42 more
>>>>>>>>> ==================>
>>>>>>>>> Error when InjectorHolder line is commented out.
>>>>>>>>> ==================>
>>>>>>>>> java.lang.RuntimeException: userDAO is null at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> com.coastware.vProbe.service.UserServiceImpl.getUserDAO(UserServiceImpl.java:90)
>>>>
>>>>         
>>>>>>>>> at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> com.coastware.vProbe.service.UserServiceImpl.getUsers(UserServiceImpl.java:68)
>>>>
>>>>         
>>>>>>>>> at java.lang.reflect.Method.invoke(Unknown Source) at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
>>>>
>>>>         
>>>>>>>>> at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:198)
>>>>
>>>>         
>>>>>>>>> at $Proxy15.getUsers(Unknown Source) at
>>>>>>>>> java.lang.reflect.Method.invoke(Unknown Source) at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.apache.wicket.proxy.LazyInitProxyFactory$JdkHandler.invoke(LazyInitProxyFactory.java:416)
>>>>
>>>>         
>>>>>>>>> at org.apache.wicket.proxy.$Proxy16.getUsers(Unknown Source) at
>>>>>>>>> com.coastware.vProbe.HomePage.<init>(HomePage.java:27) at
>>>>>>>>> java.lang.reflect.Constructor.newInstance(Unknown Source) at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:147)
>>>>
>>>>         
>>>>>>>>> at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:66)
>>>>
>>>>         
>>>>>>>>> at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.newPage(BookmarkablePageRequestTarget.java:272)
>>>>
>>>>         
>>>>>>>>> at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.getPage(BookmarkablePageRequestTarget.java:293)
>>>>
>>>>         
>>>>>>>>> at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.processEvents(BookmarkablePageRequestTarget.java:210)
>>>>
>>>>         
>>>>>>>>> at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:91)
>>>>
>>>>         
>>>>>>>>> at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1220)
>>>>
>>>>         
>>>>>>>>> at org.apache.wicket.RequestCycle.step(RequestCycle.java:1297) at
>>>>>>>>> org.apache.wicket.RequestCycle.steps(RequestCycle.java:1399) at
>>>>>>>>> org.apache.wicket.RequestCycle.request(RequestCycle.java:529) at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:356)
>>>>
>>>>         
>>>>>>>>> at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:201)
>>>>
>>>>         
>>>>>>>>> at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
>>>>
>>>>         
>>>>>>>>> at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>>>>
>>>>         
>>>>>>>>> at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
>>>>
>>>>         
>>>>>>>>> at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
>>>>
>>>>         
>>>>>>>>> at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
>>>>
>>>>         
>>>>>>>>> at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
>>>>
>>>>         
>>>>>>>>> at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
>>>>
>>>>         
>>>>>>>>> at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
>>>>
>>>>         
>>>>>>>>> at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:857)
>>>>
>>>>         
>>>>>>>>> at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:565)
>>>>
>>>>         
>>>>>>>>> at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1509)
>>>>
>>>>         
>>>>>>>>> at java.lang.Thread.run(Unknown Source)
>>>>>>>>>
>>>>>>>>> Complete stack:
>>>>>>>>>
>>>>>>>>> org.apache.wicket.WicketRuntimeException: Can't instantiate page
>>>>>>>>>
>>>>>>>>>                   
>>>> using
>>>>
>>>>         
>>>>>>>>> constructor public
>>>>>>>>> com.coastware.vProbe.HomePage(org.apache.wicket.PageParameters) and
>>>>>>>>> argument
>>>>>>>>> at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:168)
>>>>
>>>>         
>>>>>>>>> at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:66)
>>>>
>>>>         
>>>>>>>>> at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.newPage(BookmarkablePageRequestTarget.java:272)
>>>>
>>>>         
>>>>>>>>> at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.getPage(BookmarkablePageRequestTarget.java:293)
>>>>
>>>>         
>>>>>>>>> at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.processEvents(BookmarkablePageRequestTarget.java:210)
>>>>
>>>>         
>>>>>>>>> at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:91)
>>>>
>>>>         
>>>>>>>>> at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1220)
>>>>
>>>>         
>>>>>>>>> at org.apache.wicket.RequestCycle.step(RequestCycle.java:1297) at
>>>>>>>>> org.apache.wicket.RequestCycle.steps(RequestCycle.java:1399) at
>>>>>>>>> org.apache.wicket.RequestCycle.request(RequestCycle.java:529) at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:356)
>>>>
>>>>         
>>>>>>>>> java.lang.reflect.InvocationTargetException at
>>>>>>>>> sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
>>>>>>>>> Method)
>>>>>>>>> at
>>>>>>>>> sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown
>>>>>>>>> Source)
>>>>>>>>> at
>>>>>>>>> java.lang.reflect.Constructor.newInstance(Unknown Source) at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:147)
>>>>
>>>>         
>>>>>>>>> at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:66)
>>>>
>>>>         
>>>>>>>>> at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.newPage(BookmarkablePageRequestTarget.java:272)
>>>>
>>>>         
>>>>>>>>> at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.getPage(BookmarkablePageRequestTarget.java:293)
>>>>
>>>>         
>>>>>>>>> at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.processEvents(BookmarkablePageRequestTarget.java:210)
>>>>
>>>>         
>>>>>>>>> at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:91)
>>>>
>>>>         
>>>>>>>>> at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1220)
>>>>
>>>>         
>>>>>>>>> at org.apache.wicket.RequestCycle.step(RequestCycle.java:1297) at
>>>>>>>>> org.apache.wicket.RequestCycle.steps(RequestCycle.java:1399) at
>>>>>>>>> org.apache.wicket.RequestCycle.request(RequestCycle.java:529) at
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>> org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:356)
>>>>
>>>>         
>>>>>>>>> ==================>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> ---------------------------------------------------------------------
>>>>>>>>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>>>>>>>>> For additional commands, e-mail: users-help@wicket.apache.org
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>>>>>>
>>>>>>>>                 
>>>>>>             
>>>
>>>
>>>       
>
>   

Re: Re: Re: Re: DAO not getting injected, using springbean

Posted by James Carman <jc...@carmanconsulting.com>.
Did you mark UserDAOHibernate with the @Repository annotation?

2009/6/16 Bruce McGuire <br...@coastware.com>:
> Hi Vasu.
>
> Thanks for the info. Now I get it, and have successfully wired my demo app
> so that it does the job.
>
> Although I did notice that along with the context:component-scan I did need
> to define the beans that I was going to autowire. How did you get around
> this?
>
>   <context:component-scan base-package="com.coastware" />
>   <bean id="userDAO"
> class="com.coastware.vProbe.model.dao.hibernate.UserDAOHibernate" />
>
> Other than that, this is a very much reduced context file.
>
> Now I need to duplicate this in my real application.
>
> Thanks for everyone's help.
>
> Bruce McGuire.
>
> Vasu Srinivasan wrote:
>>
>> Using annotations, I have only one line in the spring's
>> applicationContext.xml --
>>
>> <context:component-scan base-package="packagename" />
>>
>> Services are tagged with @Service, Daos are tagged with
>> @Component("xxxDaoImpl"), Wicket web pages have @SpringBean
>> (name="<serviceName>")
>>
>> Within the ServiceImpl, the Daos are tagged with @Autowired.
>>
>> No other xml config, setter, getter for daos etc.
>>
>> Works like a charm.
>>
>> 2009/6/16 James Carman <jc...@carmanconsulting.com>
>>
>>
>>>
>>> You are correct.  You should only use @SpringBean in your wicket-related
>>> code (components/pages).  Let Spring wire the rest together, however you
>>> want to configure it to do that (with annotations or xml).  You can use
>>> @Autowired to inject your DAOs into your Services.  You just have to make
>>> sure you set up your Spring context so that it takes care of that.
>>>
>>> On Tue, Jun 16, 2009 at 4:36 PM, Bruce McGuire <br...@coastware.com>
>>> wrote:
>>>
>>>
>>>>
>>>> Hello James.
>>>>
>>>> So I have completely missed the point of the Repository, Service and
>>>> SpringBean annotations?  I was under the impression that the idea was to
>>>> avoid using a lot of xml in my context files.
>>>>
>>>> If I am understanding correctly, what you and Martijn are saying is the
>>>> following:
>>>> Tag the dao and service classes with Repository and Service, and in
>>>>
>>>
>>> wicket
>>>
>>>>
>>>> code, tag any use of them with SpringBean. However, in the service
>>>>
>>>
>>> classes,
>>>
>>>>
>>>> use the normal xml injection method and get/set to get the dao into the
>>>> service class.
>>>>
>>>> Is this a correct interpretation?
>>>>
>>>> Thanks,
>>>>
>>>> Bruce.
>>>>
>>>> James Carman wrote:
>>>>
>>>>
>>>>>
>>>>> You shouldn't use @SpringBean in your spring-managed beans, only in
>>>>> your Wicket code.  You don't want view-specific code in your "domain"
>>>>> code.
>>>>>
>>>>> On Tue, Jun 16, 2009 at 4:17 PM, Bruce McGuire <br...@coastware.com>
>>>>> wrote:
>>>>>
>>>>>
>>>>>
>>>>>>
>>>>>> Hi Martijn.
>>>>>>
>>>>>> Thanks for the quick response.
>>>>>>
>>>>>> Are you saying that the dao and the service should have the
>>>>>> InjectorHolder code, rather than the @Repository and @Service tags?
>>>>>>
>>>>>> Bruce.
>>>>>>
>>>>>> Martijn Dashorst wrote:
>>>>>>
>>>>>>
>>>>>>
>>>>>>>
>>>>>>> @SpringBean only works with Components. For all other uses you should
>>>>>>> either call InjectorHolder.getInjector().inject(this) in your
>>>>>>> constructor or use Salve.
>>>>>>>
>>>>>>> Martijn
>>>>>>>
>>>>>>> On Tue, Jun 16, 2009 at 9:26 PM, Bruce McGuire<br...@coastware.com>
>>>>>>> wrote:
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>>
>>>>>>>> Hello.
>>>>>>>>
>>>>>>>> I have created a new small project to try to figure out how to use
>>>>>>>>
>>>
>>> the
>>>
>>>>>>>>
>>>>>>>> SpringBean, Service, and Repository annotations with Wicket, Spring,
>>>>>>>> Hibernate, Maven and Eclipse.
>>>>>>>>
>>>>>>>> However, I am getting an error with a user DAO that I have created.
>>>>>>>>
>>>>>>>> I have a service that is using the dao tagged as @Service, I have
>>>>>>>> the
>>>>>>>> DAO in
>>>>>>>> the service tagged with @SpringBean, and the DAO code itself is
>>>>>>>>
>>>
>>> tagged
>>>
>>>>>>>>
>>>>>>>> with
>>>>>>>> @Repository.  The service that is using the DAO is getting found
>>>>>>>> correctly.
>>>>>>>>
>>>>>>>> When I have the InjectorHolder code in the dao constructor, I get an
>>>>>>>> error
>>>>>>>> that says 'InjectorHolder has not been assigned an injector'
>>>>>>>>
>>>>>>>> When I comment out the InjectorHolder line in the dao constructor,
>>>>>>>>
>>>
>>> the
>>>
>>>>>>>>
>>>>>>>> DAO
>>>>>>>> is null, and getUserDAO throws an exception.
>>>>>>>>
>>>>>>>> Since I am not certain that I can attach files, I will insert the
>>>>>>>> relevant
>>>>>>>> code and exceptions into this email.
>>>>>>>>
>>>>>>>> Any pointers you can give would be greatly appreciated.
>>>>>>>>
>>>>>>>> Thanks very very much,
>>>>>>>>
>>>>>>>> Bruce.
>>>>>>>>
>>>>>>>> UserServiceImpl
>>>>>>>> ====================> @Service("UserService")
>>>>>>>> public class UserServiceImpl implements UserService
>>>>>>>> {
>>>>>>>>  @SpringBean
>>>>>>>>  UserDAO userDAO ;
>>>>>>>>
>>>>>>>>  private UserDAO getUserDAO()
>>>>>>>>  {
>>>>>>>>    if (null =erDAO)
>>>>>>>>    {
>>>>>>>>        throw new RuntimeException("userDAO is null") ;
>>>>>>>>    }
>>>>>>>>
>>>>>>>>    return(userDAO) ;
>>>>>>>>  }
>>>>>>>>
>>>>>>>>  @Override
>>>>>>>>  public List<User> getUsers()
>>>>>>>>  {
>>>>>>>>    return (getUserDAO().findAll());
>>>>>>>>  }
>>>>>>>> ====================>
>>>>>>>> UserDAOHibernate
>>>>>>>> ====================> @Repository("UserDAO")
>>>>>>>> public class UserDAOHibernate extends GenericDAOHibernate<User,
>>>>>>>>
>>>
>>> String>
>>>
>>>>>>>>
>>>>>>>> implements UserDAO
>>>>>>>> {
>>>>>>>>  private static Log log =Factory.getLog("UserDAOHibernate");
>>>>>>>>
>>>>>>>>  public UserDAOHibernate()
>>>>>>>>  {
>>>>>>>>    InjectorHolder.getInjector().inject(this);
>>>>>>>>  }
>>>>>>>>
>>>>>>>> ...
>>>>>>>> ====================>
>>>>>>>> HomePage
>>>>>>>> ====================> public class HomePage extends WebPage
>>>>>>>> {
>>>>>>>>  @SpringBean
>>>>>>>>  private UserService userService ;
>>>>>>>>
>>>>>>>>  public HomePage(final PageParameters parameters)
>>>>>>>>  {
>>>>>>>>    super (parameters) ;
>>>>>>>>
>>>>>>>>    List<User> userList =rService.getUsers() ;
>>>>>>>>
>>>>>>>>    RepeatingView rv = RepeatingView("Users") ;
>>>>>>>>    for(User user: userList)
>>>>>>>>    {
>>>>>>>>        Label userName = Label("username", user.getUsername()) ;
>>>>>>>>        rv.add(userName) ;
>>>>>>>>    }
>>>>>>>>
>>>>>>>>    this.add(rv) ;
>>>>>>>>  }
>>>>>>>> }
>>>>>>>> ====================>
>>>>>>>> CoastwareApplication
>>>>>>>> ====================> public class CoastwareApplication extends
>>>>>>>> WebApplication
>>>>>>>> {
>>>>>>>>  private ApplicationContext ctx;
>>>>>>>>
>>>>>>>>  @SpringBean
>>>>>>>>  private UserService userService ;
>>>>>>>>
>>>>>>>>  protected static Log log
>>>>>>>> =Factory.getLog(CoastwareApplication.class)
>>>>>>>>
>>>
>>> ;
>>>
>>>>>>>>
>>>>>>>>  private static ISpringContextLocator CTX_LOCATOR =
>>>>>>>> ISpringContextLocator()
>>>>>>>>  {
>>>>>>>>    public ApplicationContext getSpringContext()
>>>>>>>>    {
>>>>>>>>        return(CoastwareApplication.get().ctx) ;
>>>>>>>>    }
>>>>>>>>  } ;
>>>>>>>>
>>>>>>>>  public CoastwareApplication()
>>>>>>>>  {
>>>>>>>>  }
>>>>>>>>
>>>>>>>>  public void init()
>>>>>>>>  {
>>>>>>>>    ctx = ClassPathXmlApplicationContext("appContext.xml") ;
>>>>>>>>
>>>>>>>>    addComponentInstantiationListener(new
>>>>>>>> SpringComponentInjector(this));
>>>>>>>>
>>>>>>>>    super.init() ;
>>>>>>>>  }
>>>>>>>>
>>>>>>>>  @Override
>>>>>>>>  public Session newSession(Request request, Response response)
>>>>>>>>  {
>>>>>>>>    return (new WebSession(request)) ;
>>>>>>>>  }
>>>>>>>>
>>>>>>>>  public static CoastwareApplication get()
>>>>>>>>  {
>>>>>>>>    return ((CoastwareApplication) Application.get()) ;
>>>>>>>>  }
>>>>>>>>
>>>>>>>>  private <T> T createProxy(Class<T> clazz)
>>>>>>>>  {
>>>>>>>>    return ((T) LazyInitProxyFactory.createProxy(clazz, new
>>>>>>>> SpringBeanLocator(clazz, CTX_LOCATOR))) ;
>>>>>>>>  }
>>>>>>>>
>>>>>>>>  public Class<HomePage> getHomePage()
>>>>>>>>  {
>>>>>>>>    return HomePage.class;
>>>>>>>>  }
>>>>>>>>
>>>>>>>>  public UserService getUserService()
>>>>>>>>  {
>>>>>>>>    if (null =erService)
>>>>>>>>    {
>>>>>>>>        userService =ateProxy(UserService.class) ;
>>>>>>>>
>>>>>>>>    }
>>>>>>>>    return userService;
>>>>>>>>  }
>>>>>>>> }
>>>>>>>> ====================>
>>>>>>>>
>>>>>>>> Web.xml
>>>>>>>> ====================>   <display-name>vProbe</display-name>
>>>>>>>>
>>>>>>>>  <context-param>
>>>>>>>>    <param-name>contextConfigLocation</param-name>
>>>>>>>>    <param-value>classpath:appContext.xml</param-value>
>>>>>>>>  </context-param>
>>>>>>>>
>>>>>>>>  <context-param>
>>>>>>>>    <param-name>configuration</param-name>
>>>>>>>>    <param-value>development</param-value>
>>>>>>>>  </context-param>
>>>>>>>>
>>>>>>>>  <listener>
>>>>>>>>    <listener-class>
>>>>>>>>        org.springframework.web.context.ContextLoaderListener
>>>>>>>>    </listener-class>
>>>>>>>>  </listener>
>>>>>>>>
>>>>>>>>  <filter>
>>>>>>>>    <filter-name>wicketFilter</filter-name>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>>  <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class>
>>>
>>>>>>>>
>>>>>>>>    <init-param>
>>>>>>>>        <param-name>applicationClassName</param-name>
>>>>>>>>
>>>>>>>> <param-value>com.coastware.vProbe.CoastwareApplication</param-value>
>>>>>>>>     </init-param>
>>>>>>>>  </filter>
>>>>>>>>
>>>>>>>>  <filter>
>>>>>>>>    <filter-name>opensessioninview</filter-name>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
>>>
>>>>>>>>
>>>>>>>>  </filter>
>>>>>>>>
>>>>>>>>  <filter-mapping>
>>>>>>>>    <filter-name>wicketFilter</filter-name>
>>>>>>>>    <url-pattern>/*</url-pattern>
>>>>>>>>  </filter-mapping>
>>>>>>>>
>>>>>>>>  <filter-mapping>
>>>>>>>>    <filter-name>opensessioninview</filter-name>
>>>>>>>>    <url-pattern>/*</url-pattern>
>>>>>>>>  </filter-mapping>
>>>>>>>> ====================>
>>>>>>>> appContext.xml
>>>>>>>> ====================> <?xml version="1.0" encoding="UTF-8"?>
>>>>>>>> <beans
>>>>>>>>  default-autowire=odetect"
>>>>>>>>  xmlns=p://www.springframework.org/schema/beans"
>>>>>>>>  xmlns:xsi=p://www.w3.org/2001/XMLSchema-instance"
>>>>>>>>  xmlns:aop=p://www.springframework.org/schema/aop"
>>>>>>>>  xmlns:tx=p://www.springframework.org/schema/tx"
>>>>>>>>  xmlns:context=p://www.springframework.org/schema/context"
>>>>>>>>  xsi:schemaLocation>>>
>>>>>>>> http://www.springframework.org/schema/beans
>>>>>>>>    http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
>>>>>>>>    http://www.springframework.org/schema/aop
>>>>>>>>    http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
>>>>>>>>    http://www.springframework.org/schema/tx
>>>>>>>>    http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
>>>>>>>>    http://www.springframework.org/schema/context
>>>>>>>>
>>>>>>>> http://www.springframework.org/schema/context/spring-context-2.5.xsd
>>>>>>>>
>>>
>>> ">
>>>
>>>>>>>>
>>>>>>>>  <bean id=aSource"
>>>>>>>> class=.springframework.jdbc.datasource.DriverManagerDataSource">
>>>>>>>>    <property name=" value="jdbc:mysql://192.168.15.128/vprobe"/>
>>>>>>>>    <property name=verClassName" value="com.mysql.jdbc.Driver"/>
>>>>>>>>    <property name=rname" value="vProbe"/>
>>>>>>>>    <property name=sword" value="vProbe"/>
>>>>>>>>  </bean>
>>>>>>>>
>>>>>>>>  <bean id=sionFactory"
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> class=.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
>>>
>>>>>>>>
>>>>>>>>    <property name=aSource" ref="dataSource"/>
>>>>>>>>
>>>>>>>>    <property nameŹkagesToScan">
>>>>>>>>        <list>
>>>>>>>>            <value>com.coastware.vProbe.model</value>
>>>>>>>>        </list>
>>>>>>>>    </property>
>>>>>>>>
>>>>>>>>    <property name=ernateProperties">
>>>>>>>>        <props>
>>>>>>>>            <prop
>>>>>>>> key=ernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
>>>>>>>>            <prop key=ernate.show_sql">true</prop>
>>>>>>>>            <prop key=ernate.format_sql">true</prop>
>>>>>>>>            <prop key=ernate.use_sql_comments">true</prop>
>>>>>>>>        </props>
>>>>>>>>    </property>
>>>>>>>>  </bean>
>>>>>>>>
>>>>>>>>  <context:component-scan base-package=.coastware" />
>>>>>>>>
>>>>>>>>  <bean id=nSessionInViewInterceptor"
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> class=.springframework.orm.hibernate3.support.OpenSessionInViewInterceptor">
>>>
>>>>>>>>
>>>>>>>>    <property name=sionFactory">
>>>>>>>>        <ref bean=sionFactory"/>
>>>>>>>>    </property>
>>>>>>>>  </bean>
>>>>>>>>
>>>>>>>>  <bean id=nsactionManager"
>>>>>>>> class=.springframework.orm.hibernate3.HibernateTransactionManager">
>>>>>>>>    <property name=sionFactory">
>>>>>>>>        <ref bean=sionFactory"/>
>>>>>>>>    </property>
>>>>>>>>  </bean>
>>>>>>>>
>>>>>>>>  <bean id=ernateTemplate"
>>>>>>>> class=.springframework.orm.hibernate3.HibernateTemplate">
>>>>>>>>    <property name=sionFactory">
>>>>>>>>        <ref bean=sionFactory"/>
>>>>>>>>    </property>
>>>>>>>>  </bean>
>>>>>>>>
>>>>>>>>  <tx:annotation-driven transaction-manager=nsactionManager"/>
>>>>>>>>
>>>>>>>>  <bean
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> class=.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"/>
>>>
>>>>>>>>
>>>>>>>>  <bean
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> class=.springframework.transaction.interceptor.TransactionAttributeSourceAdvisor">
>>>
>>>>>>>>
>>>>>>>>    <property name=nsactionInterceptor" ref="txInterceptor"/>
>>>>>>>>  </bean>
>>>>>>>>
>>>>>>>>  <bean id=nterceptor"
>>>>>>>>
>>>>>>>>
>>>
>>> class=.springframework.transaction.interceptor.TransactionInterceptor">
>>>
>>>>>>>>
>>>>>>>>    <property name=nsactionManager" ref="transactionManager"/>
>>>>>>>>    <property name=nsactionAttributeSource">
>>>>>>>>        <bean
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> class=.springframework.transaction.annotation.AnnotationTransactionAttributeSource"/>
>>>
>>>>>>>>
>>>>>>>>    </property>
>>>>>>>>  </bean>
>>>>>>>> </beans>
>>>>>>>> ====================>
>>>>>>>>
>>>>>>>> Error with InjectorHolder line
>>>>>>>> ====================> SEVERE: Exception sending context initialized
>>>>>>>> event to listener instance of
>>>>>>>> class org.springframework.web.context.ContextLoaderListener
>>>>>>>> org.springframework.beans.factory.BeanCreationException: Error
>>>>>>>>
>>>
>>> creating
>>>
>>>>>>>>
>>>>>>>> bean
>>>>>>>> with name 'UserDAO' defined in file [C:\Program Files\Apache
>>>>>>>> Software
>>>>>>>> Foundation\Tomcat
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> 6.0\webapps\vProbe\WEB-INF\classes\com\coastware\vProbe\model\dao\hibernate\UserDAOHibernate.class]:
>>>
>>>>>>>>
>>>>>>>> Instantiation of bean failed; nested exception is
>>>>>>>> org.springframework.beans.BeanInstantiationException: Could not
>>>>>>>> instantiate
>>>>>>>> bean class
>>>>>>>>
>>>
>>> [com.coastware.vProbe.model.dao.hibernate.UserDAOHibernate]:
>>>
>>>>>>>>
>>>>>>>> Constructor threw exception; nested exception is
>>>>>>>> java.lang.IllegalStateException: InjectorHolder has not been
>>>>>>>> assigned
>>>>>>>> an
>>>>>>>> injector. Use InjectorHolder.setInjector() to assign an injector. In
>>>>>>>> most
>>>>>>>> cases this should be done once inside SpringWebApplication
>>>>>>>> subclass's
>>>>>>>> init()
>>>>>>>> method.
>>>>>>>>  at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:883)
>>>
>>>>>>>>
>>>>>>>>  at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:839)
>>>
>>>>>>>>
>>>>>>>>  at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:440)
>>>
>>>>>>>>
>>>>>>>>  at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
>>>
>>>>>>>>
>>>>>>>>  at java.security.AccessController.doPrivileged(Native Method)
>>>>>>>>  at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
>>>
>>>>>>>>
>>>>>>>>  at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
>>>
>>>>>>>>
>>>>>>>>  at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
>>>
>>>>>>>>
>>>>>>>>  at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
>>>
>>>>>>>>
>>>>>>>>  at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
>>>
>>>>>>>>
>>>>>>>>  at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
>>>
>>>>>>>>
>>>>>>>>  at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429)
>>>
>>>>>>>>
>>>>>>>>  at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728)
>>>
>>>>>>>>
>>>>>>>>  at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380)
>>>
>>>>>>>>
>>>>>>>>  at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255)
>>>
>>>>>>>>
>>>>>>>>  at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199)
>>>
>>>>>>>>
>>>>>>>>  at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45)
>>>
>>>>>>>>
>>>>>>>>  at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3843)
>>>
>>>>>>>>
>>>>>>>>  at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>> org.apache.catalina.core.StandardContext.start(StandardContext.java:4342)
>>>
>>>>>>>>
>>>>>>>>  at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
>>>
>>>>>>>>
>>>>>>>>  at
>>>>>>>>
>>>>>>>>
>>>
>>> org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
>>>
>>>>>>>>
>>>>>>>>  at
>>>>>>>>
>>>>>>>> org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
>>>>>>>>  at
>>>>>>>>
>>>>>>>> org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:830)
>>>>>>>>  at
>>>>>>>>
>>>>>>>>
>>>
>>> org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:719)
>>>
>>>>>>>>
>>>>>>>>  at
>>>>>>>>
>>>>>>>>
>>>
>>> org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:490)
>>>
>>>>>>>>
>>>>>>>>  at
>>>>>>>>
>>>
>>> org.apache.catalina.startup.HostConfig.start(HostConfig.java:1149)
>>>
>>>>>>>>
>>>>>>>>  at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
>>>
>>>>>>>>
>>>>>>>>  at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
>>>
>>>>>>>>
>>>>>>>>  at
>>>>>>>>
>>>>>>>> org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
>>>>>>>>  at
>>>>>>>>
>>>
>>> org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
>>>
>>>>>>>>
>>>>>>>>  at
>>>>>>>>
>>>>>>>> org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
>>>>>>>>  at
>>>>>>>>
>>>>>>>>
>>>
>>> org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
>>>
>>>>>>>>
>>>>>>>>  at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>> org.apache.catalina.core.StandardService.start(StandardService.java:516)
>>>
>>>>>>>>
>>>>>>>>  at
>>>>>>>>
>>>>>>>>
>>>
>>> org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
>>>
>>>>>>>>
>>>>>>>>  at org.apache.catalina.startup.Catalina.start(Catalina.java:578)
>>>>>>>>  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.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
>>>>>>>>  at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
>>>>>>>> Caused by: org.springframework.beans.BeanInstantiationException:
>>>>>>>>
>>>
>>> Could
>>>
>>>>>>>>
>>>>>>>> not
>>>>>>>> instantiate bean class
>>>>>>>> [com.coastware.vProbe.model.dao.hibernate.UserDAOHibernate]:
>>>>>>>> Constructor
>>>>>>>> threw exception; nested exception is
>>>>>>>> java.lang.IllegalStateException:
>>>>>>>> InjectorHolder has not been assigned an injector. Use
>>>>>>>> InjectorHolder.setInjector() to assign an injector. In most cases
>>>>>>>>
>>>
>>> this
>>>
>>>>>>>>
>>>>>>>> should be done once inside SpringWebApplication subclass's init()
>>>>>>>> method.
>>>>>>>>  at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>> org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:115)
>>>
>>>>>>>>
>>>>>>>>  at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:61)
>>>
>>>>>>>>
>>>>>>>>  at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:877)
>>>
>>>>>>>>
>>>>>>>>  ... 40 more
>>>>>>>> Caused by: java.lang.IllegalStateException: InjectorHolder has not
>>>>>>>>
>>>
>>> been
>>>
>>>>>>>>
>>>>>>>> assigned an injector. Use InjectorHolder.setInjector() to assign an
>>>>>>>> injector. In most cases this should be done once inside
>>>>>>>> SpringWebApplication
>>>>>>>> subclass's init() method.
>>>>>>>>  at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> org.apache.wicket.injection.web.InjectorHolder.getInjector(InjectorHolder.java:64)
>>>
>>>>>>>>
>>>>>>>>  at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> com.coastware.vProbe.model.dao.hibernate.UserDAOHibernate.<init>(UserDAOHibernate.java:26)
>>>
>>>>>>>>
>>>>>>>>  at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
>>>>>>>> Method)
>>>>>>>>  at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown
>>>>>>>> Source)
>>>>>>>>  at
>>>>>>>> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown
>>>>>>>> Source)
>>>>>>>>  at java.lang.reflect.Constructor.newInstance(Unknown Source)
>>>>>>>>  at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>> org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:100)
>>>
>>>>>>>>
>>>>>>>>  ... 42 more
>>>>>>>> ====================>
>>>>>>>> Error when InjectorHolder line is commented out.
>>>>>>>> ====================>
>>>>>>>> java.lang.RuntimeException: userDAO is null at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> com.coastware.vProbe.service.UserServiceImpl.getUserDAO(UserServiceImpl.java:90)
>>>
>>>>>>>>
>>>>>>>> at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> com.coastware.vProbe.service.UserServiceImpl.getUsers(UserServiceImpl.java:68)
>>>
>>>>>>>>
>>>>>>>> at java.lang.reflect.Method.invoke(Unknown Source) at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
>>>
>>>>>>>>
>>>>>>>> at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:198)
>>>
>>>>>>>>
>>>>>>>> at $Proxy15.getUsers(Unknown Source) at
>>>>>>>> java.lang.reflect.Method.invoke(Unknown Source) at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> org.apache.wicket.proxy.LazyInitProxyFactory$JdkHandler.invoke(LazyInitProxyFactory.java:416)
>>>
>>>>>>>>
>>>>>>>> at org.apache.wicket.proxy.$Proxy16.getUsers(Unknown Source) at
>>>>>>>> com.coastware.vProbe.HomePage.<init>(HomePage.java:27) at
>>>>>>>> java.lang.reflect.Constructor.newInstance(Unknown Source) at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:147)
>>>
>>>>>>>>
>>>>>>>> at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:66)
>>>
>>>>>>>>
>>>>>>>> at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.newPage(BookmarkablePageRequestTarget.java:272)
>>>
>>>>>>>>
>>>>>>>> at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.getPage(BookmarkablePageRequestTarget.java:293)
>>>
>>>>>>>>
>>>>>>>> at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.processEvents(BookmarkablePageRequestTarget.java:210)
>>>
>>>>>>>>
>>>>>>>> at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:91)
>>>
>>>>>>>>
>>>>>>>> at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1220)
>>>
>>>>>>>>
>>>>>>>> at org.apache.wicket.RequestCycle.step(RequestCycle.java:1297) at
>>>>>>>> org.apache.wicket.RequestCycle.steps(RequestCycle.java:1399) at
>>>>>>>> org.apache.wicket.RequestCycle.request(RequestCycle.java:529) at
>>>>>>>>
>>>>>>>>
>>>
>>> org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:356)
>>>
>>>>>>>>
>>>>>>>> at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:201)
>>>
>>>>>>>>
>>>>>>>> at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
>>>
>>>>>>>>
>>>>>>>> at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>>>
>>>>>>>>
>>>>>>>> at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
>>>
>>>>>>>>
>>>>>>>> at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
>>>
>>>>>>>>
>>>>>>>> at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
>>>
>>>>>>>>
>>>>>>>> at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
>>>
>>>>>>>>
>>>>>>>> at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
>>>
>>>>>>>>
>>>>>>>> at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
>>>
>>>>>>>>
>>>>>>>> at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:857)
>>>
>>>>>>>>
>>>>>>>> at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:565)
>>>
>>>>>>>>
>>>>>>>> at
>>>>>>>>
>>>>>>>>
>>>
>>> org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1509)
>>>
>>>>>>>>
>>>>>>>> at java.lang.Thread.run(Unknown Source)
>>>>>>>>
>>>>>>>> Complete stack:
>>>>>>>>
>>>>>>>> org.apache.wicket.WicketRuntimeException: Can't instantiate page
>>>>>>>>
>>>
>>> using
>>>
>>>>>>>>
>>>>>>>> constructor public
>>>>>>>> com.coastware.vProbe.HomePage(org.apache.wicket.PageParameters) and
>>>>>>>> argument
>>>>>>>> at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:168)
>>>
>>>>>>>>
>>>>>>>> at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:66)
>>>
>>>>>>>>
>>>>>>>> at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.newPage(BookmarkablePageRequestTarget.java:272)
>>>
>>>>>>>>
>>>>>>>> at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.getPage(BookmarkablePageRequestTarget.java:293)
>>>
>>>>>>>>
>>>>>>>> at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.processEvents(BookmarkablePageRequestTarget.java:210)
>>>
>>>>>>>>
>>>>>>>> at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:91)
>>>
>>>>>>>>
>>>>>>>> at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1220)
>>>
>>>>>>>>
>>>>>>>> at org.apache.wicket.RequestCycle.step(RequestCycle.java:1297) at
>>>>>>>> org.apache.wicket.RequestCycle.steps(RequestCycle.java:1399) at
>>>>>>>> org.apache.wicket.RequestCycle.request(RequestCycle.java:529) at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>> org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:356)
>>>
>>>>>>>>
>>>>>>>> java.lang.reflect.InvocationTargetException at
>>>>>>>> sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
>>>>>>>> Method)
>>>>>>>> at
>>>>>>>> sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown
>>>>>>>> Source)
>>>>>>>> at
>>>>>>>> java.lang.reflect.Constructor.newInstance(Unknown Source) at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:147)
>>>
>>>>>>>>
>>>>>>>> at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:66)
>>>
>>>>>>>>
>>>>>>>> at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.newPage(BookmarkablePageRequestTarget.java:272)
>>>
>>>>>>>>
>>>>>>>> at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.getPage(BookmarkablePageRequestTarget.java:293)
>>>
>>>>>>>>
>>>>>>>> at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.processEvents(BookmarkablePageRequestTarget.java:210)
>>>
>>>>>>>>
>>>>>>>> at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:91)
>>>
>>>>>>>>
>>>>>>>> at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>>
>>> org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1220)
>>>
>>>>>>>>
>>>>>>>> at org.apache.wicket.RequestCycle.step(RequestCycle.java:1297) at
>>>>>>>> org.apache.wicket.RequestCycle.steps(RequestCycle.java:1399) at
>>>>>>>> org.apache.wicket.RequestCycle.request(RequestCycle.java:529) at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>
>>> org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:356)
>>>
>>>>>>>>
>>>>>>>> ====================>
>>>>>>>>
>>>>>>>>
>>>>>>>> ---------------------------------------------------------------------
>>>>>>>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>>>>>>>> For additional commands, e-mail: users-help@wicket.apache.org
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>
>>>>>
>>
>>
>>
>>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org


Re: Re: Re: Re: DAO not getting injected, using springbean

Posted by Bruce McGuire <br...@coastware.com>.
Hi Vasu.

Thanks for the info. Now I get it, and have successfully wired my demo 
app so that it does the job.

Although I did notice that along with the context:component-scan I did 
need to define the beans that I was going to autowire. How did you get 
around this?

    <context:component-scan base-package="com.coastware" />
    <bean id="userDAO" 
class="com.coastware.vProbe.model.dao.hibernate.UserDAOHibernate" />

Other than that, this is a very much reduced context file.

Now I need to duplicate this in my real application.

Thanks for everyone's help.

Bruce McGuire.

Vasu Srinivasan wrote:
> Using annotations, I have only one line in the spring's
> applicationContext.xml --
>
> <context:component-scan base-package="packagename" />
>
> Services are tagged with @Service, Daos are tagged with
> @Component("xxxDaoImpl"), Wicket web pages have @SpringBean
> (name="<serviceName>")
>
> Within the ServiceImpl, the Daos are tagged with @Autowired.
>
> No other xml config, setter, getter for daos etc.
>
> Works like a charm.
>
> 2009/6/16 James Carman <jc...@carmanconsulting.com>
>
>   
>> You are correct.  You should only use @SpringBean in your wicket-related
>> code (components/pages).  Let Spring wire the rest together, however you
>> want to configure it to do that (with annotations or xml).  You can use
>> @Autowired to inject your DAOs into your Services.  You just have to make
>> sure you set up your Spring context so that it takes care of that.
>>
>> On Tue, Jun 16, 2009 at 4:36 PM, Bruce McGuire <br...@coastware.com>
>> wrote:
>>
>>     
>>> Hello James.
>>>
>>> So I have completely missed the point of the Repository, Service and
>>> SpringBean annotations?  I was under the impression that the idea was to
>>> avoid using a lot of xml in my context files.
>>>
>>> If I am understanding correctly, what you and Martijn are saying is the
>>> following:
>>> Tag the dao and service classes with Repository and Service, and in
>>>       
>> wicket
>>     
>>> code, tag any use of them with SpringBean. However, in the service
>>>       
>> classes,
>>     
>>> use the normal xml injection method and get/set to get the dao into the
>>> service class.
>>>
>>> Is this a correct interpretation?
>>>
>>> Thanks,
>>>
>>> Bruce.
>>>
>>> James Carman wrote:
>>>
>>>       
>>>> You shouldn't use @SpringBean in your spring-managed beans, only in
>>>> your Wicket code.  You don't want view-specific code in your "domain"
>>>> code.
>>>>
>>>> On Tue, Jun 16, 2009 at 4:17 PM, Bruce McGuire <br...@coastware.com>
>>>> wrote:
>>>>
>>>>
>>>>         
>>>>> Hi Martijn.
>>>>>
>>>>> Thanks for the quick response.
>>>>>
>>>>> Are you saying that the dao and the service should have the
>>>>> InjectorHolder code, rather than the @Repository and @Service tags?
>>>>>
>>>>> Bruce.
>>>>>
>>>>> Martijn Dashorst wrote:
>>>>>
>>>>>
>>>>>           
>>>>>> @SpringBean only works with Components. For all other uses you should
>>>>>> either call InjectorHolder.getInjector().inject(this) in your
>>>>>> constructor or use Salve.
>>>>>>
>>>>>> Martijn
>>>>>>
>>>>>> On Tue, Jun 16, 2009 at 9:26 PM, Bruce McGuire<br...@coastware.com>
>>>>>> wrote:
>>>>>>
>>>>>>
>>>>>>
>>>>>>             
>>>>>>> Hello.
>>>>>>>
>>>>>>> I have created a new small project to try to figure out how to use
>>>>>>>               
>> the
>>     
>>>>>>> SpringBean, Service, and Repository annotations with Wicket, Spring,
>>>>>>> Hibernate, Maven and Eclipse.
>>>>>>>
>>>>>>> However, I am getting an error with a user DAO that I have created.
>>>>>>>
>>>>>>> I have a service that is using the dao tagged as @Service, I have the
>>>>>>> DAO in
>>>>>>> the service tagged with @SpringBean, and the DAO code itself is
>>>>>>>               
>> tagged
>>     
>>>>>>> with
>>>>>>> @Repository.  The service that is using the DAO is getting found
>>>>>>> correctly.
>>>>>>>
>>>>>>> When I have the InjectorHolder code in the dao constructor, I get an
>>>>>>> error
>>>>>>> that says 'InjectorHolder has not been assigned an injector'
>>>>>>>
>>>>>>> When I comment out the InjectorHolder line in the dao constructor,
>>>>>>>               
>> the
>>     
>>>>>>> DAO
>>>>>>> is null, and getUserDAO throws an exception.
>>>>>>>
>>>>>>> Since I am not certain that I can attach files, I will insert the
>>>>>>> relevant
>>>>>>> code and exceptions into this email.
>>>>>>>
>>>>>>> Any pointers you can give would be greatly appreciated.
>>>>>>>
>>>>>>> Thanks very very much,
>>>>>>>
>>>>>>> Bruce.
>>>>>>>
>>>>>>> UserServiceImpl
>>>>>>> ====================> @Service("UserService")
>>>>>>> public class UserServiceImpl implements UserService
>>>>>>> {
>>>>>>>  @SpringBean
>>>>>>>  UserDAO userDAO ;
>>>>>>>
>>>>>>>  private UserDAO getUserDAO()
>>>>>>>  {
>>>>>>>     if (null =erDAO)
>>>>>>>     {
>>>>>>>         throw new RuntimeException("userDAO is null") ;
>>>>>>>     }
>>>>>>>
>>>>>>>     return(userDAO) ;
>>>>>>>  }
>>>>>>>
>>>>>>>  @Override
>>>>>>>  public List<User> getUsers()
>>>>>>>  {
>>>>>>>     return (getUserDAO().findAll());
>>>>>>>  }
>>>>>>> ====================>
>>>>>>> UserDAOHibernate
>>>>>>> ====================> @Repository("UserDAO")
>>>>>>> public class UserDAOHibernate extends GenericDAOHibernate<User,
>>>>>>>               
>> String>
>>     
>>>>>>> implements UserDAO
>>>>>>> {
>>>>>>>  private static Log log =Factory.getLog("UserDAOHibernate");
>>>>>>>
>>>>>>>  public UserDAOHibernate()
>>>>>>>  {
>>>>>>>     InjectorHolder.getInjector().inject(this);
>>>>>>>  }
>>>>>>>
>>>>>>> ...
>>>>>>> ====================>
>>>>>>> HomePage
>>>>>>> ====================> public class HomePage extends WebPage
>>>>>>> {
>>>>>>>  @SpringBean
>>>>>>>  private UserService userService ;
>>>>>>>
>>>>>>>  public HomePage(final PageParameters parameters)
>>>>>>>  {
>>>>>>>     super (parameters) ;
>>>>>>>
>>>>>>>     List<User> userList =rService.getUsers() ;
>>>>>>>
>>>>>>>     RepeatingView rv = RepeatingView("Users") ;
>>>>>>>     for(User user: userList)
>>>>>>>     {
>>>>>>>         Label userName = Label("username", user.getUsername()) ;
>>>>>>>         rv.add(userName) ;
>>>>>>>     }
>>>>>>>
>>>>>>>     this.add(rv) ;
>>>>>>>  }
>>>>>>> }
>>>>>>> ====================>
>>>>>>> CoastwareApplication
>>>>>>> ====================> public class CoastwareApplication extends
>>>>>>> WebApplication
>>>>>>> {
>>>>>>>  private ApplicationContext ctx;
>>>>>>>
>>>>>>>  @SpringBean
>>>>>>>  private UserService userService ;
>>>>>>>
>>>>>>>  protected static Log log =Factory.getLog(CoastwareApplication.class)
>>>>>>>               
>> ;
>>     
>>>>>>>  private static ISpringContextLocator CTX_LOCATOR =
>>>>>>> ISpringContextLocator()
>>>>>>>  {
>>>>>>>     public ApplicationContext getSpringContext()
>>>>>>>     {
>>>>>>>         return(CoastwareApplication.get().ctx) ;
>>>>>>>     }
>>>>>>>  } ;
>>>>>>>
>>>>>>>  public CoastwareApplication()
>>>>>>>  {
>>>>>>>  }
>>>>>>>
>>>>>>>  public void init()
>>>>>>>  {
>>>>>>>     ctx = ClassPathXmlApplicationContext("appContext.xml") ;
>>>>>>>
>>>>>>>     addComponentInstantiationListener(new
>>>>>>> SpringComponentInjector(this));
>>>>>>>
>>>>>>>     super.init() ;
>>>>>>>  }
>>>>>>>
>>>>>>>  @Override
>>>>>>>  public Session newSession(Request request, Response response)
>>>>>>>  {
>>>>>>>     return (new WebSession(request)) ;
>>>>>>>  }
>>>>>>>
>>>>>>>  public static CoastwareApplication get()
>>>>>>>  {
>>>>>>>     return ((CoastwareApplication) Application.get()) ;
>>>>>>>  }
>>>>>>>
>>>>>>>  private <T> T createProxy(Class<T> clazz)
>>>>>>>  {
>>>>>>>     return ((T) LazyInitProxyFactory.createProxy(clazz, new
>>>>>>> SpringBeanLocator(clazz, CTX_LOCATOR))) ;
>>>>>>>  }
>>>>>>>
>>>>>>>  public Class<HomePage> getHomePage()
>>>>>>>  {
>>>>>>>     return HomePage.class;
>>>>>>>  }
>>>>>>>
>>>>>>>  public UserService getUserService()
>>>>>>>  {
>>>>>>>     if (null =erService)
>>>>>>>     {
>>>>>>>         userService =ateProxy(UserService.class) ;
>>>>>>>
>>>>>>>     }
>>>>>>>     return userService;
>>>>>>>  }
>>>>>>> }
>>>>>>> ====================>
>>>>>>>
>>>>>>> Web.xml
>>>>>>> ====================>   <display-name>vProbe</display-name>
>>>>>>>
>>>>>>>  <context-param>
>>>>>>>     <param-name>contextConfigLocation</param-name>
>>>>>>>     <param-value>classpath:appContext.xml</param-value>
>>>>>>>  </context-param>
>>>>>>>
>>>>>>>  <context-param>
>>>>>>>     <param-name>configuration</param-name>
>>>>>>>     <param-value>development</param-value>
>>>>>>>  </context-param>
>>>>>>>
>>>>>>>  <listener>
>>>>>>>     <listener-class>
>>>>>>>         org.springframework.web.context.ContextLoaderListener
>>>>>>>     </listener-class>
>>>>>>>  </listener>
>>>>>>>
>>>>>>>  <filter>
>>>>>>>     <filter-name>wicketFilter</filter-name>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>               
>>  <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class>
>>     
>>>>>>>     <init-param>
>>>>>>>         <param-name>applicationClassName</param-name>
>>>>>>>
>>>>>>> <param-value>com.coastware.vProbe.CoastwareApplication</param-value>
>>>>>>>      </init-param>
>>>>>>>  </filter>
>>>>>>>
>>>>>>>  <filter>
>>>>>>>     <filter-name>opensessioninview</filter-name>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>               
>> <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
>>     
>>>>>>>  </filter>
>>>>>>>
>>>>>>>  <filter-mapping>
>>>>>>>     <filter-name>wicketFilter</filter-name>
>>>>>>>     <url-pattern>/*</url-pattern>
>>>>>>>  </filter-mapping>
>>>>>>>
>>>>>>>  <filter-mapping>
>>>>>>>     <filter-name>opensessioninview</filter-name>
>>>>>>>     <url-pattern>/*</url-pattern>
>>>>>>>  </filter-mapping>
>>>>>>> ====================>
>>>>>>> appContext.xml
>>>>>>> ====================> <?xml version="1.0" encoding="UTF-8"?>
>>>>>>> <beans
>>>>>>>  default-autowire=odetect"
>>>>>>>  xmlns=p://www.springframework.org/schema/beans"
>>>>>>>  xmlns:xsi=p://www.w3.org/2001/XMLSchema-instance"
>>>>>>>  xmlns:aop=p://www.springframework.org/schema/aop"
>>>>>>>  xmlns:tx=p://www.springframework.org/schema/tx"
>>>>>>>  xmlns:context=p://www.springframework.org/schema/context"
>>>>>>>  xsi:schemaLocation>>>
>>>>>>> http://www.springframework.org/schema/beans
>>>>>>>     http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
>>>>>>>     http://www.springframework.org/schema/aop
>>>>>>>     http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
>>>>>>>     http://www.springframework.org/schema/tx
>>>>>>>     http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
>>>>>>>     http://www.springframework.org/schema/context
>>>>>>>
>>>>>>> http://www.springframework.org/schema/context/spring-context-2.5.xsd
>>>>>>>               
>> ">
>>     
>>>>>>>  <bean id=aSource"
>>>>>>> class=.springframework.jdbc.datasource.DriverManagerDataSource">
>>>>>>>     <property name=" value="jdbc:mysql://192.168.15.128/vprobe"/>
>>>>>>>     <property name=verClassName" value="com.mysql.jdbc.Driver"/>
>>>>>>>     <property name=rname" value="vProbe"/>
>>>>>>>     <property name=sword" value="vProbe"/>
>>>>>>>  </bean>
>>>>>>>
>>>>>>>  <bean id=sionFactory"
>>>>>>>
>>>>>>>
>>>>>>>               
>> class=.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
>>     
>>>>>>>     <property name=aSource" ref="dataSource"/>
>>>>>>>
>>>>>>>     <property nameŹkagesToScan">
>>>>>>>         <list>
>>>>>>>             <value>com.coastware.vProbe.model</value>
>>>>>>>         </list>
>>>>>>>     </property>
>>>>>>>
>>>>>>>     <property name=ernateProperties">
>>>>>>>         <props>
>>>>>>>             <prop
>>>>>>> key=ernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
>>>>>>>             <prop key=ernate.show_sql">true</prop>
>>>>>>>             <prop key=ernate.format_sql">true</prop>
>>>>>>>             <prop key=ernate.use_sql_comments">true</prop>
>>>>>>>         </props>
>>>>>>>     </property>
>>>>>>>  </bean>
>>>>>>>
>>>>>>>  <context:component-scan base-package=.coastware" />
>>>>>>>
>>>>>>>  <bean id=nSessionInViewInterceptor"
>>>>>>>
>>>>>>>
>>>>>>>               
>> class=.springframework.orm.hibernate3.support.OpenSessionInViewInterceptor">
>>     
>>>>>>>     <property name=sionFactory">
>>>>>>>         <ref bean=sionFactory"/>
>>>>>>>     </property>
>>>>>>>  </bean>
>>>>>>>
>>>>>>>  <bean id=nsactionManager"
>>>>>>> class=.springframework.orm.hibernate3.HibernateTransactionManager">
>>>>>>>     <property name=sionFactory">
>>>>>>>         <ref bean=sionFactory"/>
>>>>>>>     </property>
>>>>>>>  </bean>
>>>>>>>
>>>>>>>  <bean id=ernateTemplate"
>>>>>>> class=.springframework.orm.hibernate3.HibernateTemplate">
>>>>>>>     <property name=sionFactory">
>>>>>>>         <ref bean=sionFactory"/>
>>>>>>>     </property>
>>>>>>>  </bean>
>>>>>>>
>>>>>>>  <tx:annotation-driven transaction-manager=nsactionManager"/>
>>>>>>>
>>>>>>>  <bean
>>>>>>>
>>>>>>>
>>>>>>>               
>> class=.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"/>
>>     
>>>>>>>  <bean
>>>>>>>
>>>>>>>
>>>>>>>               
>> class=.springframework.transaction.interceptor.TransactionAttributeSourceAdvisor">
>>     
>>>>>>>     <property name=nsactionInterceptor" ref="txInterceptor"/>
>>>>>>>  </bean>
>>>>>>>
>>>>>>>  <bean id=nterceptor"
>>>>>>>
>>>>>>>               
>> class=.springframework.transaction.interceptor.TransactionInterceptor">
>>     
>>>>>>>     <property name=nsactionManager" ref="transactionManager"/>
>>>>>>>     <property name=nsactionAttributeSource">
>>>>>>>         <bean
>>>>>>>
>>>>>>>
>>>>>>>               
>> class=.springframework.transaction.annotation.AnnotationTransactionAttributeSource"/>
>>     
>>>>>>>     </property>
>>>>>>>  </bean>
>>>>>>> </beans>
>>>>>>> ====================>
>>>>>>>
>>>>>>> Error with InjectorHolder line
>>>>>>> ====================> SEVERE: Exception sending context initialized
>>>>>>> event to listener instance of
>>>>>>> class org.springframework.web.context.ContextLoaderListener
>>>>>>> org.springframework.beans.factory.BeanCreationException: Error
>>>>>>>               
>> creating
>>     
>>>>>>> bean
>>>>>>> with name 'UserDAO' defined in file [C:\Program Files\Apache Software
>>>>>>> Foundation\Tomcat
>>>>>>>
>>>>>>>
>>>>>>>               
>> 6.0\webapps\vProbe\WEB-INF\classes\com\coastware\vProbe\model\dao\hibernate\UserDAOHibernate.class]:
>>     
>>>>>>> Instantiation of bean failed; nested exception is
>>>>>>> org.springframework.beans.BeanInstantiationException: Could not
>>>>>>> instantiate
>>>>>>> bean class
>>>>>>>               
>> [com.coastware.vProbe.model.dao.hibernate.UserDAOHibernate]:
>>     
>>>>>>> Constructor threw exception; nested exception is
>>>>>>> java.lang.IllegalStateException: InjectorHolder has not been assigned
>>>>>>> an
>>>>>>> injector. Use InjectorHolder.setInjector() to assign an injector. In
>>>>>>> most
>>>>>>> cases this should be done once inside SpringWebApplication subclass's
>>>>>>> init()
>>>>>>> method.
>>>>>>>  at
>>>>>>>
>>>>>>>
>>>>>>>               
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:883)
>>     
>>>>>>>  at
>>>>>>>
>>>>>>>
>>>>>>>               
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:839)
>>     
>>>>>>>  at
>>>>>>>
>>>>>>>
>>>>>>>               
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:440)
>>     
>>>>>>>  at
>>>>>>>
>>>>>>>
>>>>>>>               
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
>>     
>>>>>>>  at java.security.AccessController.doPrivileged(Native Method)
>>>>>>>  at
>>>>>>>
>>>>>>>
>>>>>>>               
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
>>     
>>>>>>>  at
>>>>>>>
>>>>>>>
>>>>>>>               
>> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
>>     
>>>>>>>  at
>>>>>>>
>>>>>>>
>>>>>>>               
>> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
>>     
>>>>>>>  at
>>>>>>>
>>>>>>>
>>>>>>>               
>> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
>>     
>>>>>>>  at
>>>>>>>
>>>>>>>
>>>>>>>               
>> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
>>     
>>>>>>>  at
>>>>>>>
>>>>>>>
>>>>>>>               
>> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
>>     
>>>>>>>  at
>>>>>>>
>>>>>>>
>>>>>>>               
>> org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429)
>>     
>>>>>>>  at
>>>>>>>
>>>>>>>
>>>>>>>               
>> org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728)
>>     
>>>>>>>  at
>>>>>>>
>>>>>>>
>>>>>>>               
>> org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380)
>>     
>>>>>>>  at
>>>>>>>
>>>>>>>
>>>>>>>               
>> org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255)
>>     
>>>>>>>  at
>>>>>>>
>>>>>>>
>>>>>>>               
>> org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199)
>>     
>>>>>>>  at
>>>>>>>
>>>>>>>
>>>>>>>               
>> org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45)
>>     
>>>>>>>  at
>>>>>>>
>>>>>>>
>>>>>>>               
>> org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3843)
>>     
>>>>>>>  at
>>>>>>>
>>>>>>>
>>>>>>>               
>> org.apache.catalina.core.StandardContext.start(StandardContext.java:4342)
>>     
>>>>>>>  at
>>>>>>>
>>>>>>>
>>>>>>>               
>> org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
>>     
>>>>>>>  at
>>>>>>>
>>>>>>>               
>> org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
>>     
>>>>>>>  at
>>>>>>> org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
>>>>>>>  at
>>>>>>> org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:830)
>>>>>>>  at
>>>>>>>
>>>>>>>               
>> org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:719)
>>     
>>>>>>>  at
>>>>>>>
>>>>>>>               
>> org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:490)
>>     
>>>>>>>  at
>>>>>>>               
>> org.apache.catalina.startup.HostConfig.start(HostConfig.java:1149)
>>     
>>>>>>>  at
>>>>>>>
>>>>>>>
>>>>>>>               
>> org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
>>     
>>>>>>>  at
>>>>>>>
>>>>>>>
>>>>>>>               
>> org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
>>     
>>>>>>>  at
>>>>>>> org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
>>>>>>>  at
>>>>>>>               
>> org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
>>     
>>>>>>>  at
>>>>>>> org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
>>>>>>>  at
>>>>>>>
>>>>>>>               
>> org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
>>     
>>>>>>>  at
>>>>>>>
>>>>>>>
>>>>>>>               
>> org.apache.catalina.core.StandardService.start(StandardService.java:516)
>>     
>>>>>>>  at
>>>>>>>
>>>>>>>               
>> org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
>>     
>>>>>>>  at org.apache.catalina.startup.Catalina.start(Catalina.java:578)
>>>>>>>  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.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
>>>>>>>  at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
>>>>>>> Caused by: org.springframework.beans.BeanInstantiationException:
>>>>>>>               
>> Could
>>     
>>>>>>> not
>>>>>>> instantiate bean class
>>>>>>> [com.coastware.vProbe.model.dao.hibernate.UserDAOHibernate]:
>>>>>>> Constructor
>>>>>>> threw exception; nested exception is java.lang.IllegalStateException:
>>>>>>> InjectorHolder has not been assigned an injector. Use
>>>>>>> InjectorHolder.setInjector() to assign an injector. In most cases
>>>>>>>               
>> this
>>     
>>>>>>> should be done once inside SpringWebApplication subclass's init()
>>>>>>> method.
>>>>>>>  at
>>>>>>>
>>>>>>>
>>>>>>>               
>> org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:115)
>>     
>>>>>>>  at
>>>>>>>
>>>>>>>
>>>>>>>               
>> org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:61)
>>     
>>>>>>>  at
>>>>>>>
>>>>>>>
>>>>>>>               
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:877)
>>     
>>>>>>>  ... 40 more
>>>>>>> Caused by: java.lang.IllegalStateException: InjectorHolder has not
>>>>>>>               
>> been
>>     
>>>>>>> assigned an injector. Use InjectorHolder.setInjector() to assign an
>>>>>>> injector. In most cases this should be done once inside
>>>>>>> SpringWebApplication
>>>>>>> subclass's init() method.
>>>>>>>  at
>>>>>>>
>>>>>>>
>>>>>>>               
>> org.apache.wicket.injection.web.InjectorHolder.getInjector(InjectorHolder.java:64)
>>     
>>>>>>>  at
>>>>>>>
>>>>>>>
>>>>>>>               
>> com.coastware.vProbe.model.dao.hibernate.UserDAOHibernate.<init>(UserDAOHibernate.java:26)
>>     
>>>>>>>  at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
>>>>>>> Method)
>>>>>>>  at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown
>>>>>>> Source)
>>>>>>>  at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown
>>>>>>> Source)
>>>>>>>  at java.lang.reflect.Constructor.newInstance(Unknown Source)
>>>>>>>  at
>>>>>>>
>>>>>>>
>>>>>>>               
>> org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:100)
>>     
>>>>>>>  ... 42 more
>>>>>>> ====================>
>>>>>>> Error when InjectorHolder line is commented out.
>>>>>>> ====================>
>>>>>>> java.lang.RuntimeException: userDAO is null at
>>>>>>>
>>>>>>>
>>>>>>>               
>> com.coastware.vProbe.service.UserServiceImpl.getUserDAO(UserServiceImpl.java:90)
>>     
>>>>>>> at
>>>>>>>
>>>>>>>
>>>>>>>               
>> com.coastware.vProbe.service.UserServiceImpl.getUsers(UserServiceImpl.java:68)
>>     
>>>>>>> at java.lang.reflect.Method.invoke(Unknown Source) at
>>>>>>>
>>>>>>>
>>>>>>>               
>> org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
>>     
>>>>>>> at
>>>>>>>
>>>>>>>
>>>>>>>               
>> org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:198)
>>     
>>>>>>> at $Proxy15.getUsers(Unknown Source) at
>>>>>>> java.lang.reflect.Method.invoke(Unknown Source) at
>>>>>>>
>>>>>>>
>>>>>>>               
>> org.apache.wicket.proxy.LazyInitProxyFactory$JdkHandler.invoke(LazyInitProxyFactory.java:416)
>>     
>>>>>>> at org.apache.wicket.proxy.$Proxy16.getUsers(Unknown Source) at
>>>>>>> com.coastware.vProbe.HomePage.<init>(HomePage.java:27) at
>>>>>>> java.lang.reflect.Constructor.newInstance(Unknown Source) at
>>>>>>>
>>>>>>>
>>>>>>>               
>> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:147)
>>     
>>>>>>> at
>>>>>>>
>>>>>>>
>>>>>>>               
>> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:66)
>>     
>>>>>>> at
>>>>>>>
>>>>>>>
>>>>>>>               
>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.newPage(BookmarkablePageRequestTarget.java:272)
>>     
>>>>>>> at
>>>>>>>
>>>>>>>
>>>>>>>               
>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.getPage(BookmarkablePageRequestTarget.java:293)
>>     
>>>>>>> at
>>>>>>>
>>>>>>>
>>>>>>>               
>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.processEvents(BookmarkablePageRequestTarget.java:210)
>>     
>>>>>>> at
>>>>>>>
>>>>>>>
>>>>>>>               
>> org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:91)
>>     
>>>>>>> at
>>>>>>>
>>>>>>>
>>>>>>>               
>> org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1220)
>>     
>>>>>>> at org.apache.wicket.RequestCycle.step(RequestCycle.java:1297) at
>>>>>>> org.apache.wicket.RequestCycle.steps(RequestCycle.java:1399) at
>>>>>>> org.apache.wicket.RequestCycle.request(RequestCycle.java:529) at
>>>>>>>
>>>>>>>               
>> org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:356)
>>     
>>>>>>> at
>>>>>>>
>>>>>>>
>>>>>>>               
>> org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:201)
>>     
>>>>>>> at
>>>>>>>
>>>>>>>
>>>>>>>               
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
>>     
>>>>>>> at
>>>>>>>
>>>>>>>
>>>>>>>               
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>>     
>>>>>>> at
>>>>>>>
>>>>>>>
>>>>>>>               
>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
>>     
>>>>>>> at
>>>>>>>
>>>>>>>
>>>>>>>               
>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
>>     
>>>>>>> at
>>>>>>>
>>>>>>>
>>>>>>>               
>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
>>     
>>>>>>> at
>>>>>>>
>>>>>>>
>>>>>>>               
>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
>>     
>>>>>>> at
>>>>>>>
>>>>>>>
>>>>>>>               
>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
>>     
>>>>>>> at
>>>>>>>
>>>>>>>
>>>>>>>               
>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
>>     
>>>>>>> at
>>>>>>>
>>>>>>>
>>>>>>>               
>> org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:857)
>>     
>>>>>>> at
>>>>>>>
>>>>>>>
>>>>>>>               
>> org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:565)
>>     
>>>>>>> at
>>>>>>>
>>>>>>>               
>> org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1509)
>>     
>>>>>>> at java.lang.Thread.run(Unknown Source)
>>>>>>>
>>>>>>> Complete stack:
>>>>>>>
>>>>>>> org.apache.wicket.WicketRuntimeException: Can't instantiate page
>>>>>>>               
>> using
>>     
>>>>>>> constructor public
>>>>>>> com.coastware.vProbe.HomePage(org.apache.wicket.PageParameters) and
>>>>>>> argument
>>>>>>> at
>>>>>>>
>>>>>>>
>>>>>>>               
>> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:168)
>>     
>>>>>>> at
>>>>>>>
>>>>>>>
>>>>>>>               
>> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:66)
>>     
>>>>>>> at
>>>>>>>
>>>>>>>
>>>>>>>               
>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.newPage(BookmarkablePageRequestTarget.java:272)
>>     
>>>>>>> at
>>>>>>>
>>>>>>>
>>>>>>>               
>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.getPage(BookmarkablePageRequestTarget.java:293)
>>     
>>>>>>> at
>>>>>>>
>>>>>>>
>>>>>>>               
>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.processEvents(BookmarkablePageRequestTarget.java:210)
>>     
>>>>>>> at
>>>>>>>
>>>>>>>
>>>>>>>               
>> org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:91)
>>     
>>>>>>> at
>>>>>>>
>>>>>>>
>>>>>>>               
>> org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1220)
>>     
>>>>>>> at org.apache.wicket.RequestCycle.step(RequestCycle.java:1297) at
>>>>>>> org.apache.wicket.RequestCycle.steps(RequestCycle.java:1399) at
>>>>>>> org.apache.wicket.RequestCycle.request(RequestCycle.java:529) at
>>>>>>>
>>>>>>>
>>>>>>>               
>> org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:356)
>>     
>>>>>>> java.lang.reflect.InvocationTargetException at
>>>>>>> sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
>>>>>>> at
>>>>>>> sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
>>>>>>> at
>>>>>>> java.lang.reflect.Constructor.newInstance(Unknown Source) at
>>>>>>>
>>>>>>>
>>>>>>>               
>> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:147)
>>     
>>>>>>> at
>>>>>>>
>>>>>>>
>>>>>>>               
>> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:66)
>>     
>>>>>>> at
>>>>>>>
>>>>>>>
>>>>>>>               
>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.newPage(BookmarkablePageRequestTarget.java:272)
>>     
>>>>>>> at
>>>>>>>
>>>>>>>
>>>>>>>               
>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.getPage(BookmarkablePageRequestTarget.java:293)
>>     
>>>>>>> at
>>>>>>>
>>>>>>>
>>>>>>>               
>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.processEvents(BookmarkablePageRequestTarget.java:210)
>>     
>>>>>>> at
>>>>>>>
>>>>>>>
>>>>>>>               
>> org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:91)
>>     
>>>>>>> at
>>>>>>>
>>>>>>>
>>>>>>>               
>> org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1220)
>>     
>>>>>>> at org.apache.wicket.RequestCycle.step(RequestCycle.java:1297) at
>>>>>>> org.apache.wicket.RequestCycle.steps(RequestCycle.java:1399) at
>>>>>>> org.apache.wicket.RequestCycle.request(RequestCycle.java:529) at
>>>>>>>
>>>>>>>
>>>>>>>               
>> org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:356)
>>     
>>>>>>> ====================>
>>>>>>>
>>>>>>> ---------------------------------------------------------------------
>>>>>>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>>>>>>> For additional commands, e-mail: users-help@wicket.apache.org
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>               
>>>>>>
>>>>>>
>>>>>>             
>>>>         
>
>
>
>   

Re: Re: Re: DAO not getting injected, using springbean

Posted by Vasu Srinivasan <va...@gmail.com>.
Using annotations, I have only one line in the spring's
applicationContext.xml --

<context:component-scan base-package="packagename" />

Services are tagged with @Service, Daos are tagged with
@Component("xxxDaoImpl"), Wicket web pages have @SpringBean
(name="<serviceName>")

Within the ServiceImpl, the Daos are tagged with @Autowired.

No other xml config, setter, getter for daos etc.

Works like a charm.

2009/6/16 James Carman <jc...@carmanconsulting.com>

> You are correct.  You should only use @SpringBean in your wicket-related
> code (components/pages).  Let Spring wire the rest together, however you
> want to configure it to do that (with annotations or xml).  You can use
> @Autowired to inject your DAOs into your Services.  You just have to make
> sure you set up your Spring context so that it takes care of that.
>
> On Tue, Jun 16, 2009 at 4:36 PM, Bruce McGuire <br...@coastware.com>
> wrote:
>
> > Hello James.
> >
> > So I have completely missed the point of the Repository, Service and
> > SpringBean annotations?  I was under the impression that the idea was to
> > avoid using a lot of xml in my context files.
> >
> > If I am understanding correctly, what you and Martijn are saying is the
> > following:
> > Tag the dao and service classes with Repository and Service, and in
> wicket
> > code, tag any use of them with SpringBean. However, in the service
> classes,
> > use the normal xml injection method and get/set to get the dao into the
> > service class.
> >
> > Is this a correct interpretation?
> >
> > Thanks,
> >
> > Bruce.
> >
> > James Carman wrote:
> >
> >> You shouldn't use @SpringBean in your spring-managed beans, only in
> >> your Wicket code.  You don't want view-specific code in your "domain"
> >> code.
> >>
> >> On Tue, Jun 16, 2009 at 4:17 PM, Bruce McGuire <br...@coastware.com>
> >> wrote:
> >>
> >>
> >>> Hi Martijn.
> >>>
> >>> Thanks for the quick response.
> >>>
> >>> Are you saying that the dao and the service should have the
> >>> InjectorHolder code, rather than the @Repository and @Service tags?
> >>>
> >>> Bruce.
> >>>
> >>> Martijn Dashorst wrote:
> >>>
> >>>
> >>>> @SpringBean only works with Components. For all other uses you should
> >>>> either call InjectorHolder.getInjector().inject(this) in your
> >>>> constructor or use Salve.
> >>>>
> >>>> Martijn
> >>>>
> >>>> On Tue, Jun 16, 2009 at 9:26 PM, Bruce McGuire<br...@coastware.com>
> >>>> wrote:
> >>>>
> >>>>
> >>>>
> >>>>> Hello.
> >>>>>
> >>>>> I have created a new small project to try to figure out how to use
> the
> >>>>> SpringBean, Service, and Repository annotations with Wicket, Spring,
> >>>>> Hibernate, Maven and Eclipse.
> >>>>>
> >>>>> However, I am getting an error with a user DAO that I have created.
> >>>>>
> >>>>> I have a service that is using the dao tagged as @Service, I have the
> >>>>> DAO in
> >>>>> the service tagged with @SpringBean, and the DAO code itself is
> tagged
> >>>>> with
> >>>>> @Repository.  The service that is using the DAO is getting found
> >>>>> correctly.
> >>>>>
> >>>>> When I have the InjectorHolder code in the dao constructor, I get an
> >>>>> error
> >>>>> that says 'InjectorHolder has not been assigned an injector'
> >>>>>
> >>>>> When I comment out the InjectorHolder line in the dao constructor,
> the
> >>>>> DAO
> >>>>> is null, and getUserDAO throws an exception.
> >>>>>
> >>>>> Since I am not certain that I can attach files, I will insert the
> >>>>> relevant
> >>>>> code and exceptions into this email.
> >>>>>
> >>>>> Any pointers you can give would be greatly appreciated.
> >>>>>
> >>>>> Thanks very very much,
> >>>>>
> >>>>> Bruce.
> >>>>>
> >>>>> UserServiceImpl
> >>>>> ====================> @Service("UserService")
> >>>>> public class UserServiceImpl implements UserService
> >>>>> {
> >>>>>  @SpringBean
> >>>>>  UserDAO userDAO ;
> >>>>>
> >>>>>  private UserDAO getUserDAO()
> >>>>>  {
> >>>>>     if (null =erDAO)
> >>>>>     {
> >>>>>         throw new RuntimeException("userDAO is null") ;
> >>>>>     }
> >>>>>
> >>>>>     return(userDAO) ;
> >>>>>  }
> >>>>>
> >>>>>  @Override
> >>>>>  public List<User> getUsers()
> >>>>>  {
> >>>>>     return (getUserDAO().findAll());
> >>>>>  }
> >>>>> ====================>
> >>>>> UserDAOHibernate
> >>>>> ====================> @Repository("UserDAO")
> >>>>> public class UserDAOHibernate extends GenericDAOHibernate<User,
> String>
> >>>>> implements UserDAO
> >>>>> {
> >>>>>  private static Log log =Factory.getLog("UserDAOHibernate");
> >>>>>
> >>>>>  public UserDAOHibernate()
> >>>>>  {
> >>>>>     InjectorHolder.getInjector().inject(this);
> >>>>>  }
> >>>>>
> >>>>> ...
> >>>>> ====================>
> >>>>> HomePage
> >>>>> ====================> public class HomePage extends WebPage
> >>>>> {
> >>>>>  @SpringBean
> >>>>>  private UserService userService ;
> >>>>>
> >>>>>  public HomePage(final PageParameters parameters)
> >>>>>  {
> >>>>>     super (parameters) ;
> >>>>>
> >>>>>     List<User> userList =rService.getUsers() ;
> >>>>>
> >>>>>     RepeatingView rv = RepeatingView("Users") ;
> >>>>>     for(User user: userList)
> >>>>>     {
> >>>>>         Label userName = Label("username", user.getUsername()) ;
> >>>>>         rv.add(userName) ;
> >>>>>     }
> >>>>>
> >>>>>     this.add(rv) ;
> >>>>>  }
> >>>>> }
> >>>>> ====================>
> >>>>> CoastwareApplication
> >>>>> ====================> public class CoastwareApplication extends
> >>>>> WebApplication
> >>>>> {
> >>>>>  private ApplicationContext ctx;
> >>>>>
> >>>>>  @SpringBean
> >>>>>  private UserService userService ;
> >>>>>
> >>>>>  protected static Log log =Factory.getLog(CoastwareApplication.class)
> ;
> >>>>>
> >>>>>  private static ISpringContextLocator CTX_LOCATOR =
> >>>>> ISpringContextLocator()
> >>>>>  {
> >>>>>     public ApplicationContext getSpringContext()
> >>>>>     {
> >>>>>         return(CoastwareApplication.get().ctx) ;
> >>>>>     }
> >>>>>  } ;
> >>>>>
> >>>>>  public CoastwareApplication()
> >>>>>  {
> >>>>>  }
> >>>>>
> >>>>>  public void init()
> >>>>>  {
> >>>>>     ctx = ClassPathXmlApplicationContext("appContext.xml") ;
> >>>>>
> >>>>>     addComponentInstantiationListener(new
> >>>>> SpringComponentInjector(this));
> >>>>>
> >>>>>     super.init() ;
> >>>>>  }
> >>>>>
> >>>>>  @Override
> >>>>>  public Session newSession(Request request, Response response)
> >>>>>  {
> >>>>>     return (new WebSession(request)) ;
> >>>>>  }
> >>>>>
> >>>>>  public static CoastwareApplication get()
> >>>>>  {
> >>>>>     return ((CoastwareApplication) Application.get()) ;
> >>>>>  }
> >>>>>
> >>>>>  private <T> T createProxy(Class<T> clazz)
> >>>>>  {
> >>>>>     return ((T) LazyInitProxyFactory.createProxy(clazz, new
> >>>>> SpringBeanLocator(clazz, CTX_LOCATOR))) ;
> >>>>>  }
> >>>>>
> >>>>>  public Class<HomePage> getHomePage()
> >>>>>  {
> >>>>>     return HomePage.class;
> >>>>>  }
> >>>>>
> >>>>>  public UserService getUserService()
> >>>>>  {
> >>>>>     if (null =erService)
> >>>>>     {
> >>>>>         userService =ateProxy(UserService.class) ;
> >>>>>
> >>>>>     }
> >>>>>     return userService;
> >>>>>  }
> >>>>> }
> >>>>> ====================>
> >>>>>
> >>>>> Web.xml
> >>>>> ====================>   <display-name>vProbe</display-name>
> >>>>>
> >>>>>  <context-param>
> >>>>>     <param-name>contextConfigLocation</param-name>
> >>>>>     <param-value>classpath:appContext.xml</param-value>
> >>>>>  </context-param>
> >>>>>
> >>>>>  <context-param>
> >>>>>     <param-name>configuration</param-name>
> >>>>>     <param-value>development</param-value>
> >>>>>  </context-param>
> >>>>>
> >>>>>  <listener>
> >>>>>     <listener-class>
> >>>>>         org.springframework.web.context.ContextLoaderListener
> >>>>>     </listener-class>
> >>>>>  </listener>
> >>>>>
> >>>>>  <filter>
> >>>>>     <filter-name>wicketFilter</filter-name>
> >>>>>
> >>>>>
> >>>>>
>  <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class>
> >>>>>     <init-param>
> >>>>>         <param-name>applicationClassName</param-name>
> >>>>>
> >>>>> <param-value>com.coastware.vProbe.CoastwareApplication</param-value>
> >>>>>      </init-param>
> >>>>>  </filter>
> >>>>>
> >>>>>  <filter>
> >>>>>     <filter-name>opensessioninview</filter-name>
> >>>>>
> >>>>>
> >>>>>
> <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
> >>>>>  </filter>
> >>>>>
> >>>>>  <filter-mapping>
> >>>>>     <filter-name>wicketFilter</filter-name>
> >>>>>     <url-pattern>/*</url-pattern>
> >>>>>  </filter-mapping>
> >>>>>
> >>>>>  <filter-mapping>
> >>>>>     <filter-name>opensessioninview</filter-name>
> >>>>>     <url-pattern>/*</url-pattern>
> >>>>>  </filter-mapping>
> >>>>> ====================>
> >>>>> appContext.xml
> >>>>> ====================> <?xml version="1.0" encoding="UTF-8"?>
> >>>>> <beans
> >>>>>  default-autowire=odetect"
> >>>>>  xmlns=p://www.springframework.org/schema/beans"
> >>>>>  xmlns:xsi=p://www.w3.org/2001/XMLSchema-instance"
> >>>>>  xmlns:aop=p://www.springframework.org/schema/aop"
> >>>>>  xmlns:tx=p://www.springframework.org/schema/tx"
> >>>>>  xmlns:context=p://www.springframework.org/schema/context"
> >>>>>  xsi:schemaLocation>>>
> >>>>> http://www.springframework.org/schema/beans
> >>>>>     http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
> >>>>>     http://www.springframework.org/schema/aop
> >>>>>     http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
> >>>>>     http://www.springframework.org/schema/tx
> >>>>>     http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
> >>>>>     http://www.springframework.org/schema/context
> >>>>>
> >>>>> http://www.springframework.org/schema/context/spring-context-2.5.xsd
> ">
> >>>>>
> >>>>>  <bean id=aSource"
> >>>>> class=.springframework.jdbc.datasource.DriverManagerDataSource">
> >>>>>     <property name=" value="jdbc:mysql://192.168.15.128/vprobe"/>
> >>>>>     <property name=verClassName" value="com.mysql.jdbc.Driver"/>
> >>>>>     <property name=rname" value="vProbe"/>
> >>>>>     <property name=sword" value="vProbe"/>
> >>>>>  </bean>
> >>>>>
> >>>>>  <bean id=sionFactory"
> >>>>>
> >>>>>
> class=.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
> >>>>>     <property name=aSource" ref="dataSource"/>
> >>>>>
> >>>>>     <property nameŹkagesToScan">
> >>>>>         <list>
> >>>>>             <value>com.coastware.vProbe.model</value>
> >>>>>         </list>
> >>>>>     </property>
> >>>>>
> >>>>>     <property name=ernateProperties">
> >>>>>         <props>
> >>>>>             <prop
> >>>>> key=ernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
> >>>>>             <prop key=ernate.show_sql">true</prop>
> >>>>>             <prop key=ernate.format_sql">true</prop>
> >>>>>             <prop key=ernate.use_sql_comments">true</prop>
> >>>>>         </props>
> >>>>>     </property>
> >>>>>  </bean>
> >>>>>
> >>>>>  <context:component-scan base-package=.coastware" />
> >>>>>
> >>>>>  <bean id=nSessionInViewInterceptor"
> >>>>>
> >>>>>
> class=.springframework.orm.hibernate3.support.OpenSessionInViewInterceptor">
> >>>>>     <property name=sionFactory">
> >>>>>         <ref bean=sionFactory"/>
> >>>>>     </property>
> >>>>>  </bean>
> >>>>>
> >>>>>  <bean id=nsactionManager"
> >>>>> class=.springframework.orm.hibernate3.HibernateTransactionManager">
> >>>>>     <property name=sionFactory">
> >>>>>         <ref bean=sionFactory"/>
> >>>>>     </property>
> >>>>>  </bean>
> >>>>>
> >>>>>  <bean id=ernateTemplate"
> >>>>> class=.springframework.orm.hibernate3.HibernateTemplate">
> >>>>>     <property name=sionFactory">
> >>>>>         <ref bean=sionFactory"/>
> >>>>>     </property>
> >>>>>  </bean>
> >>>>>
> >>>>>  <tx:annotation-driven transaction-manager=nsactionManager"/>
> >>>>>
> >>>>>  <bean
> >>>>>
> >>>>>
> class=.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"/>
> >>>>>
> >>>>>  <bean
> >>>>>
> >>>>>
> class=.springframework.transaction.interceptor.TransactionAttributeSourceAdvisor">
> >>>>>     <property name=nsactionInterceptor" ref="txInterceptor"/>
> >>>>>  </bean>
> >>>>>
> >>>>>  <bean id=nterceptor"
> >>>>>
> class=.springframework.transaction.interceptor.TransactionInterceptor">
> >>>>>     <property name=nsactionManager" ref="transactionManager"/>
> >>>>>     <property name=nsactionAttributeSource">
> >>>>>         <bean
> >>>>>
> >>>>>
> class=.springframework.transaction.annotation.AnnotationTransactionAttributeSource"/>
> >>>>>
> >>>>>     </property>
> >>>>>  </bean>
> >>>>> </beans>
> >>>>> ====================>
> >>>>>
> >>>>> Error with InjectorHolder line
> >>>>> ====================> SEVERE: Exception sending context initialized
> >>>>> event to listener instance of
> >>>>> class org.springframework.web.context.ContextLoaderListener
> >>>>> org.springframework.beans.factory.BeanCreationException: Error
> creating
> >>>>> bean
> >>>>> with name 'UserDAO' defined in file [C:\Program Files\Apache Software
> >>>>> Foundation\Tomcat
> >>>>>
> >>>>>
> 6.0\webapps\vProbe\WEB-INF\classes\com\coastware\vProbe\model\dao\hibernate\UserDAOHibernate.class]:
> >>>>> Instantiation of bean failed; nested exception is
> >>>>> org.springframework.beans.BeanInstantiationException: Could not
> >>>>> instantiate
> >>>>> bean class
> [com.coastware.vProbe.model.dao.hibernate.UserDAOHibernate]:
> >>>>> Constructor threw exception; nested exception is
> >>>>> java.lang.IllegalStateException: InjectorHolder has not been assigned
> >>>>> an
> >>>>> injector. Use InjectorHolder.setInjector() to assign an injector. In
> >>>>> most
> >>>>> cases this should be done once inside SpringWebApplication subclass's
> >>>>> init()
> >>>>> method.
> >>>>>  at
> >>>>>
> >>>>>
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:883)
> >>>>>  at
> >>>>>
> >>>>>
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:839)
> >>>>>  at
> >>>>>
> >>>>>
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:440)
> >>>>>  at
> >>>>>
> >>>>>
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
> >>>>>  at java.security.AccessController.doPrivileged(Native Method)
> >>>>>  at
> >>>>>
> >>>>>
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
> >>>>>  at
> >>>>>
> >>>>>
> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
> >>>>>  at
> >>>>>
> >>>>>
> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
> >>>>>  at
> >>>>>
> >>>>>
> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
> >>>>>  at
> >>>>>
> >>>>>
> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
> >>>>>  at
> >>>>>
> >>>>>
> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
> >>>>>  at
> >>>>>
> >>>>>
> org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429)
> >>>>>  at
> >>>>>
> >>>>>
> org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728)
> >>>>>  at
> >>>>>
> >>>>>
> org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380)
> >>>>>  at
> >>>>>
> >>>>>
> org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255)
> >>>>>  at
> >>>>>
> >>>>>
> org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199)
> >>>>>  at
> >>>>>
> >>>>>
> org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45)
> >>>>>  at
> >>>>>
> >>>>>
> org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3843)
> >>>>>  at
> >>>>>
> >>>>>
> org.apache.catalina.core.StandardContext.start(StandardContext.java:4342)
> >>>>>  at
> >>>>>
> >>>>>
> org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
> >>>>>  at
> >>>>>
> org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
> >>>>>  at
> >>>>> org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
> >>>>>  at
> >>>>> org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:830)
> >>>>>  at
> >>>>>
> org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:719)
> >>>>>  at
> >>>>>
> org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:490)
> >>>>>  at
> org.apache.catalina.startup.HostConfig.start(HostConfig.java:1149)
> >>>>>  at
> >>>>>
> >>>>>
> org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
> >>>>>  at
> >>>>>
> >>>>>
> org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
> >>>>>  at
> >>>>> org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
> >>>>>  at
> org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
> >>>>>  at
> >>>>> org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
> >>>>>  at
> >>>>>
> org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
> >>>>>  at
> >>>>>
> >>>>>
> org.apache.catalina.core.StandardService.start(StandardService.java:516)
> >>>>>  at
> >>>>>
> org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
> >>>>>  at org.apache.catalina.startup.Catalina.start(Catalina.java:578)
> >>>>>  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.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
> >>>>>  at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
> >>>>> Caused by: org.springframework.beans.BeanInstantiationException:
> Could
> >>>>> not
> >>>>> instantiate bean class
> >>>>> [com.coastware.vProbe.model.dao.hibernate.UserDAOHibernate]:
> >>>>> Constructor
> >>>>> threw exception; nested exception is java.lang.IllegalStateException:
> >>>>> InjectorHolder has not been assigned an injector. Use
> >>>>> InjectorHolder.setInjector() to assign an injector. In most cases
> this
> >>>>> should be done once inside SpringWebApplication subclass's init()
> >>>>> method.
> >>>>>  at
> >>>>>
> >>>>>
> org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:115)
> >>>>>  at
> >>>>>
> >>>>>
> org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:61)
> >>>>>  at
> >>>>>
> >>>>>
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:877)
> >>>>>  ... 40 more
> >>>>> Caused by: java.lang.IllegalStateException: InjectorHolder has not
> been
> >>>>> assigned an injector. Use InjectorHolder.setInjector() to assign an
> >>>>> injector. In most cases this should be done once inside
> >>>>> SpringWebApplication
> >>>>> subclass's init() method.
> >>>>>  at
> >>>>>
> >>>>>
> org.apache.wicket.injection.web.InjectorHolder.getInjector(InjectorHolder.java:64)
> >>>>>  at
> >>>>>
> >>>>>
> com.coastware.vProbe.model.dao.hibernate.UserDAOHibernate.<init>(UserDAOHibernate.java:26)
> >>>>>  at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
> >>>>> Method)
> >>>>>  at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown
> >>>>> Source)
> >>>>>  at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown
> >>>>> Source)
> >>>>>  at java.lang.reflect.Constructor.newInstance(Unknown Source)
> >>>>>  at
> >>>>>
> >>>>>
> org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:100)
> >>>>>  ... 42 more
> >>>>> ====================>
> >>>>> Error when InjectorHolder line is commented out.
> >>>>> ====================>
> >>>>> java.lang.RuntimeException: userDAO is null at
> >>>>>
> >>>>>
> com.coastware.vProbe.service.UserServiceImpl.getUserDAO(UserServiceImpl.java:90)
> >>>>> at
> >>>>>
> >>>>>
> com.coastware.vProbe.service.UserServiceImpl.getUsers(UserServiceImpl.java:68)
> >>>>> at java.lang.reflect.Method.invoke(Unknown Source) at
> >>>>>
> >>>>>
> org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
> >>>>> at
> >>>>>
> >>>>>
> org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:198)
> >>>>> at $Proxy15.getUsers(Unknown Source) at
> >>>>> java.lang.reflect.Method.invoke(Unknown Source) at
> >>>>>
> >>>>>
> org.apache.wicket.proxy.LazyInitProxyFactory$JdkHandler.invoke(LazyInitProxyFactory.java:416)
> >>>>> at org.apache.wicket.proxy.$Proxy16.getUsers(Unknown Source) at
> >>>>> com.coastware.vProbe.HomePage.<init>(HomePage.java:27) at
> >>>>> java.lang.reflect.Constructor.newInstance(Unknown Source) at
> >>>>>
> >>>>>
> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:147)
> >>>>> at
> >>>>>
> >>>>>
> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:66)
> >>>>> at
> >>>>>
> >>>>>
> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.newPage(BookmarkablePageRequestTarget.java:272)
> >>>>> at
> >>>>>
> >>>>>
> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.getPage(BookmarkablePageRequestTarget.java:293)
> >>>>> at
> >>>>>
> >>>>>
> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.processEvents(BookmarkablePageRequestTarget.java:210)
> >>>>> at
> >>>>>
> >>>>>
> org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:91)
> >>>>> at
> >>>>>
> >>>>>
> org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1220)
> >>>>> at org.apache.wicket.RequestCycle.step(RequestCycle.java:1297) at
> >>>>> org.apache.wicket.RequestCycle.steps(RequestCycle.java:1399) at
> >>>>> org.apache.wicket.RequestCycle.request(RequestCycle.java:529) at
> >>>>>
> org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:356)
> >>>>> at
> >>>>>
> >>>>>
> org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:201)
> >>>>> at
> >>>>>
> >>>>>
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
> >>>>> at
> >>>>>
> >>>>>
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> >>>>> at
> >>>>>
> >>>>>
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
> >>>>> at
> >>>>>
> >>>>>
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
> >>>>> at
> >>>>>
> >>>>>
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
> >>>>> at
> >>>>>
> >>>>>
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
> >>>>> at
> >>>>>
> >>>>>
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
> >>>>> at
> >>>>>
> >>>>>
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
> >>>>> at
> >>>>>
> >>>>>
> org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:857)
> >>>>> at
> >>>>>
> >>>>>
> org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:565)
> >>>>> at
> >>>>>
> org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1509)
> >>>>> at java.lang.Thread.run(Unknown Source)
> >>>>>
> >>>>> Complete stack:
> >>>>>
> >>>>> org.apache.wicket.WicketRuntimeException: Can't instantiate page
> using
> >>>>> constructor public
> >>>>> com.coastware.vProbe.HomePage(org.apache.wicket.PageParameters) and
> >>>>> argument
> >>>>> at
> >>>>>
> >>>>>
> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:168)
> >>>>> at
> >>>>>
> >>>>>
> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:66)
> >>>>> at
> >>>>>
> >>>>>
> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.newPage(BookmarkablePageRequestTarget.java:272)
> >>>>> at
> >>>>>
> >>>>>
> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.getPage(BookmarkablePageRequestTarget.java:293)
> >>>>> at
> >>>>>
> >>>>>
> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.processEvents(BookmarkablePageRequestTarget.java:210)
> >>>>> at
> >>>>>
> >>>>>
> org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:91)
> >>>>> at
> >>>>>
> >>>>>
> org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1220)
> >>>>> at org.apache.wicket.RequestCycle.step(RequestCycle.java:1297) at
> >>>>> org.apache.wicket.RequestCycle.steps(RequestCycle.java:1399) at
> >>>>> org.apache.wicket.RequestCycle.request(RequestCycle.java:529) at
> >>>>>
> >>>>>
> org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:356)
> >>>>>
> >>>>> java.lang.reflect.InvocationTargetException at
> >>>>> sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
> >>>>> at
> >>>>> sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
> >>>>> at
> >>>>> java.lang.reflect.Constructor.newInstance(Unknown Source) at
> >>>>>
> >>>>>
> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:147)
> >>>>> at
> >>>>>
> >>>>>
> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:66)
> >>>>> at
> >>>>>
> >>>>>
> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.newPage(BookmarkablePageRequestTarget.java:272)
> >>>>> at
> >>>>>
> >>>>>
> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.getPage(BookmarkablePageRequestTarget.java:293)
> >>>>> at
> >>>>>
> >>>>>
> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.processEvents(BookmarkablePageRequestTarget.java:210)
> >>>>> at
> >>>>>
> >>>>>
> org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:91)
> >>>>> at
> >>>>>
> >>>>>
> org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1220)
> >>>>> at org.apache.wicket.RequestCycle.step(RequestCycle.java:1297) at
> >>>>> org.apache.wicket.RequestCycle.steps(RequestCycle.java:1399) at
> >>>>> org.apache.wicket.RequestCycle.request(RequestCycle.java:529) at
> >>>>>
> >>>>>
> org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:356)
> >>>>>
> >>>>> ====================>
> >>>>>
> >>>>> ---------------------------------------------------------------------
> >>>>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> >>>>> For additional commands, e-mail: users-help@wicket.apache.org
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>
> >>
> >>
> >
>



-- 
Regards,
Vasu Srinivasan

Re: Re: Re: DAO not getting injected, using springbean

Posted by James Carman <jc...@carmanconsulting.com>.
You are correct.  You should only use @SpringBean in your wicket-related
code (components/pages).  Let Spring wire the rest together, however you
want to configure it to do that (with annotations or xml).  You can use
@Autowired to inject your DAOs into your Services.  You just have to make
sure you set up your Spring context so that it takes care of that.

On Tue, Jun 16, 2009 at 4:36 PM, Bruce McGuire <br...@coastware.com> wrote:

> Hello James.
>
> So I have completely missed the point of the Repository, Service and
> SpringBean annotations?  I was under the impression that the idea was to
> avoid using a lot of xml in my context files.
>
> If I am understanding correctly, what you and Martijn are saying is the
> following:
> Tag the dao and service classes with Repository and Service, and in wicket
> code, tag any use of them with SpringBean. However, in the service classes,
> use the normal xml injection method and get/set to get the dao into the
> service class.
>
> Is this a correct interpretation?
>
> Thanks,
>
> Bruce.
>
> James Carman wrote:
>
>> You shouldn't use @SpringBean in your spring-managed beans, only in
>> your Wicket code.  You don't want view-specific code in your "domain"
>> code.
>>
>> On Tue, Jun 16, 2009 at 4:17 PM, Bruce McGuire <br...@coastware.com>
>> wrote:
>>
>>
>>> Hi Martijn.
>>>
>>> Thanks for the quick response.
>>>
>>> Are you saying that the dao and the service should have the
>>> InjectorHolder code, rather than the @Repository and @Service tags?
>>>
>>> Bruce.
>>>
>>> Martijn Dashorst wrote:
>>>
>>>
>>>> @SpringBean only works with Components. For all other uses you should
>>>> either call InjectorHolder.getInjector().inject(this) in your
>>>> constructor or use Salve.
>>>>
>>>> Martijn
>>>>
>>>> On Tue, Jun 16, 2009 at 9:26 PM, Bruce McGuire<br...@coastware.com>
>>>> wrote:
>>>>
>>>>
>>>>
>>>>> Hello.
>>>>>
>>>>> I have created a new small project to try to figure out how to use the
>>>>> SpringBean, Service, and Repository annotations with Wicket, Spring,
>>>>> Hibernate, Maven and Eclipse.
>>>>>
>>>>> However, I am getting an error with a user DAO that I have created.
>>>>>
>>>>> I have a service that is using the dao tagged as @Service, I have the
>>>>> DAO in
>>>>> the service tagged with @SpringBean, and the DAO code itself is tagged
>>>>> with
>>>>> @Repository.  The service that is using the DAO is getting found
>>>>> correctly.
>>>>>
>>>>> When I have the InjectorHolder code in the dao constructor, I get an
>>>>> error
>>>>> that says 'InjectorHolder has not been assigned an injector'
>>>>>
>>>>> When I comment out the InjectorHolder line in the dao constructor, the
>>>>> DAO
>>>>> is null, and getUserDAO throws an exception.
>>>>>
>>>>> Since I am not certain that I can attach files, I will insert the
>>>>> relevant
>>>>> code and exceptions into this email.
>>>>>
>>>>> Any pointers you can give would be greatly appreciated.
>>>>>
>>>>> Thanks very very much,
>>>>>
>>>>> Bruce.
>>>>>
>>>>> UserServiceImpl
>>>>> ====================> @Service("UserService")
>>>>> public class UserServiceImpl implements UserService
>>>>> {
>>>>>  @SpringBean
>>>>>  UserDAO userDAO ;
>>>>>
>>>>>  private UserDAO getUserDAO()
>>>>>  {
>>>>>     if (null =erDAO)
>>>>>     {
>>>>>         throw new RuntimeException("userDAO is null") ;
>>>>>     }
>>>>>
>>>>>     return(userDAO) ;
>>>>>  }
>>>>>
>>>>>  @Override
>>>>>  public List<User> getUsers()
>>>>>  {
>>>>>     return (getUserDAO().findAll());
>>>>>  }
>>>>> ====================>
>>>>> UserDAOHibernate
>>>>> ====================> @Repository("UserDAO")
>>>>> public class UserDAOHibernate extends GenericDAOHibernate<User, String>
>>>>> implements UserDAO
>>>>> {
>>>>>  private static Log log =Factory.getLog("UserDAOHibernate");
>>>>>
>>>>>  public UserDAOHibernate()
>>>>>  {
>>>>>     InjectorHolder.getInjector().inject(this);
>>>>>  }
>>>>>
>>>>> ...
>>>>> ====================>
>>>>> HomePage
>>>>> ====================> public class HomePage extends WebPage
>>>>> {
>>>>>  @SpringBean
>>>>>  private UserService userService ;
>>>>>
>>>>>  public HomePage(final PageParameters parameters)
>>>>>  {
>>>>>     super (parameters) ;
>>>>>
>>>>>     List<User> userList =rService.getUsers() ;
>>>>>
>>>>>     RepeatingView rv = RepeatingView("Users") ;
>>>>>     for(User user: userList)
>>>>>     {
>>>>>         Label userName = Label("username", user.getUsername()) ;
>>>>>         rv.add(userName) ;
>>>>>     }
>>>>>
>>>>>     this.add(rv) ;
>>>>>  }
>>>>> }
>>>>> ====================>
>>>>> CoastwareApplication
>>>>> ====================> public class CoastwareApplication extends
>>>>> WebApplication
>>>>> {
>>>>>  private ApplicationContext ctx;
>>>>>
>>>>>  @SpringBean
>>>>>  private UserService userService ;
>>>>>
>>>>>  protected static Log log =Factory.getLog(CoastwareApplication.class) ;
>>>>>
>>>>>  private static ISpringContextLocator CTX_LOCATOR =
>>>>> ISpringContextLocator()
>>>>>  {
>>>>>     public ApplicationContext getSpringContext()
>>>>>     {
>>>>>         return(CoastwareApplication.get().ctx) ;
>>>>>     }
>>>>>  } ;
>>>>>
>>>>>  public CoastwareApplication()
>>>>>  {
>>>>>  }
>>>>>
>>>>>  public void init()
>>>>>  {
>>>>>     ctx = ClassPathXmlApplicationContext("appContext.xml") ;
>>>>>
>>>>>     addComponentInstantiationListener(new
>>>>> SpringComponentInjector(this));
>>>>>
>>>>>     super.init() ;
>>>>>  }
>>>>>
>>>>>  @Override
>>>>>  public Session newSession(Request request, Response response)
>>>>>  {
>>>>>     return (new WebSession(request)) ;
>>>>>  }
>>>>>
>>>>>  public static CoastwareApplication get()
>>>>>  {
>>>>>     return ((CoastwareApplication) Application.get()) ;
>>>>>  }
>>>>>
>>>>>  private <T> T createProxy(Class<T> clazz)
>>>>>  {
>>>>>     return ((T) LazyInitProxyFactory.createProxy(clazz, new
>>>>> SpringBeanLocator(clazz, CTX_LOCATOR))) ;
>>>>>  }
>>>>>
>>>>>  public Class<HomePage> getHomePage()
>>>>>  {
>>>>>     return HomePage.class;
>>>>>  }
>>>>>
>>>>>  public UserService getUserService()
>>>>>  {
>>>>>     if (null =erService)
>>>>>     {
>>>>>         userService =ateProxy(UserService.class) ;
>>>>>
>>>>>     }
>>>>>     return userService;
>>>>>  }
>>>>> }
>>>>> ====================>
>>>>>
>>>>> Web.xml
>>>>> ====================>   <display-name>vProbe</display-name>
>>>>>
>>>>>  <context-param>
>>>>>     <param-name>contextConfigLocation</param-name>
>>>>>     <param-value>classpath:appContext.xml</param-value>
>>>>>  </context-param>
>>>>>
>>>>>  <context-param>
>>>>>     <param-name>configuration</param-name>
>>>>>     <param-value>development</param-value>
>>>>>  </context-param>
>>>>>
>>>>>  <listener>
>>>>>     <listener-class>
>>>>>         org.springframework.web.context.ContextLoaderListener
>>>>>     </listener-class>
>>>>>  </listener>
>>>>>
>>>>>  <filter>
>>>>>     <filter-name>wicketFilter</filter-name>
>>>>>
>>>>>
>>>>>  <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class>
>>>>>     <init-param>
>>>>>         <param-name>applicationClassName</param-name>
>>>>>
>>>>> <param-value>com.coastware.vProbe.CoastwareApplication</param-value>
>>>>>      </init-param>
>>>>>  </filter>
>>>>>
>>>>>  <filter>
>>>>>     <filter-name>opensessioninview</filter-name>
>>>>>
>>>>>
>>>>> <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
>>>>>  </filter>
>>>>>
>>>>>  <filter-mapping>
>>>>>     <filter-name>wicketFilter</filter-name>
>>>>>     <url-pattern>/*</url-pattern>
>>>>>  </filter-mapping>
>>>>>
>>>>>  <filter-mapping>
>>>>>     <filter-name>opensessioninview</filter-name>
>>>>>     <url-pattern>/*</url-pattern>
>>>>>  </filter-mapping>
>>>>> ====================>
>>>>> appContext.xml
>>>>> ====================> <?xml version="1.0" encoding="UTF-8"?>
>>>>> <beans
>>>>>  default-autowire=odetect"
>>>>>  xmlns=p://www.springframework.org/schema/beans"
>>>>>  xmlns:xsi=p://www.w3.org/2001/XMLSchema-instance"
>>>>>  xmlns:aop=p://www.springframework.org/schema/aop"
>>>>>  xmlns:tx=p://www.springframework.org/schema/tx"
>>>>>  xmlns:context=p://www.springframework.org/schema/context"
>>>>>  xsi:schemaLocation>>>
>>>>> http://www.springframework.org/schema/beans
>>>>>     http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
>>>>>     http://www.springframework.org/schema/aop
>>>>>     http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
>>>>>     http://www.springframework.org/schema/tx
>>>>>     http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
>>>>>     http://www.springframework.org/schema/context
>>>>>
>>>>> http://www.springframework.org/schema/context/spring-context-2.5.xsd">
>>>>>
>>>>>  <bean id=aSource"
>>>>> class=.springframework.jdbc.datasource.DriverManagerDataSource">
>>>>>     <property name=" value="jdbc:mysql://192.168.15.128/vprobe"/>
>>>>>     <property name=verClassName" value="com.mysql.jdbc.Driver"/>
>>>>>     <property name=rname" value="vProbe"/>
>>>>>     <property name=sword" value="vProbe"/>
>>>>>  </bean>
>>>>>
>>>>>  <bean id=sionFactory"
>>>>>
>>>>> class=.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
>>>>>     <property name=aSource" ref="dataSource"/>
>>>>>
>>>>>     <property nameŹkagesToScan">
>>>>>         <list>
>>>>>             <value>com.coastware.vProbe.model</value>
>>>>>         </list>
>>>>>     </property>
>>>>>
>>>>>     <property name=ernateProperties">
>>>>>         <props>
>>>>>             <prop
>>>>> key=ernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
>>>>>             <prop key=ernate.show_sql">true</prop>
>>>>>             <prop key=ernate.format_sql">true</prop>
>>>>>             <prop key=ernate.use_sql_comments">true</prop>
>>>>>         </props>
>>>>>     </property>
>>>>>  </bean>
>>>>>
>>>>>  <context:component-scan base-package=.coastware" />
>>>>>
>>>>>  <bean id=nSessionInViewInterceptor"
>>>>>
>>>>> class=.springframework.orm.hibernate3.support.OpenSessionInViewInterceptor">
>>>>>     <property name=sionFactory">
>>>>>         <ref bean=sionFactory"/>
>>>>>     </property>
>>>>>  </bean>
>>>>>
>>>>>  <bean id=nsactionManager"
>>>>> class=.springframework.orm.hibernate3.HibernateTransactionManager">
>>>>>     <property name=sionFactory">
>>>>>         <ref bean=sionFactory"/>
>>>>>     </property>
>>>>>  </bean>
>>>>>
>>>>>  <bean id=ernateTemplate"
>>>>> class=.springframework.orm.hibernate3.HibernateTemplate">
>>>>>     <property name=sionFactory">
>>>>>         <ref bean=sionFactory"/>
>>>>>     </property>
>>>>>  </bean>
>>>>>
>>>>>  <tx:annotation-driven transaction-manager=nsactionManager"/>
>>>>>
>>>>>  <bean
>>>>>
>>>>> class=.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"/>
>>>>>
>>>>>  <bean
>>>>>
>>>>> class=.springframework.transaction.interceptor.TransactionAttributeSourceAdvisor">
>>>>>     <property name=nsactionInterceptor" ref="txInterceptor"/>
>>>>>  </bean>
>>>>>
>>>>>  <bean id=nterceptor"
>>>>> class=.springframework.transaction.interceptor.TransactionInterceptor">
>>>>>     <property name=nsactionManager" ref="transactionManager"/>
>>>>>     <property name=nsactionAttributeSource">
>>>>>         <bean
>>>>>
>>>>> class=.springframework.transaction.annotation.AnnotationTransactionAttributeSource"/>
>>>>>
>>>>>     </property>
>>>>>  </bean>
>>>>> </beans>
>>>>> ====================>
>>>>>
>>>>> Error with InjectorHolder line
>>>>> ====================> SEVERE: Exception sending context initialized
>>>>> event to listener instance of
>>>>> class org.springframework.web.context.ContextLoaderListener
>>>>> org.springframework.beans.factory.BeanCreationException: Error creating
>>>>> bean
>>>>> with name 'UserDAO' defined in file [C:\Program Files\Apache Software
>>>>> Foundation\Tomcat
>>>>>
>>>>> 6.0\webapps\vProbe\WEB-INF\classes\com\coastware\vProbe\model\dao\hibernate\UserDAOHibernate.class]:
>>>>> Instantiation of bean failed; nested exception is
>>>>> org.springframework.beans.BeanInstantiationException: Could not
>>>>> instantiate
>>>>> bean class [com.coastware.vProbe.model.dao.hibernate.UserDAOHibernate]:
>>>>> Constructor threw exception; nested exception is
>>>>> java.lang.IllegalStateException: InjectorHolder has not been assigned
>>>>> an
>>>>> injector. Use InjectorHolder.setInjector() to assign an injector. In
>>>>> most
>>>>> cases this should be done once inside SpringWebApplication subclass's
>>>>> init()
>>>>> method.
>>>>>  at
>>>>>
>>>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:883)
>>>>>  at
>>>>>
>>>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:839)
>>>>>  at
>>>>>
>>>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:440)
>>>>>  at
>>>>>
>>>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
>>>>>  at java.security.AccessController.doPrivileged(Native Method)
>>>>>  at
>>>>>
>>>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
>>>>>  at
>>>>>
>>>>> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
>>>>>  at
>>>>>
>>>>> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
>>>>>  at
>>>>>
>>>>> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
>>>>>  at
>>>>>
>>>>> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
>>>>>  at
>>>>>
>>>>> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
>>>>>  at
>>>>>
>>>>> org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429)
>>>>>  at
>>>>>
>>>>> org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728)
>>>>>  at
>>>>>
>>>>> org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380)
>>>>>  at
>>>>>
>>>>> org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255)
>>>>>  at
>>>>>
>>>>> org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199)
>>>>>  at
>>>>>
>>>>> org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45)
>>>>>  at
>>>>>
>>>>> org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3843)
>>>>>  at
>>>>>
>>>>> org.apache.catalina.core.StandardContext.start(StandardContext.java:4342)
>>>>>  at
>>>>>
>>>>> org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
>>>>>  at
>>>>> org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
>>>>>  at
>>>>> org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
>>>>>  at
>>>>> org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:830)
>>>>>  at
>>>>> org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:719)
>>>>>  at
>>>>> org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:490)
>>>>>  at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1149)
>>>>>  at
>>>>>
>>>>> org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
>>>>>  at
>>>>>
>>>>> org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
>>>>>  at
>>>>> org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
>>>>>  at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
>>>>>  at
>>>>> org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
>>>>>  at
>>>>> org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
>>>>>  at
>>>>>
>>>>> org.apache.catalina.core.StandardService.start(StandardService.java:516)
>>>>>  at
>>>>> org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
>>>>>  at org.apache.catalina.startup.Catalina.start(Catalina.java:578)
>>>>>  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.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
>>>>>  at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
>>>>> Caused by: org.springframework.beans.BeanInstantiationException: Could
>>>>> not
>>>>> instantiate bean class
>>>>> [com.coastware.vProbe.model.dao.hibernate.UserDAOHibernate]:
>>>>> Constructor
>>>>> threw exception; nested exception is java.lang.IllegalStateException:
>>>>> InjectorHolder has not been assigned an injector. Use
>>>>> InjectorHolder.setInjector() to assign an injector. In most cases this
>>>>> should be done once inside SpringWebApplication subclass's init()
>>>>> method.
>>>>>  at
>>>>>
>>>>> org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:115)
>>>>>  at
>>>>>
>>>>> org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:61)
>>>>>  at
>>>>>
>>>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:877)
>>>>>  ... 40 more
>>>>> Caused by: java.lang.IllegalStateException: InjectorHolder has not been
>>>>> assigned an injector. Use InjectorHolder.setInjector() to assign an
>>>>> injector. In most cases this should be done once inside
>>>>> SpringWebApplication
>>>>> subclass's init() method.
>>>>>  at
>>>>>
>>>>> org.apache.wicket.injection.web.InjectorHolder.getInjector(InjectorHolder.java:64)
>>>>>  at
>>>>>
>>>>> com.coastware.vProbe.model.dao.hibernate.UserDAOHibernate.<init>(UserDAOHibernate.java:26)
>>>>>  at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
>>>>> Method)
>>>>>  at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown
>>>>> Source)
>>>>>  at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown
>>>>> Source)
>>>>>  at java.lang.reflect.Constructor.newInstance(Unknown Source)
>>>>>  at
>>>>>
>>>>> org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:100)
>>>>>  ... 42 more
>>>>> ====================>
>>>>> Error when InjectorHolder line is commented out.
>>>>> ====================>
>>>>> java.lang.RuntimeException: userDAO is null at
>>>>>
>>>>> com.coastware.vProbe.service.UserServiceImpl.getUserDAO(UserServiceImpl.java:90)
>>>>> at
>>>>>
>>>>> com.coastware.vProbe.service.UserServiceImpl.getUsers(UserServiceImpl.java:68)
>>>>> at java.lang.reflect.Method.invoke(Unknown Source) at
>>>>>
>>>>> org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
>>>>> at
>>>>>
>>>>> org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:198)
>>>>> at $Proxy15.getUsers(Unknown Source) at
>>>>> java.lang.reflect.Method.invoke(Unknown Source) at
>>>>>
>>>>> org.apache.wicket.proxy.LazyInitProxyFactory$JdkHandler.invoke(LazyInitProxyFactory.java:416)
>>>>> at org.apache.wicket.proxy.$Proxy16.getUsers(Unknown Source) at
>>>>> com.coastware.vProbe.HomePage.<init>(HomePage.java:27) at
>>>>> java.lang.reflect.Constructor.newInstance(Unknown Source) at
>>>>>
>>>>> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:147)
>>>>> at
>>>>>
>>>>> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:66)
>>>>> at
>>>>>
>>>>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.newPage(BookmarkablePageRequestTarget.java:272)
>>>>> at
>>>>>
>>>>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.getPage(BookmarkablePageRequestTarget.java:293)
>>>>> at
>>>>>
>>>>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.processEvents(BookmarkablePageRequestTarget.java:210)
>>>>> at
>>>>>
>>>>> org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:91)
>>>>> at
>>>>>
>>>>> org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1220)
>>>>> at org.apache.wicket.RequestCycle.step(RequestCycle.java:1297) at
>>>>> org.apache.wicket.RequestCycle.steps(RequestCycle.java:1399) at
>>>>> org.apache.wicket.RequestCycle.request(RequestCycle.java:529) at
>>>>> org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:356)
>>>>> at
>>>>>
>>>>> org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:201)
>>>>> at
>>>>>
>>>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
>>>>> at
>>>>>
>>>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>>>>> at
>>>>>
>>>>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
>>>>> at
>>>>>
>>>>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
>>>>> at
>>>>>
>>>>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
>>>>> at
>>>>>
>>>>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
>>>>> at
>>>>>
>>>>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
>>>>> at
>>>>>
>>>>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
>>>>> at
>>>>>
>>>>> org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:857)
>>>>> at
>>>>>
>>>>> org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:565)
>>>>> at
>>>>> org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1509)
>>>>> at java.lang.Thread.run(Unknown Source)
>>>>>
>>>>> Complete stack:
>>>>>
>>>>> org.apache.wicket.WicketRuntimeException: Can't instantiate page using
>>>>> constructor public
>>>>> com.coastware.vProbe.HomePage(org.apache.wicket.PageParameters) and
>>>>> argument
>>>>> at
>>>>>
>>>>> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:168)
>>>>> at
>>>>>
>>>>> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:66)
>>>>> at
>>>>>
>>>>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.newPage(BookmarkablePageRequestTarget.java:272)
>>>>> at
>>>>>
>>>>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.getPage(BookmarkablePageRequestTarget.java:293)
>>>>> at
>>>>>
>>>>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.processEvents(BookmarkablePageRequestTarget.java:210)
>>>>> at
>>>>>
>>>>> org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:91)
>>>>> at
>>>>>
>>>>> org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1220)
>>>>> at org.apache.wicket.RequestCycle.step(RequestCycle.java:1297) at
>>>>> org.apache.wicket.RequestCycle.steps(RequestCycle.java:1399) at
>>>>> org.apache.wicket.RequestCycle.request(RequestCycle.java:529) at
>>>>>
>>>>> org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:356)
>>>>>
>>>>> java.lang.reflect.InvocationTargetException at
>>>>> sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
>>>>> at
>>>>> sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
>>>>> at
>>>>> java.lang.reflect.Constructor.newInstance(Unknown Source) at
>>>>>
>>>>> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:147)
>>>>> at
>>>>>
>>>>> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:66)
>>>>> at
>>>>>
>>>>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.newPage(BookmarkablePageRequestTarget.java:272)
>>>>> at
>>>>>
>>>>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.getPage(BookmarkablePageRequestTarget.java:293)
>>>>> at
>>>>>
>>>>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.processEvents(BookmarkablePageRequestTarget.java:210)
>>>>> at
>>>>>
>>>>> org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:91)
>>>>> at
>>>>>
>>>>> org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1220)
>>>>> at org.apache.wicket.RequestCycle.step(RequestCycle.java:1297) at
>>>>> org.apache.wicket.RequestCycle.steps(RequestCycle.java:1399) at
>>>>> org.apache.wicket.RequestCycle.request(RequestCycle.java:529) at
>>>>>
>>>>> org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:356)
>>>>>
>>>>> ====================>
>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>>>>> For additional commands, e-mail: users-help@wicket.apache.org
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>>
>>>
>>
>>
>

Re: Re: Re: DAO not getting injected, using springbean

Posted by Bruce McGuire <br...@coastware.com>.
Hello James.

So I have completely missed the point of the Repository, Service and 
SpringBean annotations?  I was under the impression that the idea was to 
avoid using a lot of xml in my context files.

If I am understanding correctly, what you and Martijn are saying is the 
following:
Tag the dao and service classes with Repository and Service, and in 
wicket code, tag any use of them with SpringBean. However, in the 
service classes, use the normal xml injection method and get/set to get 
the dao into the service class.

Is this a correct interpretation?

Thanks,

Bruce.

James Carman wrote:
> You shouldn't use @SpringBean in your spring-managed beans, only in
> your Wicket code.  You don't want view-specific code in your "domain"
> code.
>
> On Tue, Jun 16, 2009 at 4:17 PM, Bruce McGuire <br...@coastware.com> wrote:
>   
>> Hi Martijn.
>>
>> Thanks for the quick response.
>>
>> Are you saying that the dao and the service should have the InjectorHolder code, rather than the @Repository and @Service tags?
>>
>> Bruce.
>>
>> Martijn Dashorst wrote:
>>     
>>> @SpringBean only works with Components. For all other uses you should
>>> either call InjectorHolder.getInjector().inject(this) in your
>>> constructor or use Salve.
>>>
>>> Martijn
>>>
>>> On Tue, Jun 16, 2009 at 9:26 PM, Bruce McGuire<br...@coastware.com> wrote:
>>>
>>>       
>>>> Hello.
>>>>
>>>> I have created a new small project to try to figure out how to use the
>>>> SpringBean, Service, and Repository annotations with Wicket, Spring,
>>>> Hibernate, Maven and Eclipse.
>>>>
>>>> However, I am getting an error with a user DAO that I have created.
>>>>
>>>> I have a service that is using the dao tagged as @Service, I have the DAO in
>>>> the service tagged with @SpringBean, and the DAO code itself is tagged with
>>>> @Repository.  The service that is using the DAO is getting found correctly.
>>>>
>>>> When I have the InjectorHolder code in the dao constructor, I get an error
>>>> that says 'InjectorHolder has not been assigned an injector'
>>>>
>>>> When I comment out the InjectorHolder line in the dao constructor, the DAO
>>>> is null, and getUserDAO throws an exception.
>>>>
>>>> Since I am not certain that I can attach files, I will insert the relevant
>>>> code and exceptions into this email.
>>>>
>>>> Any pointers you can give would be greatly appreciated.
>>>>
>>>> Thanks very very much,
>>>>
>>>> Bruce.
>>>>
>>>> UserServiceImpl
>>>> ====================> @Service("UserService")
>>>> public class UserServiceImpl implements UserService
>>>> {
>>>>  @SpringBean
>>>>  UserDAO userDAO ;
>>>>
>>>>  private UserDAO getUserDAO()
>>>>  {
>>>>      if (null =erDAO)
>>>>      {
>>>>          throw new RuntimeException("userDAO is null") ;
>>>>      }
>>>>
>>>>      return(userDAO) ;
>>>>  }
>>>>
>>>>  @Override
>>>>  public List<User> getUsers()
>>>>  {
>>>>      return (getUserDAO().findAll());
>>>>  }
>>>> ====================>
>>>> UserDAOHibernate
>>>> ====================> @Repository("UserDAO")
>>>> public class UserDAOHibernate extends GenericDAOHibernate<User, String>
>>>> implements UserDAO
>>>> {
>>>>  private static Log log =Factory.getLog("UserDAOHibernate");
>>>>
>>>>  public UserDAOHibernate()
>>>>  {
>>>>      InjectorHolder.getInjector().inject(this);
>>>>  }
>>>>
>>>> ...
>>>> ====================>
>>>> HomePage
>>>> ====================> public class HomePage extends WebPage
>>>> {
>>>>  @SpringBean
>>>>  private UserService userService ;
>>>>
>>>>  public HomePage(final PageParameters parameters)
>>>>  {
>>>>      super (parameters) ;
>>>>
>>>>      List<User> userList =rService.getUsers() ;
>>>>
>>>>      RepeatingView rv = RepeatingView("Users") ;
>>>>      for(User user: userList)
>>>>      {
>>>>          Label userName = Label("username", user.getUsername()) ;
>>>>          rv.add(userName) ;
>>>>      }
>>>>
>>>>      this.add(rv) ;
>>>>  }
>>>> }
>>>> ====================>
>>>> CoastwareApplication
>>>> ====================> public class CoastwareApplication extends WebApplication
>>>> {
>>>>  private ApplicationContext ctx;
>>>>
>>>>  @SpringBean
>>>>  private UserService userService ;
>>>>
>>>>  protected static Log log =Factory.getLog(CoastwareApplication.class) ;
>>>>
>>>>  private static ISpringContextLocator CTX_LOCATOR =
>>>> ISpringContextLocator()
>>>>  {
>>>>      public ApplicationContext getSpringContext()
>>>>      {
>>>>          return(CoastwareApplication.get().ctx) ;
>>>>      }
>>>>  } ;
>>>>
>>>>  public CoastwareApplication()
>>>>  {
>>>>  }
>>>>
>>>>  public void init()
>>>>  {
>>>>      ctx = ClassPathXmlApplicationContext("appContext.xml") ;
>>>>
>>>>      addComponentInstantiationListener(new SpringComponentInjector(this));
>>>>
>>>>      super.init() ;
>>>>  }
>>>>
>>>>  @Override
>>>>  public Session newSession(Request request, Response response)
>>>>  {
>>>>      return (new WebSession(request)) ;
>>>>  }
>>>>
>>>>  public static CoastwareApplication get()
>>>>  {
>>>>      return ((CoastwareApplication) Application.get()) ;
>>>>  }
>>>>
>>>>  private <T> T createProxy(Class<T> clazz)
>>>>  {
>>>>      return ((T) LazyInitProxyFactory.createProxy(clazz, new
>>>> SpringBeanLocator(clazz, CTX_LOCATOR))) ;
>>>>  }
>>>>
>>>>  public Class<HomePage> getHomePage()
>>>>  {
>>>>      return HomePage.class;
>>>>  }
>>>>
>>>>  public UserService getUserService()
>>>>  {
>>>>      if (null =erService)
>>>>      {
>>>>          userService =ateProxy(UserService.class) ;
>>>>      }
>>>>      return userService;
>>>>  }
>>>> }
>>>> ====================>
>>>>
>>>> Web.xml
>>>> ====================>   <display-name>vProbe</display-name>
>>>>
>>>>  <context-param>
>>>>      <param-name>contextConfigLocation</param-name>
>>>>      <param-value>classpath:appContext.xml</param-value>
>>>>  </context-param>
>>>>
>>>>  <context-param>
>>>>      <param-name>configuration</param-name>
>>>>      <param-value>development</param-value>
>>>>  </context-param>
>>>>
>>>>  <listener>
>>>>      <listener-class>
>>>>          org.springframework.web.context.ContextLoaderListener
>>>>      </listener-class>
>>>>  </listener>
>>>>
>>>>  <filter>
>>>>      <filter-name>wicketFilter</filter-name>
>>>>
>>>>  <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class>
>>>>      <init-param>
>>>>          <param-name>applicationClassName</param-name>
>>>>
>>>> <param-value>com.coastware.vProbe.CoastwareApplication</param-value>
>>>>       </init-param>
>>>>  </filter>
>>>>
>>>>  <filter>
>>>>      <filter-name>opensessioninview</filter-name>
>>>>
>>>> <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
>>>>  </filter>
>>>>
>>>>  <filter-mapping>
>>>>      <filter-name>wicketFilter</filter-name>
>>>>      <url-pattern>/*</url-pattern>
>>>>  </filter-mapping>
>>>>
>>>>  <filter-mapping>
>>>>      <filter-name>opensessioninview</filter-name>
>>>>      <url-pattern>/*</url-pattern>
>>>>  </filter-mapping>
>>>> ====================>
>>>> appContext.xml
>>>> ====================> <?xml version="1.0" encoding="UTF-8"?>
>>>> <beans
>>>>  default-autowire=odetect"
>>>>  xmlns=p://www.springframework.org/schema/beans"
>>>>  xmlns:xsi=p://www.w3.org/2001/XMLSchema-instance"
>>>>  xmlns:aop=p://www.springframework.org/schema/aop"
>>>>  xmlns:tx=p://www.springframework.org/schema/tx"
>>>>  xmlns:context=p://www.springframework.org/schema/context"
>>>>  xsi:schemaLocation>>>      http://www.springframework.org/schema/beans
>>>>      http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
>>>>      http://www.springframework.org/schema/aop
>>>>      http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
>>>>      http://www.springframework.org/schema/tx
>>>>      http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
>>>>      http://www.springframework.org/schema/context
>>>>      http://www.springframework.org/schema/context/spring-context-2.5.xsd">
>>>>
>>>>  <bean id=aSource"
>>>> class=.springframework.jdbc.datasource.DriverManagerDataSource">
>>>>      <property name=" value="jdbc:mysql://192.168.15.128/vprobe"/>
>>>>      <property name=verClassName" value="com.mysql.jdbc.Driver"/>
>>>>      <property name=rname" value="vProbe"/>
>>>>      <property name=sword" value="vProbe"/>
>>>>  </bean>
>>>>
>>>>  <bean id=sionFactory"
>>>> class=.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
>>>>      <property name=aSource" ref="dataSource"/>
>>>>
>>>>      <property name¬kagesToScan">
>>>>          <list>
>>>>              <value>com.coastware.vProbe.model</value>
>>>>          </list>
>>>>      </property>
>>>>
>>>>      <property name=ernateProperties">
>>>>          <props>
>>>>              <prop
>>>> key=ernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
>>>>              <prop key=ernate.show_sql">true</prop>
>>>>              <prop key=ernate.format_sql">true</prop>
>>>>              <prop key=ernate.use_sql_comments">true</prop>
>>>>          </props>
>>>>      </property>
>>>>  </bean>
>>>>
>>>>  <context:component-scan base-package=.coastware" />
>>>>
>>>>  <bean id=nSessionInViewInterceptor"
>>>> class=.springframework.orm.hibernate3.support.OpenSessionInViewInterceptor">
>>>>      <property name=sionFactory">
>>>>          <ref bean=sionFactory"/>
>>>>      </property>
>>>>  </bean>
>>>>
>>>>  <bean id=nsactionManager"
>>>> class=.springframework.orm.hibernate3.HibernateTransactionManager">
>>>>      <property name=sionFactory">
>>>>          <ref bean=sionFactory"/>
>>>>      </property>
>>>>  </bean>
>>>>
>>>>  <bean id=ernateTemplate"
>>>> class=.springframework.orm.hibernate3.HibernateTemplate">
>>>>      <property name=sionFactory">
>>>>          <ref bean=sionFactory"/>
>>>>      </property>
>>>>  </bean>
>>>>
>>>>  <tx:annotation-driven transaction-manager=nsactionManager"/>
>>>>
>>>>  <bean
>>>> class=.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"/>
>>>>
>>>>  <bean
>>>> class=.springframework.transaction.interceptor.TransactionAttributeSourceAdvisor">
>>>>      <property name=nsactionInterceptor" ref="txInterceptor"/>
>>>>  </bean>
>>>>
>>>>  <bean id=nterceptor"
>>>> class=.springframework.transaction.interceptor.TransactionInterceptor">
>>>>      <property name=nsactionManager" ref="transactionManager"/>
>>>>      <property name=nsactionAttributeSource">
>>>>          <bean
>>>> class=.springframework.transaction.annotation.AnnotationTransactionAttributeSource"/>
>>>>      </property>
>>>>  </bean>
>>>> </beans>
>>>> ====================>
>>>>
>>>> Error with InjectorHolder line
>>>> ====================> SEVERE: Exception sending context initialized event to listener instance of
>>>> class org.springframework.web.context.ContextLoaderListener
>>>> org.springframework.beans.factory.BeanCreationException: Error creating bean
>>>> with name 'UserDAO' defined in file [C:\Program Files\Apache Software
>>>> Foundation\Tomcat
>>>> 6.0\webapps\vProbe\WEB-INF\classes\com\coastware\vProbe\model\dao\hibernate\UserDAOHibernate.class]:
>>>> Instantiation of bean failed; nested exception is
>>>> org.springframework.beans.BeanInstantiationException: Could not instantiate
>>>> bean class [com.coastware.vProbe.model.dao.hibernate.UserDAOHibernate]:
>>>> Constructor threw exception; nested exception is
>>>> java.lang.IllegalStateException: InjectorHolder has not been assigned an
>>>> injector. Use InjectorHolder.setInjector() to assign an injector. In most
>>>> cases this should be done once inside SpringWebApplication subclass's init()
>>>> method.
>>>>  at
>>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:883)
>>>>  at
>>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:839)
>>>>  at
>>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:440)
>>>>  at
>>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
>>>>  at java.security.AccessController.doPrivileged(Native Method)
>>>>  at
>>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
>>>>  at
>>>> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
>>>>  at
>>>> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
>>>>  at
>>>> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
>>>>  at
>>>> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
>>>>  at
>>>> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
>>>>  at
>>>> org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429)
>>>>  at
>>>> org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728)
>>>>  at
>>>> org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380)
>>>>  at
>>>> org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255)
>>>>  at
>>>> org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199)
>>>>  at
>>>> org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45)
>>>>  at
>>>> org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3843)
>>>>  at
>>>> org.apache.catalina.core.StandardContext.start(StandardContext.java:4342)
>>>>  at
>>>> org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
>>>>  at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
>>>>  at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
>>>>  at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:830)
>>>>  at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:719)
>>>>  at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:490)
>>>>  at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1149)
>>>>  at
>>>> org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
>>>>  at
>>>> org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
>>>>  at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
>>>>  at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
>>>>  at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
>>>>  at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
>>>>  at
>>>> org.apache.catalina.core.StandardService.start(StandardService.java:516)
>>>>  at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
>>>>  at org.apache.catalina.startup.Catalina.start(Catalina.java:578)
>>>>  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.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
>>>>  at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
>>>> Caused by: org.springframework.beans.BeanInstantiationException: Could not
>>>> instantiate bean class
>>>> [com.coastware.vProbe.model.dao.hibernate.UserDAOHibernate]: Constructor
>>>> threw exception; nested exception is java.lang.IllegalStateException:
>>>> InjectorHolder has not been assigned an injector. Use
>>>> InjectorHolder.setInjector() to assign an injector. In most cases this
>>>> should be done once inside SpringWebApplication subclass's init() method.
>>>>  at
>>>> org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:115)
>>>>  at
>>>> org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:61)
>>>>  at
>>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:877)
>>>>  ... 40 more
>>>> Caused by: java.lang.IllegalStateException: InjectorHolder has not been
>>>> assigned an injector. Use InjectorHolder.setInjector() to assign an
>>>> injector. In most cases this should be done once inside SpringWebApplication
>>>> subclass's init() method.
>>>>  at
>>>> org.apache.wicket.injection.web.InjectorHolder.getInjector(InjectorHolder.java:64)
>>>>  at
>>>> com.coastware.vProbe.model.dao.hibernate.UserDAOHibernate.<init>(UserDAOHibernate.java:26)
>>>>  at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
>>>>  at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
>>>>  at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown
>>>> Source)
>>>>  at java.lang.reflect.Constructor.newInstance(Unknown Source)
>>>>  at
>>>> org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:100)
>>>>  ... 42 more
>>>> ====================>
>>>> Error when InjectorHolder line is commented out.
>>>> ====================>
>>>> java.lang.RuntimeException: userDAO is null at
>>>> com.coastware.vProbe.service.UserServiceImpl.getUserDAO(UserServiceImpl.java:90)
>>>> at
>>>> com.coastware.vProbe.service.UserServiceImpl.getUsers(UserServiceImpl.java:68)
>>>> at java.lang.reflect.Method.invoke(Unknown Source) at
>>>> org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
>>>> at
>>>> org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:198)
>>>> at $Proxy15.getUsers(Unknown Source) at
>>>> java.lang.reflect.Method.invoke(Unknown Source) at
>>>> org.apache.wicket.proxy.LazyInitProxyFactory$JdkHandler.invoke(LazyInitProxyFactory.java:416)
>>>> at org.apache.wicket.proxy.$Proxy16.getUsers(Unknown Source) at
>>>> com.coastware.vProbe.HomePage.<init>(HomePage.java:27) at
>>>> java.lang.reflect.Constructor.newInstance(Unknown Source) at
>>>> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:147)
>>>> at
>>>> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:66)
>>>> at
>>>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.newPage(BookmarkablePageRequestTarget.java:272)
>>>> at
>>>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.getPage(BookmarkablePageRequestTarget.java:293)
>>>> at
>>>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.processEvents(BookmarkablePageRequestTarget.java:210)
>>>> at
>>>> org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:91)
>>>> at
>>>> org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1220)
>>>> at org.apache.wicket.RequestCycle.step(RequestCycle.java:1297) at
>>>> org.apache.wicket.RequestCycle.steps(RequestCycle.java:1399) at
>>>> org.apache.wicket.RequestCycle.request(RequestCycle.java:529) at
>>>> org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:356) at
>>>> org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:201)
>>>> at
>>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
>>>> at
>>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>>>> at
>>>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
>>>> at
>>>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
>>>> at
>>>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
>>>> at
>>>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
>>>> at
>>>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
>>>> at
>>>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
>>>> at
>>>> org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:857)
>>>> at
>>>> org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:565)
>>>> at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1509)
>>>> at java.lang.Thread.run(Unknown Source)
>>>>
>>>> Complete stack:
>>>>
>>>> org.apache.wicket.WicketRuntimeException: Can't instantiate page using
>>>> constructor public
>>>> com.coastware.vProbe.HomePage(org.apache.wicket.PageParameters) and argument
>>>> at
>>>> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:168)
>>>> at
>>>> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:66)
>>>> at
>>>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.newPage(BookmarkablePageRequestTarget.java:272)
>>>> at
>>>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.getPage(BookmarkablePageRequestTarget.java:293)
>>>> at
>>>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.processEvents(BookmarkablePageRequestTarget.java:210)
>>>> at
>>>> org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:91)
>>>> at
>>>> org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1220)
>>>> at org.apache.wicket.RequestCycle.step(RequestCycle.java:1297) at
>>>> org.apache.wicket.RequestCycle.steps(RequestCycle.java:1399) at
>>>> org.apache.wicket.RequestCycle.request(RequestCycle.java:529) at
>>>> org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:356)
>>>>
>>>> java.lang.reflect.InvocationTargetException at
>>>> sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at
>>>> sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at
>>>> java.lang.reflect.Constructor.newInstance(Unknown Source) at
>>>> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:147)
>>>> at
>>>> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:66)
>>>> at
>>>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.newPage(BookmarkablePageRequestTarget.java:272)
>>>> at
>>>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.getPage(BookmarkablePageRequestTarget.java:293)
>>>> at
>>>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.processEvents(BookmarkablePageRequestTarget.java:210)
>>>> at
>>>> org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:91)
>>>> at
>>>> org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1220)
>>>> at org.apache.wicket.RequestCycle.step(RequestCycle.java:1297) at
>>>> org.apache.wicket.RequestCycle.steps(RequestCycle.java:1399) at
>>>> org.apache.wicket.RequestCycle.request(RequestCycle.java:529) at
>>>> org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:356)
>>>>
>>>> ====================>
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>>>> For additional commands, e-mail: users-help@wicket.apache.org
>>>>
>>>>
>>>>
>>>>         
>>>
>>>
>>>       
>
>   

Re: Re: DAO not getting injected, using springbean

Posted by James Carman <jc...@carmanconsulting.com>.
You shouldn't use @SpringBean in your spring-managed beans, only in
your Wicket code.  You don't want view-specific code in your "domain"
code.

On Tue, Jun 16, 2009 at 4:17 PM, Bruce McGuire <br...@coastware.com> wrote:
>
> Hi Martijn.
>
> Thanks for the quick response.
>
> Are you saying that the dao and the service should have the InjectorHolder code, rather than the @Repository and @Service tags?
>
> Bruce.
>
> Martijn Dashorst wrote:
>>
>> @SpringBean only works with Components. For all other uses you should
>> either call InjectorHolder.getInjector().inject(this) in your
>> constructor or use Salve.
>>
>> Martijn
>>
>> On Tue, Jun 16, 2009 at 9:26 PM, Bruce McGuire<br...@coastware.com> wrote:
>>
>>>
>>> Hello.
>>>
>>> I have created a new small project to try to figure out how to use the
>>> SpringBean, Service, and Repository annotations with Wicket, Spring,
>>> Hibernate, Maven and Eclipse.
>>>
>>> However, I am getting an error with a user DAO that I have created.
>>>
>>> I have a service that is using the dao tagged as @Service, I have the DAO in
>>> the service tagged with @SpringBean, and the DAO code itself is tagged with
>>> @Repository.  The service that is using the DAO is getting found correctly.
>>>
>>> When I have the InjectorHolder code in the dao constructor, I get an error
>>> that says 'InjectorHolder has not been assigned an injector'
>>>
>>> When I comment out the InjectorHolder line in the dao constructor, the DAO
>>> is null, and getUserDAO throws an exception.
>>>
>>> Since I am not certain that I can attach files, I will insert the relevant
>>> code and exceptions into this email.
>>>
>>> Any pointers you can give would be greatly appreciated.
>>>
>>> Thanks very very much,
>>>
>>> Bruce.
>>>
>>> UserServiceImpl
>>> ======================> @Service("UserService")
>>> public class UserServiceImpl implements UserService
>>> {
>>>  @SpringBean
>>>  UserDAO userDAO ;
>>>
>>>  private UserDAO getUserDAO()
>>>  {
>>>      if (null =userDAO)
>>>      {
>>>          throw new RuntimeException("userDAO is null") ;
>>>      }
>>>
>>>      return(userDAO) ;
>>>  }
>>>
>>>  @Override
>>>  public List<User> getUsers()
>>>  {
>>>      return (getUserDAO().findAll());
>>>  }
>>> ======================>
>>> UserDAOHibernate
>>> ======================> @Repository("UserDAO")
>>> public class UserDAOHibernate extends GenericDAOHibernate<User, String>
>>> implements UserDAO
>>> {
>>>  private static Log log =ogFactory.getLog("UserDAOHibernate");
>>>
>>>  public UserDAOHibernate()
>>>  {
>>>      InjectorHolder.getInjector().inject(this);
>>>  }
>>>
>>> ...
>>> ======================>
>>> HomePage
>>> ======================> public class HomePage extends WebPage
>>> {
>>>  @SpringBean
>>>  private UserService userService ;
>>>
>>>  public HomePage(final PageParameters parameters)
>>>  {
>>>      super (parameters) ;
>>>
>>>      List<User> userList =serService.getUsers() ;
>>>
>>>      RepeatingView rv =ew RepeatingView("Users") ;
>>>      for(User user: userList)
>>>      {
>>>          Label userName =ew Label("username", user.getUsername()) ;
>>>          rv.add(userName) ;
>>>      }
>>>
>>>      this.add(rv) ;
>>>  }
>>> }
>>> ======================>
>>> CoastwareApplication
>>> ======================> public class CoastwareApplication extends WebApplication
>>> {
>>>  private ApplicationContext ctx;
>>>
>>>  @SpringBean
>>>  private UserService userService ;
>>>
>>>  protected static Log log =ogFactory.getLog(CoastwareApplication.class) ;
>>>
>>>  private static ISpringContextLocator CTX_LOCATOR =ew
>>> ISpringContextLocator()
>>>  {
>>>      public ApplicationContext getSpringContext()
>>>      {
>>>          return(CoastwareApplication.get().ctx) ;
>>>      }
>>>  } ;
>>>
>>>  public CoastwareApplication()
>>>  {
>>>  }
>>>
>>>  public void init()
>>>  {
>>>      ctx =ew ClassPathXmlApplicationContext("appContext.xml") ;
>>>
>>>      addComponentInstantiationListener(new SpringComponentInjector(this));
>>>
>>>      super.init() ;
>>>  }
>>>
>>>  @Override
>>>  public Session newSession(Request request, Response response)
>>>  {
>>>      return (new WebSession(request)) ;
>>>  }
>>>
>>>  public static CoastwareApplication get()
>>>  {
>>>      return ((CoastwareApplication) Application.get()) ;
>>>  }
>>>
>>>  private <T> T createProxy(Class<T> clazz)
>>>  {
>>>      return ((T) LazyInitProxyFactory.createProxy(clazz, new
>>> SpringBeanLocator(clazz, CTX_LOCATOR))) ;
>>>  }
>>>
>>>  public Class<HomePage> getHomePage()
>>>  {
>>>      return HomePage.class;
>>>  }
>>>
>>>  public UserService getUserService()
>>>  {
>>>      if (null =userService)
>>>      {
>>>          userService =reateProxy(UserService.class) ;
>>>      }
>>>      return userService;
>>>  }
>>> }
>>> ======================>
>>>
>>> Web.xml
>>> ======================>   <display-name>vProbe</display-name>
>>>
>>>  <context-param>
>>>      <param-name>contextConfigLocation</param-name>
>>>      <param-value>classpath:appContext.xml</param-value>
>>>  </context-param>
>>>
>>>  <context-param>
>>>      <param-name>configuration</param-name>
>>>      <param-value>development</param-value>
>>>  </context-param>
>>>
>>>  <listener>
>>>      <listener-class>
>>>          org.springframework.web.context.ContextLoaderListener
>>>      </listener-class>
>>>  </listener>
>>>
>>>  <filter>
>>>      <filter-name>wicketFilter</filter-name>
>>>
>>>  <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class>
>>>      <init-param>
>>>          <param-name>applicationClassName</param-name>
>>>
>>> <param-value>com.coastware.vProbe.CoastwareApplication</param-value>
>>>       </init-param>
>>>  </filter>
>>>
>>>  <filter>
>>>      <filter-name>opensessioninview</filter-name>
>>>
>>> <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
>>>  </filter>
>>>
>>>  <filter-mapping>
>>>      <filter-name>wicketFilter</filter-name>
>>>      <url-pattern>/*</url-pattern>
>>>  </filter-mapping>
>>>
>>>  <filter-mapping>
>>>      <filter-name>opensessioninview</filter-name>
>>>      <url-pattern>/*</url-pattern>
>>>  </filter-mapping>
>>> ======================>
>>> appContext.xml
>>> ======================> <?xml version="1.0" encoding="UTF-8"?>
>>> <beans
>>>  default-autowire=utodetect"
>>>  xmlns=ttp://www.springframework.org/schema/beans"
>>>  xmlns:xsi=ttp://www.w3.org/2001/XMLSchema-instance"
>>>  xmlns:aop=ttp://www.springframework.org/schema/aop"
>>>  xmlns:tx=ttp://www.springframework.org/schema/tx"
>>>  xmlns:context=ttp://www.springframework.org/schema/context"
>>>  xsi:schemaLocation=
>>>      http://www.springframework.org/schema/beans
>>>      http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
>>>      http://www.springframework.org/schema/aop
>>>      http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
>>>      http://www.springframework.org/schema/tx
>>>      http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
>>>      http://www.springframework.org/schema/context
>>>      http://www.springframework.org/schema/context/spring-context-2.5.xsd">
>>>
>>>  <bean id=ataSource"
>>> class=rg.springframework.jdbc.datasource.DriverManagerDataSource">
>>>      <property name=rl" value="jdbc:mysql://192.168.15.128/vprobe"/>
>>>      <property name=riverClassName" value="com.mysql.jdbc.Driver"/>
>>>      <property name=sername" value="vProbe"/>
>>>      <property name=assword" value="vProbe"/>
>>>  </bean>
>>>
>>>  <bean id=essionFactory"
>>> class=rg.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
>>>      <property name=ataSource" ref="dataSource"/>
>>>
>>>      <property name=ackagesToScan">
>>>          <list>
>>>              <value>com.coastware.vProbe.model</value>
>>>          </list>
>>>      </property>
>>>
>>>      <property name=ibernateProperties">
>>>          <props>
>>>              <prop
>>> key=ibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
>>>              <prop key=ibernate.show_sql">true</prop>
>>>              <prop key=ibernate.format_sql">true</prop>
>>>              <prop key=ibernate.use_sql_comments">true</prop>
>>>          </props>
>>>      </property>
>>>  </bean>
>>>
>>>  <context:component-scan base-package=om.coastware" />
>>>
>>>  <bean id=penSessionInViewInterceptor"
>>> class=rg.springframework.orm.hibernate3.support.OpenSessionInViewInterceptor">
>>>      <property name=essionFactory">
>>>          <ref bean=essionFactory"/>
>>>      </property>
>>>  </bean>
>>>
>>>  <bean id=ransactionManager"
>>> class=rg.springframework.orm.hibernate3.HibernateTransactionManager">
>>>      <property name=essionFactory">
>>>          <ref bean=essionFactory"/>
>>>      </property>
>>>  </bean>
>>>
>>>  <bean id=ibernateTemplate"
>>> class=rg.springframework.orm.hibernate3.HibernateTemplate">
>>>      <property name=essionFactory">
>>>          <ref bean=essionFactory"/>
>>>      </property>
>>>  </bean>
>>>
>>>  <tx:annotation-driven transaction-manager=ransactionManager"/>
>>>
>>>  <bean
>>> class=rg.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"/>
>>>
>>>  <bean
>>> class=rg.springframework.transaction.interceptor.TransactionAttributeSourceAdvisor">
>>>      <property name=ransactionInterceptor" ref="txInterceptor"/>
>>>  </bean>
>>>
>>>  <bean id=xInterceptor"
>>> class=rg.springframework.transaction.interceptor.TransactionInterceptor">
>>>      <property name=ransactionManager" ref="transactionManager"/>
>>>      <property name=ransactionAttributeSource">
>>>          <bean
>>> class=rg.springframework.transaction.annotation.AnnotationTransactionAttributeSource"/>
>>>      </property>
>>>  </bean>
>>> </beans>
>>> ======================>
>>>
>>> Error with InjectorHolder line
>>> ======================> SEVERE: Exception sending context initialized event to listener instance of
>>> class org.springframework.web.context.ContextLoaderListener
>>> org.springframework.beans.factory.BeanCreationException: Error creating bean
>>> with name 'UserDAO' defined in file [C:\Program Files\Apache Software
>>> Foundation\Tomcat
>>> 6.0\webapps\vProbe\WEB-INF\classes\com\coastware\vProbe\model\dao\hibernate\UserDAOHibernate.class]:
>>> Instantiation of bean failed; nested exception is
>>> org.springframework.beans.BeanInstantiationException: Could not instantiate
>>> bean class [com.coastware.vProbe.model.dao.hibernate.UserDAOHibernate]:
>>> Constructor threw exception; nested exception is
>>> java.lang.IllegalStateException: InjectorHolder has not been assigned an
>>> injector. Use InjectorHolder.setInjector() to assign an injector. In most
>>> cases this should be done once inside SpringWebApplication subclass's init()
>>> method.
>>>  at
>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:883)
>>>  at
>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:839)
>>>  at
>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:440)
>>>  at
>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
>>>  at java.security.AccessController.doPrivileged(Native Method)
>>>  at
>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
>>>  at
>>> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
>>>  at
>>> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
>>>  at
>>> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
>>>  at
>>> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
>>>  at
>>> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
>>>  at
>>> org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429)
>>>  at
>>> org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728)
>>>  at
>>> org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380)
>>>  at
>>> org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255)
>>>  at
>>> org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199)
>>>  at
>>> org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45)
>>>  at
>>> org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3843)
>>>  at
>>> org.apache.catalina.core.StandardContext.start(StandardContext.java:4342)
>>>  at
>>> org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
>>>  at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
>>>  at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
>>>  at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:830)
>>>  at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:719)
>>>  at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:490)
>>>  at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1149)
>>>  at
>>> org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
>>>  at
>>> org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
>>>  at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
>>>  at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
>>>  at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
>>>  at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
>>>  at
>>> org.apache.catalina.core.StandardService.start(StandardService.java:516)
>>>  at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
>>>  at org.apache.catalina.startup.Catalina.start(Catalina.java:578)
>>>  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.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
>>>  at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
>>> Caused by: org.springframework.beans.BeanInstantiationException: Could not
>>> instantiate bean class
>>> [com.coastware.vProbe.model.dao.hibernate.UserDAOHibernate]: Constructor
>>> threw exception; nested exception is java.lang.IllegalStateException:
>>> InjectorHolder has not been assigned an injector. Use
>>> InjectorHolder.setInjector() to assign an injector. In most cases this
>>> should be done once inside SpringWebApplication subclass's init() method.
>>>  at
>>> org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:115)
>>>  at
>>> org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:61)
>>>  at
>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:877)
>>>  ... 40 more
>>> Caused by: java.lang.IllegalStateException: InjectorHolder has not been
>>> assigned an injector. Use InjectorHolder.setInjector() to assign an
>>> injector. In most cases this should be done once inside SpringWebApplication
>>> subclass's init() method.
>>>  at
>>> org.apache.wicket.injection.web.InjectorHolder.getInjector(InjectorHolder.java:64)
>>>  at
>>> com.coastware.vProbe.model.dao.hibernate.UserDAOHibernate.<init>(UserDAOHibernate.java:26)
>>>  at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
>>>  at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
>>>  at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown
>>> Source)
>>>  at java.lang.reflect.Constructor.newInstance(Unknown Source)
>>>  at
>>> org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:100)
>>>  ... 42 more
>>> ======================>
>>> Error when InjectorHolder line is commented out.
>>> ======================>
>>> java.lang.RuntimeException: userDAO is null at
>>> com.coastware.vProbe.service.UserServiceImpl.getUserDAO(UserServiceImpl.java:90)
>>> at
>>> com.coastware.vProbe.service.UserServiceImpl.getUsers(UserServiceImpl.java:68)
>>> at java.lang.reflect.Method.invoke(Unknown Source) at
>>> org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
>>> at
>>> org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:198)
>>> at $Proxy15.getUsers(Unknown Source) at
>>> java.lang.reflect.Method.invoke(Unknown Source) at
>>> org.apache.wicket.proxy.LazyInitProxyFactory$JdkHandler.invoke(LazyInitProxyFactory.java:416)
>>> at org.apache.wicket.proxy.$Proxy16.getUsers(Unknown Source) at
>>> com.coastware.vProbe.HomePage.<init>(HomePage.java:27) at
>>> java.lang.reflect.Constructor.newInstance(Unknown Source) at
>>> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:147)
>>> at
>>> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:66)
>>> at
>>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.newPage(BookmarkablePageRequestTarget.java:272)
>>> at
>>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.getPage(BookmarkablePageRequestTarget.java:293)
>>> at
>>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.processEvents(BookmarkablePageRequestTarget.java:210)
>>> at
>>> org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:91)
>>> at
>>> org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1220)
>>> at org.apache.wicket.RequestCycle.step(RequestCycle.java:1297) at
>>> org.apache.wicket.RequestCycle.steps(RequestCycle.java:1399) at
>>> org.apache.wicket.RequestCycle.request(RequestCycle.java:529) at
>>> org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:356) at
>>> org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:201)
>>> at
>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
>>> at
>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>>> at
>>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
>>> at
>>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
>>> at
>>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
>>> at
>>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
>>> at
>>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
>>> at
>>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
>>> at
>>> org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:857)
>>> at
>>> org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:565)
>>> at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1509)
>>> at java.lang.Thread.run(Unknown Source)
>>>
>>> Complete stack:
>>>
>>> org.apache.wicket.WicketRuntimeException: Can't instantiate page using
>>> constructor public
>>> com.coastware.vProbe.HomePage(org.apache.wicket.PageParameters) and argument
>>> at
>>> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:168)
>>> at
>>> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:66)
>>> at
>>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.newPage(BookmarkablePageRequestTarget.java:272)
>>> at
>>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.getPage(BookmarkablePageRequestTarget.java:293)
>>> at
>>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.processEvents(BookmarkablePageRequestTarget.java:210)
>>> at
>>> org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:91)
>>> at
>>> org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1220)
>>> at org.apache.wicket.RequestCycle.step(RequestCycle.java:1297) at
>>> org.apache.wicket.RequestCycle.steps(RequestCycle.java:1399) at
>>> org.apache.wicket.RequestCycle.request(RequestCycle.java:529) at
>>> org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:356)
>>>
>>> java.lang.reflect.InvocationTargetException at
>>> sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at
>>> sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at
>>> java.lang.reflect.Constructor.newInstance(Unknown Source) at
>>> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:147)
>>> at
>>> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:66)
>>> at
>>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.newPage(BookmarkablePageRequestTarget.java:272)
>>> at
>>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.getPage(BookmarkablePageRequestTarget.java:293)
>>> at
>>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.processEvents(BookmarkablePageRequestTarget.java:210)
>>> at
>>> org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:91)
>>> at
>>> org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1220)
>>> at org.apache.wicket.RequestCycle.step(RequestCycle.java:1297) at
>>> org.apache.wicket.RequestCycle.steps(RequestCycle.java:1399) at
>>> org.apache.wicket.RequestCycle.request(RequestCycle.java:529) at
>>> org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:356)
>>>
>>> ======================>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>>> For additional commands, e-mail: users-help@wicket.apache.org
>>>
>>>
>>>
>>
>>
>>
>>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org


Re: Re: DAO not getting injected, using springbean

Posted by Bruce McGuire <br...@coastware.com>.
Hi Martijn.

Thanks for the quick response.

Are you saying that the dao and the service should have the 
InjectorHolder code, rather than the @Repository and @Service tags?

Bruce.

Martijn Dashorst wrote:
> @SpringBean only works with Components. For all other uses you should
> either call InjectorHolder.getInjector().inject(this) in your
> constructor or use Salve.
>
> Martijn
>
> On Tue, Jun 16, 2009 at 9:26 PM, Bruce McGuire<br...@coastware.com> wrote:
>   
>> Hello.
>>
>> I have created a new small project to try to figure out how to use the
>> SpringBean, Service, and Repository annotations with Wicket, Spring,
>> Hibernate, Maven and Eclipse.
>>
>> However, I am getting an error with a user DAO that I have created.
>>
>> I have a service that is using the dao tagged as @Service, I have the DAO in
>> the service tagged with @SpringBean, and the DAO code itself is tagged with
>> @Repository.  The service that is using the DAO is getting found correctly.
>>
>> When I have the InjectorHolder code in the dao constructor, I get an error
>> that says 'InjectorHolder has not been assigned an injector'
>>
>> When I comment out the InjectorHolder line in the dao constructor, the DAO
>> is null, and getUserDAO throws an exception.
>>
>> Since I am not certain that I can attach files, I will insert the relevant
>> code and exceptions into this email.
>>
>> Any pointers you can give would be greatly appreciated.
>>
>> Thanks very very much,
>>
>> Bruce.
>>
>> UserServiceImpl
>> ======================> @Service("UserService")
>> public class UserServiceImpl implements UserService
>> {
>>   @SpringBean
>>   UserDAO userDAO ;
>>
>>   private UserDAO getUserDAO()
>>   {
>>       if (null =userDAO)
>>       {
>>           throw new RuntimeException("userDAO is null") ;
>>       }
>>
>>       return(userDAO) ;
>>   }
>>
>>   @Override
>>   public List<User> getUsers()
>>   {
>>       return (getUserDAO().findAll());
>>   }
>> ======================>
>> UserDAOHibernate
>> ======================> @Repository("UserDAO")
>> public class UserDAOHibernate extends GenericDAOHibernate<User, String>
>> implements UserDAO
>> {
>>   private static Log log =ogFactory.getLog("UserDAOHibernate");
>>
>>   public UserDAOHibernate()
>>   {
>>       InjectorHolder.getInjector().inject(this);
>>   }
>>
>> ...
>> ======================>
>> HomePage
>> ======================> public class HomePage extends WebPage
>> {
>>   @SpringBean
>>   private UserService userService ;
>>
>>   public HomePage(final PageParameters parameters)
>>   {
>>       super (parameters) ;
>>
>>       List<User> userList =serService.getUsers() ;
>>
>>       RepeatingView rv =ew RepeatingView("Users") ;
>>       for(User user: userList)
>>       {
>>           Label userName =ew Label("username", user.getUsername()) ;
>>           rv.add(userName) ;
>>       }
>>
>>       this.add(rv) ;
>>   }
>> }
>> ======================>
>> CoastwareApplication
>> ======================> public class CoastwareApplication extends WebApplication
>> {
>>   private ApplicationContext ctx;
>>
>>   @SpringBean
>>   private UserService userService ;
>>
>>   protected static Log log =ogFactory.getLog(CoastwareApplication.class) ;
>>
>>   private static ISpringContextLocator CTX_LOCATOR =ew
>> ISpringContextLocator()
>>   {
>>       public ApplicationContext getSpringContext()
>>       {
>>           return(CoastwareApplication.get().ctx) ;
>>       }
>>   } ;
>>
>>   public CoastwareApplication()
>>   {
>>   }
>>
>>   public void init()
>>   {
>>       ctx =ew ClassPathXmlApplicationContext("appContext.xml") ;
>>
>>       addComponentInstantiationListener(new SpringComponentInjector(this));
>>
>>       super.init() ;
>>   }
>>
>>   @Override
>>   public Session newSession(Request request, Response response)
>>   {
>>       return (new WebSession(request)) ;
>>   }
>>
>>   public static CoastwareApplication get()
>>   {
>>       return ((CoastwareApplication) Application.get()) ;
>>   }
>>
>>   private <T> T createProxy(Class<T> clazz)
>>   {
>>       return ((T) LazyInitProxyFactory.createProxy(clazz, new
>> SpringBeanLocator(clazz, CTX_LOCATOR))) ;
>>   }
>>
>>   public Class<HomePage> getHomePage()
>>   {
>>       return HomePage.class;
>>   }
>>
>>   public UserService getUserService()
>>   {
>>       if (null =userService)
>>       {
>>           userService =reateProxy(UserService.class) ;
>>       }
>>       return userService;
>>   }
>> }
>> ======================>
>>
>> Web.xml
>> ======================>   <display-name>vProbe</display-name>
>>
>>   <context-param>
>>       <param-name>contextConfigLocation</param-name>
>>       <param-value>classpath:appContext.xml</param-value>
>>   </context-param>
>>
>>   <context-param>
>>       <param-name>configuration</param-name>
>>       <param-value>development</param-value>
>>   </context-param>
>>
>>   <listener>
>>       <listener-class>
>>           org.springframework.web.context.ContextLoaderListener
>>       </listener-class>
>>   </listener>
>>
>>   <filter>
>>       <filter-name>wicketFilter</filter-name>
>>
>>  <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class>
>>       <init-param>
>>           <param-name>applicationClassName</param-name>
>>
>> <param-value>com.coastware.vProbe.CoastwareApplication</param-value>
>>        </init-param>
>>   </filter>
>>
>>   <filter>
>>       <filter-name>opensessioninview</filter-name>
>>
>> <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
>>   </filter>
>>
>>   <filter-mapping>
>>       <filter-name>wicketFilter</filter-name>
>>       <url-pattern>/*</url-pattern>
>>   </filter-mapping>
>>
>>   <filter-mapping>
>>       <filter-name>opensessioninview</filter-name>
>>       <url-pattern>/*</url-pattern>
>>   </filter-mapping>
>> ======================>
>> appContext.xml
>> ======================> <?xml version="1.0" encoding="UTF-8"?>
>> <beans
>>   default-autowire=utodetect"
>>   xmlns=ttp://www.springframework.org/schema/beans"
>>   xmlns:xsi=ttp://www.w3.org/2001/XMLSchema-instance"
>>   xmlns:aop=ttp://www.springframework.org/schema/aop"
>>   xmlns:tx=ttp://www.springframework.org/schema/tx"
>>   xmlns:context=ttp://www.springframework.org/schema/context"
>>   xsi:schemaLocation=
>>       http://www.springframework.org/schema/beans
>>       http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
>>       http://www.springframework.org/schema/aop
>>       http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
>>       http://www.springframework.org/schema/tx
>>       http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
>>       http://www.springframework.org/schema/context
>>       http://www.springframework.org/schema/context/spring-context-2.5.xsd">
>>
>>   <bean id=ataSource"
>> class=rg.springframework.jdbc.datasource.DriverManagerDataSource">
>>       <property name=rl" value="jdbc:mysql://192.168.15.128/vprobe"/>
>>       <property name=riverClassName" value="com.mysql.jdbc.Driver"/>
>>       <property name=sername" value="vProbe"/>
>>       <property name=assword" value="vProbe"/>
>>   </bean>
>>
>>   <bean id=essionFactory"
>> class=rg.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
>>       <property name=ataSource" ref="dataSource"/>
>>
>>       <property name=ackagesToScan">
>>           <list>
>>               <value>com.coastware.vProbe.model</value>
>>           </list>
>>       </property>
>>
>>       <property name=ibernateProperties">
>>           <props>
>>               <prop
>> key=ibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
>>               <prop key=ibernate.show_sql">true</prop>
>>               <prop key=ibernate.format_sql">true</prop>
>>               <prop key=ibernate.use_sql_comments">true</prop>
>>           </props>
>>       </property>
>>   </bean>
>>
>>   <context:component-scan base-package=om.coastware" />
>>
>>   <bean id=penSessionInViewInterceptor"
>> class=rg.springframework.orm.hibernate3.support.OpenSessionInViewInterceptor">
>>       <property name=essionFactory">
>>           <ref bean=essionFactory"/>
>>       </property>
>>   </bean>
>>
>>   <bean id=ransactionManager"
>> class=rg.springframework.orm.hibernate3.HibernateTransactionManager">
>>       <property name=essionFactory">
>>           <ref bean=essionFactory"/>
>>       </property>
>>   </bean>
>>
>>   <bean id=ibernateTemplate"
>> class=rg.springframework.orm.hibernate3.HibernateTemplate">
>>       <property name=essionFactory">
>>           <ref bean=essionFactory"/>
>>       </property>
>>   </bean>
>>
>>   <tx:annotation-driven transaction-manager=ransactionManager"/>
>>
>>   <bean
>> class=rg.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"/>
>>
>>   <bean
>> class=rg.springframework.transaction.interceptor.TransactionAttributeSourceAdvisor">
>>       <property name=ransactionInterceptor" ref="txInterceptor"/>
>>   </bean>
>>
>>   <bean id=xInterceptor"
>> class=rg.springframework.transaction.interceptor.TransactionInterceptor">
>>       <property name=ransactionManager" ref="transactionManager"/>
>>       <property name=ransactionAttributeSource">
>>           <bean
>> class=rg.springframework.transaction.annotation.AnnotationTransactionAttributeSource"/>
>>       </property>
>>   </bean>
>> </beans>
>> ======================>
>>
>> Error with InjectorHolder line
>> ======================> SEVERE: Exception sending context initialized event to listener instance of
>> class org.springframework.web.context.ContextLoaderListener
>> org.springframework.beans.factory.BeanCreationException: Error creating bean
>> with name 'UserDAO' defined in file [C:\Program Files\Apache Software
>> Foundation\Tomcat
>> 6.0\webapps\vProbe\WEB-INF\classes\com\coastware\vProbe\model\dao\hibernate\UserDAOHibernate.class]:
>> Instantiation of bean failed; nested exception is
>> org.springframework.beans.BeanInstantiationException: Could not instantiate
>> bean class [com.coastware.vProbe.model.dao.hibernate.UserDAOHibernate]:
>> Constructor threw exception; nested exception is
>> java.lang.IllegalStateException: InjectorHolder has not been assigned an
>> injector. Use InjectorHolder.setInjector() to assign an injector. In most
>> cases this should be done once inside SpringWebApplication subclass's init()
>> method.
>>   at
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:883)
>>   at
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:839)
>>   at
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:440)
>>   at
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
>>   at java.security.AccessController.doPrivileged(Native Method)
>>   at
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
>>   at
>> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
>>   at
>> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
>>   at
>> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
>>   at
>> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
>>   at
>> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
>>   at
>> org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429)
>>   at
>> org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728)
>>   at
>> org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380)
>>   at
>> org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255)
>>   at
>> org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199)
>>   at
>> org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45)
>>   at
>> org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3843)
>>   at
>> org.apache.catalina.core.StandardContext.start(StandardContext.java:4342)
>>   at
>> org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
>>   at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
>>   at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
>>   at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:830)
>>   at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:719)
>>   at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:490)
>>   at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1149)
>>   at
>> org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
>>   at
>> org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
>>   at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
>>   at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
>>   at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
>>   at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
>>   at
>> org.apache.catalina.core.StandardService.start(StandardService.java:516)
>>   at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
>>   at org.apache.catalina.startup.Catalina.start(Catalina.java:578)
>>   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.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
>>   at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
>> Caused by: org.springframework.beans.BeanInstantiationException: Could not
>> instantiate bean class
>> [com.coastware.vProbe.model.dao.hibernate.UserDAOHibernate]: Constructor
>> threw exception; nested exception is java.lang.IllegalStateException:
>> InjectorHolder has not been assigned an injector. Use
>> InjectorHolder.setInjector() to assign an injector. In most cases this
>> should be done once inside SpringWebApplication subclass's init() method.
>>   at
>> org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:115)
>>   at
>> org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:61)
>>   at
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:877)
>>   ... 40 more
>> Caused by: java.lang.IllegalStateException: InjectorHolder has not been
>> assigned an injector. Use InjectorHolder.setInjector() to assign an
>> injector. In most cases this should be done once inside SpringWebApplication
>> subclass's init() method.
>>   at
>> org.apache.wicket.injection.web.InjectorHolder.getInjector(InjectorHolder.java:64)
>>   at
>> com.coastware.vProbe.model.dao.hibernate.UserDAOHibernate.<init>(UserDAOHibernate.java:26)
>>   at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
>>   at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
>>   at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown
>> Source)
>>   at java.lang.reflect.Constructor.newInstance(Unknown Source)
>>   at
>> org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:100)
>>   ... 42 more
>> ======================>
>> Error when InjectorHolder line is commented out.
>> ======================>
>> java.lang.RuntimeException: userDAO is null at
>> com.coastware.vProbe.service.UserServiceImpl.getUserDAO(UserServiceImpl.java:90)
>> at
>> com.coastware.vProbe.service.UserServiceImpl.getUsers(UserServiceImpl.java:68)
>> at java.lang.reflect.Method.invoke(Unknown Source) at
>> org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
>> at
>> org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:198)
>> at $Proxy15.getUsers(Unknown Source) at
>> java.lang.reflect.Method.invoke(Unknown Source) at
>> org.apache.wicket.proxy.LazyInitProxyFactory$JdkHandler.invoke(LazyInitProxyFactory.java:416)
>> at org.apache.wicket.proxy.$Proxy16.getUsers(Unknown Source) at
>> com.coastware.vProbe.HomePage.<init>(HomePage.java:27) at
>> java.lang.reflect.Constructor.newInstance(Unknown Source) at
>> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:147)
>> at
>> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:66)
>> at
>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.newPage(BookmarkablePageRequestTarget.java:272)
>> at
>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.getPage(BookmarkablePageRequestTarget.java:293)
>> at
>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.processEvents(BookmarkablePageRequestTarget.java:210)
>> at
>> org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:91)
>> at
>> org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1220)
>> at org.apache.wicket.RequestCycle.step(RequestCycle.java:1297) at
>> org.apache.wicket.RequestCycle.steps(RequestCycle.java:1399) at
>> org.apache.wicket.RequestCycle.request(RequestCycle.java:529) at
>> org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:356) at
>> org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:201)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>> at
>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
>> at
>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
>> at
>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
>> at
>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
>> at
>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
>> at
>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
>> at
>> org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:857)
>> at
>> org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:565)
>> at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1509)
>> at java.lang.Thread.run(Unknown Source)
>>
>> Complete stack:
>>
>> org.apache.wicket.WicketRuntimeException: Can't instantiate page using
>> constructor public
>> com.coastware.vProbe.HomePage(org.apache.wicket.PageParameters) and argument
>> at
>> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:168)
>> at
>> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:66)
>> at
>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.newPage(BookmarkablePageRequestTarget.java:272)
>> at
>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.getPage(BookmarkablePageRequestTarget.java:293)
>> at
>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.processEvents(BookmarkablePageRequestTarget.java:210)
>> at
>> org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:91)
>> at
>> org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1220)
>> at org.apache.wicket.RequestCycle.step(RequestCycle.java:1297) at
>> org.apache.wicket.RequestCycle.steps(RequestCycle.java:1399) at
>> org.apache.wicket.RequestCycle.request(RequestCycle.java:529) at
>> org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:356)
>>
>> java.lang.reflect.InvocationTargetException at
>> sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at
>> sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at
>> java.lang.reflect.Constructor.newInstance(Unknown Source) at
>> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:147)
>> at
>> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:66)
>> at
>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.newPage(BookmarkablePageRequestTarget.java:272)
>> at
>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.getPage(BookmarkablePageRequestTarget.java:293)
>> at
>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.processEvents(BookmarkablePageRequestTarget.java:210)
>> at
>> org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:91)
>> at
>> org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1220)
>> at org.apache.wicket.RequestCycle.step(RequestCycle.java:1297) at
>> org.apache.wicket.RequestCycle.steps(RequestCycle.java:1399) at
>> org.apache.wicket.RequestCycle.request(RequestCycle.java:529) at
>> org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:356)
>>
>> ======================>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>> For additional commands, e-mail: users-help@wicket.apache.org
>>
>>
>>     
>
>
>
>   

Re: DAO not getting injected, using springbean

Posted by Martijn Dashorst <ma...@gmail.com>.
However, you should let spring handle that one, as it is already a
spring managed bean.

Martijn

On Tue, Jun 16, 2009 at 9:34 PM, Martijn
Dashorst<ma...@gmail.com> wrote:
> @SpringBean only works with Components. For all other uses you should
> either call InjectorHolder.getInjector().inject(this) in your
> constructor or use Salve.
>
> Martijn
>
> On Tue, Jun 16, 2009 at 9:26 PM, Bruce McGuire<br...@coastware.com> wrote:
>> Hello.
>>
>> I have created a new small project to try to figure out how to use the
>> SpringBean, Service, and Repository annotations with Wicket, Spring,
>> Hibernate, Maven and Eclipse.
>>
>> However, I am getting an error with a user DAO that I have created.
>>
>> I have a service that is using the dao tagged as @Service, I have the DAO in
>> the service tagged with @SpringBean, and the DAO code itself is tagged with
>> @Repository.  The service that is using the DAO is getting found correctly.
>>
>> When I have the InjectorHolder code in the dao constructor, I get an error
>> that says 'InjectorHolder has not been assigned an injector'
>>
>> When I comment out the InjectorHolder line in the dao constructor, the DAO
>> is null, and getUserDAO throws an exception.
>>
>> Since I am not certain that I can attach files, I will insert the relevant
>> code and exceptions into this email.
>>
>> Any pointers you can give would be greatly appreciated.
>>
>> Thanks very very much,
>>
>> Bruce.
>>
>> UserServiceImpl
>> =========================
>> @Service("UserService")
>> public class UserServiceImpl implements UserService
>> {
>>   @SpringBean
>>   UserDAO userDAO ;
>>
>>   private UserDAO getUserDAO()
>>   {
>>       if (null == userDAO)
>>       {
>>           throw new RuntimeException("userDAO is null") ;
>>       }
>>
>>       return(userDAO) ;
>>   }
>>
>>   @Override
>>   public List<User> getUsers()
>>   {
>>       return (getUserDAO().findAll());
>>   }
>> =========================
>>
>> UserDAOHibernate
>> =========================
>> @Repository("UserDAO")
>> public class UserDAOHibernate extends GenericDAOHibernate<User, String>
>> implements UserDAO
>> {
>>   private static Log log = LogFactory.getLog("UserDAOHibernate");
>>
>>   public UserDAOHibernate()
>>   {
>>       InjectorHolder.getInjector().inject(this);
>>   }
>>
>> ...
>> =========================
>>
>> HomePage
>> =========================
>> public class HomePage extends WebPage
>> {
>>   @SpringBean
>>   private UserService userService ;
>>
>>   public HomePage(final PageParameters parameters)
>>   {
>>       super (parameters) ;
>>
>>       List<User> userList = userService.getUsers() ;
>>
>>       RepeatingView rv = new RepeatingView("Users") ;
>>       for(User user: userList)
>>       {
>>           Label userName = new Label("username", user.getUsername()) ;
>>           rv.add(userName) ;
>>       }
>>
>>       this.add(rv) ;
>>   }
>> }
>> =========================
>>
>> CoastwareApplication
>> =========================
>> public class CoastwareApplication extends WebApplication
>> {
>>   private ApplicationContext ctx;
>>
>>   @SpringBean
>>   private UserService userService ;
>>
>>   protected static Log log = LogFactory.getLog(CoastwareApplication.class) ;
>>
>>   private static ISpringContextLocator CTX_LOCATOR = new
>> ISpringContextLocator()
>>   {
>>       public ApplicationContext getSpringContext()
>>       {
>>           return(CoastwareApplication.get().ctx) ;
>>       }
>>   } ;
>>
>>   public CoastwareApplication()
>>   {
>>   }
>>
>>   public void init()
>>   {
>>       ctx = new ClassPathXmlApplicationContext("appContext.xml") ;
>>
>>       addComponentInstantiationListener(new SpringComponentInjector(this));
>>
>>       super.init() ;
>>   }
>>
>>   @Override
>>   public Session newSession(Request request, Response response)
>>   {
>>       return (new WebSession(request)) ;
>>   }
>>
>>   public static CoastwareApplication get()
>>   {
>>       return ((CoastwareApplication) Application.get()) ;
>>   }
>>
>>   private <T> T createProxy(Class<T> clazz)
>>   {
>>       return ((T) LazyInitProxyFactory.createProxy(clazz, new
>> SpringBeanLocator(clazz, CTX_LOCATOR))) ;
>>   }
>>
>>   public Class<HomePage> getHomePage()
>>   {
>>       return HomePage.class;
>>   }
>>
>>   public UserService getUserService()
>>   {
>>       if (null == userService)
>>       {
>>           userService = createProxy(UserService.class) ;
>>       }
>>       return userService;
>>   }
>> }
>> =========================
>>
>>
>> Web.xml
>> =========================
>>   <display-name>vProbe</display-name>
>>
>>   <context-param>
>>       <param-name>contextConfigLocation</param-name>
>>       <param-value>classpath:appContext.xml</param-value>
>>   </context-param>
>>
>>   <context-param>
>>       <param-name>configuration</param-name>
>>       <param-value>development</param-value>
>>   </context-param>
>>
>>   <listener>
>>       <listener-class>
>>           org.springframework.web.context.ContextLoaderListener
>>       </listener-class>
>>   </listener>
>>
>>   <filter>
>>       <filter-name>wicketFilter</filter-name>
>>
>>  <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class>
>>       <init-param>
>>           <param-name>applicationClassName</param-name>
>>
>> <param-value>com.coastware.vProbe.CoastwareApplication</param-value>
>>        </init-param>
>>   </filter>
>>
>>   <filter>
>>       <filter-name>opensessioninview</filter-name>
>>
>> <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
>>   </filter>
>>
>>   <filter-mapping>
>>       <filter-name>wicketFilter</filter-name>
>>       <url-pattern>/*</url-pattern>
>>   </filter-mapping>
>>
>>   <filter-mapping>
>>       <filter-name>opensessioninview</filter-name>
>>       <url-pattern>/*</url-pattern>
>>   </filter-mapping>
>> =========================
>>
>> appContext.xml
>> =========================
>> <?xml version="1.0" encoding="UTF-8"?>
>> <beans
>>   default-autowire="autodetect"
>>   xmlns="http://www.springframework.org/schema/beans"
>>   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>   xmlns:aop="http://www.springframework.org/schema/aop"
>>   xmlns:tx="http://www.springframework.org/schema/tx"
>>   xmlns:context="http://www.springframework.org/schema/context"
>>   xsi:schemaLocation="
>>       http://www.springframework.org/schema/beans
>>       http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
>>       http://www.springframework.org/schema/aop
>>       http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
>>       http://www.springframework.org/schema/tx
>>       http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
>>       http://www.springframework.org/schema/context
>>       http://www.springframework.org/schema/context/spring-context-2.5.xsd">
>>
>>   <bean id="dataSource"
>> class="org.springframework.jdbc.datasource.DriverManagerDataSource">
>>       <property name="url" value="jdbc:mysql://192.168.15.128/vprobe"/>
>>       <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
>>       <property name="username" value="vProbe"/>
>>       <property name="password" value="vProbe"/>
>>   </bean>
>>
>>   <bean id="sessionFactory"
>> class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
>>       <property name="dataSource" ref="dataSource"/>
>>
>>       <property name="packagesToScan">
>>           <list>
>>               <value>com.coastware.vProbe.model</value>
>>           </list>
>>       </property>
>>
>>       <property name="hibernateProperties">
>>           <props>
>>               <prop
>> key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
>>               <prop key="hibernate.show_sql">true</prop>
>>               <prop key="hibernate.format_sql">true</prop>
>>               <prop key="hibernate.use_sql_comments">true</prop>
>>           </props>
>>       </property>
>>   </bean>
>>
>>   <context:component-scan base-package="com.coastware" />
>>
>>   <bean id="openSessionInViewInterceptor"
>> class="org.springframework.orm.hibernate3.support.OpenSessionInViewInterceptor">
>>       <property name="sessionFactory">
>>           <ref bean="sessionFactory"/>
>>       </property>
>>   </bean>
>>
>>   <bean id="transactionManager"
>> class="org.springframework.orm.hibernate3.HibernateTransactionManager">
>>       <property name="sessionFactory">
>>           <ref bean="sessionFactory"/>
>>       </property>
>>   </bean>
>>
>>   <bean id="hibernateTemplate"
>> class="org.springframework.orm.hibernate3.HibernateTemplate">
>>       <property name="sessionFactory">
>>           <ref bean="sessionFactory"/>
>>       </property>
>>   </bean>
>>
>>   <tx:annotation-driven transaction-manager="transactionManager"/>
>>
>>   <bean
>> class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"/>
>>
>>   <bean
>> class="org.springframework.transaction.interceptor.TransactionAttributeSourceAdvisor">
>>       <property name="transactionInterceptor" ref="txInterceptor"/>
>>   </bean>
>>
>>   <bean id="txInterceptor"
>> class="org.springframework.transaction.interceptor.TransactionInterceptor">
>>       <property name="transactionManager" ref="transactionManager"/>
>>       <property name="transactionAttributeSource">
>>           <bean
>> class="org.springframework.transaction.annotation.AnnotationTransactionAttributeSource"/>
>>       </property>
>>   </bean>
>> </beans>
>> =========================
>>
>>
>> Error with InjectorHolder line
>> =========================
>> SEVERE: Exception sending context initialized event to listener instance of
>> class org.springframework.web.context.ContextLoaderListener
>> org.springframework.beans.factory.BeanCreationException: Error creating bean
>> with name 'UserDAO' defined in file [C:\Program Files\Apache Software
>> Foundation\Tomcat
>> 6.0\webapps\vProbe\WEB-INF\classes\com\coastware\vProbe\model\dao\hibernate\UserDAOHibernate.class]:
>> Instantiation of bean failed; nested exception is
>> org.springframework.beans.BeanInstantiationException: Could not instantiate
>> bean class [com.coastware.vProbe.model.dao.hibernate.UserDAOHibernate]:
>> Constructor threw exception; nested exception is
>> java.lang.IllegalStateException: InjectorHolder has not been assigned an
>> injector. Use InjectorHolder.setInjector() to assign an injector. In most
>> cases this should be done once inside SpringWebApplication subclass's init()
>> method.
>>   at
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:883)
>>   at
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:839)
>>   at
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:440)
>>   at
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
>>   at java.security.AccessController.doPrivileged(Native Method)
>>   at
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
>>   at
>> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
>>   at
>> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
>>   at
>> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
>>   at
>> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
>>   at
>> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
>>   at
>> org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429)
>>   at
>> org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728)
>>   at
>> org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380)
>>   at
>> org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255)
>>   at
>> org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199)
>>   at
>> org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45)
>>   at
>> org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3843)
>>   at
>> org.apache.catalina.core.StandardContext.start(StandardContext.java:4342)
>>   at
>> org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
>>   at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
>>   at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
>>   at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:830)
>>   at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:719)
>>   at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:490)
>>   at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1149)
>>   at
>> org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
>>   at
>> org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
>>   at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
>>   at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
>>   at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
>>   at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
>>   at
>> org.apache.catalina.core.StandardService.start(StandardService.java:516)
>>   at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
>>   at org.apache.catalina.startup.Catalina.start(Catalina.java:578)
>>   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.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
>>   at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
>> Caused by: org.springframework.beans.BeanInstantiationException: Could not
>> instantiate bean class
>> [com.coastware.vProbe.model.dao.hibernate.UserDAOHibernate]: Constructor
>> threw exception; nested exception is java.lang.IllegalStateException:
>> InjectorHolder has not been assigned an injector. Use
>> InjectorHolder.setInjector() to assign an injector. In most cases this
>> should be done once inside SpringWebApplication subclass's init() method.
>>   at
>> org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:115)
>>   at
>> org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:61)
>>   at
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:877)
>>   ... 40 more
>> Caused by: java.lang.IllegalStateException: InjectorHolder has not been
>> assigned an injector. Use InjectorHolder.setInjector() to assign an
>> injector. In most cases this should be done once inside SpringWebApplication
>> subclass's init() method.
>>   at
>> org.apache.wicket.injection.web.InjectorHolder.getInjector(InjectorHolder.java:64)
>>   at
>> com.coastware.vProbe.model.dao.hibernate.UserDAOHibernate.<init>(UserDAOHibernate.java:26)
>>   at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
>>   at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
>>   at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown
>> Source)
>>   at java.lang.reflect.Constructor.newInstance(Unknown Source)
>>   at
>> org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:100)
>>   ... 42 more
>> =========================
>>
>> Error when InjectorHolder line is commented out.
>> =========================
>>
>> java.lang.RuntimeException: userDAO is null at
>> com.coastware.vProbe.service.UserServiceImpl.getUserDAO(UserServiceImpl.java:90)
>> at
>> com.coastware.vProbe.service.UserServiceImpl.getUsers(UserServiceImpl.java:68)
>> at java.lang.reflect.Method.invoke(Unknown Source) at
>> org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
>> at
>> org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:198)
>> at $Proxy15.getUsers(Unknown Source) at
>> java.lang.reflect.Method.invoke(Unknown Source) at
>> org.apache.wicket.proxy.LazyInitProxyFactory$JdkHandler.invoke(LazyInitProxyFactory.java:416)
>> at org.apache.wicket.proxy.$Proxy16.getUsers(Unknown Source) at
>> com.coastware.vProbe.HomePage.<init>(HomePage.java:27) at
>> java.lang.reflect.Constructor.newInstance(Unknown Source) at
>> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:147)
>> at
>> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:66)
>> at
>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.newPage(BookmarkablePageRequestTarget.java:272)
>> at
>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.getPage(BookmarkablePageRequestTarget.java:293)
>> at
>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.processEvents(BookmarkablePageRequestTarget.java:210)
>> at
>> org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:91)
>> at
>> org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1220)
>> at org.apache.wicket.RequestCycle.step(RequestCycle.java:1297) at
>> org.apache.wicket.RequestCycle.steps(RequestCycle.java:1399) at
>> org.apache.wicket.RequestCycle.request(RequestCycle.java:529) at
>> org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:356) at
>> org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:201)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>> at
>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
>> at
>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
>> at
>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
>> at
>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
>> at
>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
>> at
>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
>> at
>> org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:857)
>> at
>> org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:565)
>> at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1509)
>> at java.lang.Thread.run(Unknown Source)
>>
>> Complete stack:
>>
>> org.apache.wicket.WicketRuntimeException: Can't instantiate page using
>> constructor public
>> com.coastware.vProbe.HomePage(org.apache.wicket.PageParameters) and argument
>> at
>> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:168)
>> at
>> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:66)
>> at
>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.newPage(BookmarkablePageRequestTarget.java:272)
>> at
>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.getPage(BookmarkablePageRequestTarget.java:293)
>> at
>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.processEvents(BookmarkablePageRequestTarget.java:210)
>> at
>> org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:91)
>> at
>> org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1220)
>> at org.apache.wicket.RequestCycle.step(RequestCycle.java:1297) at
>> org.apache.wicket.RequestCycle.steps(RequestCycle.java:1399) at
>> org.apache.wicket.RequestCycle.request(RequestCycle.java:529) at
>> org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:356)
>>
>> java.lang.reflect.InvocationTargetException at
>> sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at
>> sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at
>> java.lang.reflect.Constructor.newInstance(Unknown Source) at
>> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:147)
>> at
>> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:66)
>> at
>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.newPage(BookmarkablePageRequestTarget.java:272)
>> at
>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.getPage(BookmarkablePageRequestTarget.java:293)
>> at
>> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.processEvents(BookmarkablePageRequestTarget.java:210)
>> at
>> org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:91)
>> at
>> org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1220)
>> at org.apache.wicket.RequestCycle.step(RequestCycle.java:1297) at
>> org.apache.wicket.RequestCycle.steps(RequestCycle.java:1399) at
>> org.apache.wicket.RequestCycle.request(RequestCycle.java:529) at
>> org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:356)
>>
>> =========================
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>> For additional commands, e-mail: users-help@wicket.apache.org
>>
>>
>
>
>
> --
> Become a Wicket expert, learn from the best: http://wicketinaction.com
> Apache Wicket 1.3.5 is released
> Get it now: http://www.apache.org/dyn/closer.cgi/wicket/1.3.
>



-- 
Become a Wicket expert, learn from the best: http://wicketinaction.com
Apache Wicket 1.3.5 is released
Get it now: http://www.apache.org/dyn/closer.cgi/wicket/1.3.

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org


Re: DAO not getting injected, using springbean

Posted by Martijn Dashorst <ma...@gmail.com>.
@SpringBean only works with Components. For all other uses you should
either call InjectorHolder.getInjector().inject(this) in your
constructor or use Salve.

Martijn

On Tue, Jun 16, 2009 at 9:26 PM, Bruce McGuire<br...@coastware.com> wrote:
> Hello.
>
> I have created a new small project to try to figure out how to use the
> SpringBean, Service, and Repository annotations with Wicket, Spring,
> Hibernate, Maven and Eclipse.
>
> However, I am getting an error with a user DAO that I have created.
>
> I have a service that is using the dao tagged as @Service, I have the DAO in
> the service tagged with @SpringBean, and the DAO code itself is tagged with
> @Repository.  The service that is using the DAO is getting found correctly.
>
> When I have the InjectorHolder code in the dao constructor, I get an error
> that says 'InjectorHolder has not been assigned an injector'
>
> When I comment out the InjectorHolder line in the dao constructor, the DAO
> is null, and getUserDAO throws an exception.
>
> Since I am not certain that I can attach files, I will insert the relevant
> code and exceptions into this email.
>
> Any pointers you can give would be greatly appreciated.
>
> Thanks very very much,
>
> Bruce.
>
> UserServiceImpl
> =========================
> @Service("UserService")
> public class UserServiceImpl implements UserService
> {
>   @SpringBean
>   UserDAO userDAO ;
>
>   private UserDAO getUserDAO()
>   {
>       if (null == userDAO)
>       {
>           throw new RuntimeException("userDAO is null") ;
>       }
>
>       return(userDAO) ;
>   }
>
>   @Override
>   public List<User> getUsers()
>   {
>       return (getUserDAO().findAll());
>   }
> =========================
>
> UserDAOHibernate
> =========================
> @Repository("UserDAO")
> public class UserDAOHibernate extends GenericDAOHibernate<User, String>
> implements UserDAO
> {
>   private static Log log = LogFactory.getLog("UserDAOHibernate");
>
>   public UserDAOHibernate()
>   {
>       InjectorHolder.getInjector().inject(this);
>   }
>
> ...
> =========================
>
> HomePage
> =========================
> public class HomePage extends WebPage
> {
>   @SpringBean
>   private UserService userService ;
>
>   public HomePage(final PageParameters parameters)
>   {
>       super (parameters) ;
>
>       List<User> userList = userService.getUsers() ;
>
>       RepeatingView rv = new RepeatingView("Users") ;
>       for(User user: userList)
>       {
>           Label userName = new Label("username", user.getUsername()) ;
>           rv.add(userName) ;
>       }
>
>       this.add(rv) ;
>   }
> }
> =========================
>
> CoastwareApplication
> =========================
> public class CoastwareApplication extends WebApplication
> {
>   private ApplicationContext ctx;
>
>   @SpringBean
>   private UserService userService ;
>
>   protected static Log log = LogFactory.getLog(CoastwareApplication.class) ;
>
>   private static ISpringContextLocator CTX_LOCATOR = new
> ISpringContextLocator()
>   {
>       public ApplicationContext getSpringContext()
>       {
>           return(CoastwareApplication.get().ctx) ;
>       }
>   } ;
>
>   public CoastwareApplication()
>   {
>   }
>
>   public void init()
>   {
>       ctx = new ClassPathXmlApplicationContext("appContext.xml") ;
>
>       addComponentInstantiationListener(new SpringComponentInjector(this));
>
>       super.init() ;
>   }
>
>   @Override
>   public Session newSession(Request request, Response response)
>   {
>       return (new WebSession(request)) ;
>   }
>
>   public static CoastwareApplication get()
>   {
>       return ((CoastwareApplication) Application.get()) ;
>   }
>
>   private <T> T createProxy(Class<T> clazz)
>   {
>       return ((T) LazyInitProxyFactory.createProxy(clazz, new
> SpringBeanLocator(clazz, CTX_LOCATOR))) ;
>   }
>
>   public Class<HomePage> getHomePage()
>   {
>       return HomePage.class;
>   }
>
>   public UserService getUserService()
>   {
>       if (null == userService)
>       {
>           userService = createProxy(UserService.class) ;
>       }
>       return userService;
>   }
> }
> =========================
>
>
> Web.xml
> =========================
>   <display-name>vProbe</display-name>
>
>   <context-param>
>       <param-name>contextConfigLocation</param-name>
>       <param-value>classpath:appContext.xml</param-value>
>   </context-param>
>
>   <context-param>
>       <param-name>configuration</param-name>
>       <param-value>development</param-value>
>   </context-param>
>
>   <listener>
>       <listener-class>
>           org.springframework.web.context.ContextLoaderListener
>       </listener-class>
>   </listener>
>
>   <filter>
>       <filter-name>wicketFilter</filter-name>
>
>  <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class>
>       <init-param>
>           <param-name>applicationClassName</param-name>
>
> <param-value>com.coastware.vProbe.CoastwareApplication</param-value>
>        </init-param>
>   </filter>
>
>   <filter>
>       <filter-name>opensessioninview</filter-name>
>
> <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
>   </filter>
>
>   <filter-mapping>
>       <filter-name>wicketFilter</filter-name>
>       <url-pattern>/*</url-pattern>
>   </filter-mapping>
>
>   <filter-mapping>
>       <filter-name>opensessioninview</filter-name>
>       <url-pattern>/*</url-pattern>
>   </filter-mapping>
> =========================
>
> appContext.xml
> =========================
> <?xml version="1.0" encoding="UTF-8"?>
> <beans
>   default-autowire="autodetect"
>   xmlns="http://www.springframework.org/schema/beans"
>   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>   xmlns:aop="http://www.springframework.org/schema/aop"
>   xmlns:tx="http://www.springframework.org/schema/tx"
>   xmlns:context="http://www.springframework.org/schema/context"
>   xsi:schemaLocation="
>       http://www.springframework.org/schema/beans
>       http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
>       http://www.springframework.org/schema/aop
>       http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
>       http://www.springframework.org/schema/tx
>       http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
>       http://www.springframework.org/schema/context
>       http://www.springframework.org/schema/context/spring-context-2.5.xsd">
>
>   <bean id="dataSource"
> class="org.springframework.jdbc.datasource.DriverManagerDataSource">
>       <property name="url" value="jdbc:mysql://192.168.15.128/vprobe"/>
>       <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
>       <property name="username" value="vProbe"/>
>       <property name="password" value="vProbe"/>
>   </bean>
>
>   <bean id="sessionFactory"
> class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
>       <property name="dataSource" ref="dataSource"/>
>
>       <property name="packagesToScan">
>           <list>
>               <value>com.coastware.vProbe.model</value>
>           </list>
>       </property>
>
>       <property name="hibernateProperties">
>           <props>
>               <prop
> key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
>               <prop key="hibernate.show_sql">true</prop>
>               <prop key="hibernate.format_sql">true</prop>
>               <prop key="hibernate.use_sql_comments">true</prop>
>           </props>
>       </property>
>   </bean>
>
>   <context:component-scan base-package="com.coastware" />
>
>   <bean id="openSessionInViewInterceptor"
> class="org.springframework.orm.hibernate3.support.OpenSessionInViewInterceptor">
>       <property name="sessionFactory">
>           <ref bean="sessionFactory"/>
>       </property>
>   </bean>
>
>   <bean id="transactionManager"
> class="org.springframework.orm.hibernate3.HibernateTransactionManager">
>       <property name="sessionFactory">
>           <ref bean="sessionFactory"/>
>       </property>
>   </bean>
>
>   <bean id="hibernateTemplate"
> class="org.springframework.orm.hibernate3.HibernateTemplate">
>       <property name="sessionFactory">
>           <ref bean="sessionFactory"/>
>       </property>
>   </bean>
>
>   <tx:annotation-driven transaction-manager="transactionManager"/>
>
>   <bean
> class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"/>
>
>   <bean
> class="org.springframework.transaction.interceptor.TransactionAttributeSourceAdvisor">
>       <property name="transactionInterceptor" ref="txInterceptor"/>
>   </bean>
>
>   <bean id="txInterceptor"
> class="org.springframework.transaction.interceptor.TransactionInterceptor">
>       <property name="transactionManager" ref="transactionManager"/>
>       <property name="transactionAttributeSource">
>           <bean
> class="org.springframework.transaction.annotation.AnnotationTransactionAttributeSource"/>
>       </property>
>   </bean>
> </beans>
> =========================
>
>
> Error with InjectorHolder line
> =========================
> SEVERE: Exception sending context initialized event to listener instance of
> class org.springframework.web.context.ContextLoaderListener
> org.springframework.beans.factory.BeanCreationException: Error creating bean
> with name 'UserDAO' defined in file [C:\Program Files\Apache Software
> Foundation\Tomcat
> 6.0\webapps\vProbe\WEB-INF\classes\com\coastware\vProbe\model\dao\hibernate\UserDAOHibernate.class]:
> Instantiation of bean failed; nested exception is
> org.springframework.beans.BeanInstantiationException: Could not instantiate
> bean class [com.coastware.vProbe.model.dao.hibernate.UserDAOHibernate]:
> Constructor threw exception; nested exception is
> java.lang.IllegalStateException: InjectorHolder has not been assigned an
> injector. Use InjectorHolder.setInjector() to assign an injector. In most
> cases this should be done once inside SpringWebApplication subclass's init()
> method.
>   at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:883)
>   at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:839)
>   at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:440)
>   at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
>   at java.security.AccessController.doPrivileged(Native Method)
>   at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
>   at
> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
>   at
> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
>   at
> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
>   at
> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
>   at
> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
>   at
> org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429)
>   at
> org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728)
>   at
> org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380)
>   at
> org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255)
>   at
> org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199)
>   at
> org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45)
>   at
> org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3843)
>   at
> org.apache.catalina.core.StandardContext.start(StandardContext.java:4342)
>   at
> org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
>   at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
>   at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
>   at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:830)
>   at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:719)
>   at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:490)
>   at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1149)
>   at
> org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
>   at
> org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
>   at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
>   at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
>   at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
>   at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
>   at
> org.apache.catalina.core.StandardService.start(StandardService.java:516)
>   at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
>   at org.apache.catalina.startup.Catalina.start(Catalina.java:578)
>   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.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
>   at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
> Caused by: org.springframework.beans.BeanInstantiationException: Could not
> instantiate bean class
> [com.coastware.vProbe.model.dao.hibernate.UserDAOHibernate]: Constructor
> threw exception; nested exception is java.lang.IllegalStateException:
> InjectorHolder has not been assigned an injector. Use
> InjectorHolder.setInjector() to assign an injector. In most cases this
> should be done once inside SpringWebApplication subclass's init() method.
>   at
> org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:115)
>   at
> org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:61)
>   at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:877)
>   ... 40 more
> Caused by: java.lang.IllegalStateException: InjectorHolder has not been
> assigned an injector. Use InjectorHolder.setInjector() to assign an
> injector. In most cases this should be done once inside SpringWebApplication
> subclass's init() method.
>   at
> org.apache.wicket.injection.web.InjectorHolder.getInjector(InjectorHolder.java:64)
>   at
> com.coastware.vProbe.model.dao.hibernate.UserDAOHibernate.<init>(UserDAOHibernate.java:26)
>   at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
>   at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
>   at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown
> Source)
>   at java.lang.reflect.Constructor.newInstance(Unknown Source)
>   at
> org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:100)
>   ... 42 more
> =========================
>
> Error when InjectorHolder line is commented out.
> =========================
>
> java.lang.RuntimeException: userDAO is null at
> com.coastware.vProbe.service.UserServiceImpl.getUserDAO(UserServiceImpl.java:90)
> at
> com.coastware.vProbe.service.UserServiceImpl.getUsers(UserServiceImpl.java:68)
> at java.lang.reflect.Method.invoke(Unknown Source) at
> org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
> at
> org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:198)
> at $Proxy15.getUsers(Unknown Source) at
> java.lang.reflect.Method.invoke(Unknown Source) at
> org.apache.wicket.proxy.LazyInitProxyFactory$JdkHandler.invoke(LazyInitProxyFactory.java:416)
> at org.apache.wicket.proxy.$Proxy16.getUsers(Unknown Source) at
> com.coastware.vProbe.HomePage.<init>(HomePage.java:27) at
> java.lang.reflect.Constructor.newInstance(Unknown Source) at
> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:147)
> at
> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:66)
> at
> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.newPage(BookmarkablePageRequestTarget.java:272)
> at
> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.getPage(BookmarkablePageRequestTarget.java:293)
> at
> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.processEvents(BookmarkablePageRequestTarget.java:210)
> at
> org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:91)
> at
> org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1220)
> at org.apache.wicket.RequestCycle.step(RequestCycle.java:1297) at
> org.apache.wicket.RequestCycle.steps(RequestCycle.java:1399) at
> org.apache.wicket.RequestCycle.request(RequestCycle.java:529) at
> org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:356) at
> org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:201)
> at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
> at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
> at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
> at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
> at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
> at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
> at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
> at
> org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:857)
> at
> org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:565)
> at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1509)
> at java.lang.Thread.run(Unknown Source)
>
> Complete stack:
>
> org.apache.wicket.WicketRuntimeException: Can't instantiate page using
> constructor public
> com.coastware.vProbe.HomePage(org.apache.wicket.PageParameters) and argument
> at
> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:168)
> at
> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:66)
> at
> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.newPage(BookmarkablePageRequestTarget.java:272)
> at
> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.getPage(BookmarkablePageRequestTarget.java:293)
> at
> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.processEvents(BookmarkablePageRequestTarget.java:210)
> at
> org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:91)
> at
> org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1220)
> at org.apache.wicket.RequestCycle.step(RequestCycle.java:1297) at
> org.apache.wicket.RequestCycle.steps(RequestCycle.java:1399) at
> org.apache.wicket.RequestCycle.request(RequestCycle.java:529) at
> org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:356)
>
> java.lang.reflect.InvocationTargetException at
> sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at
> sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at
> java.lang.reflect.Constructor.newInstance(Unknown Source) at
> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:147)
> at
> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:66)
> at
> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.newPage(BookmarkablePageRequestTarget.java:272)
> at
> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.getPage(BookmarkablePageRequestTarget.java:293)
> at
> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.processEvents(BookmarkablePageRequestTarget.java:210)
> at
> org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:91)
> at
> org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1220)
> at org.apache.wicket.RequestCycle.step(RequestCycle.java:1297) at
> org.apache.wicket.RequestCycle.steps(RequestCycle.java:1399) at
> org.apache.wicket.RequestCycle.request(RequestCycle.java:529) at
> org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:356)
>
> =========================
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>



-- 
Become a Wicket expert, learn from the best: http://wicketinaction.com
Apache Wicket 1.3.5 is released
Get it now: http://www.apache.org/dyn/closer.cgi/wicket/1.3.

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org