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