transitDataService v. bundlePath

90 views
Skip to first unread message

Michael Scheper

unread,
Jun 14, 2012, 7:16:52 AM6/14/12
to onebusa...@googlegroups.com
G'day people,

Sorry if this is a silly question, but I'm not understanding the purpose of the transitDataService when we're using a GTFS bundle.

I've built and deployed onebusaway-combined-webapp-1.0.7-api-only.war on our Tomcat 7 server. I'm not getting any exceptions when I launch, but when I request http://my.server:8080/api/where/agencies-with-coverage.xml?key=TEST, I get this response:

HTTP Status 500 -




type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

Unable to instantiate Action, org.onebusaway.api.actions.api.where.AgenciesWithCoverageAction,  defined for 'agencies-with-coverage' in namespace '/api/where'Error creating bean with name 'org.onebusaway.api.actions.api.where.AgenciesWithCoverageAction': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.onebusaway.transit_data.services.TransitDataService org.onebusaway.api.actions.api.where.AgenciesWithCoverageAction._service; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [org.onebusaway.transit_data.services.TransitDataService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
		com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionInvocation.java:318)
		com.opensymphony.xwork2.DefaultActionInvocation.init(DefaultActionInvocation.java:399)
		com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:198)
		com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:70)
		org.apache.struts2.rest.RestActionProxyFactory.createActionProxy(RestActionProxyFactory.java:51)
		org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:488)
		org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
		org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
	

root cause

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.onebusaway.api.actions.api.where.AgenciesWithCoverageAction': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.onebusaway.transit_data.services.TransitDataService org.onebusaway.api.actions.api.where.AgenciesWithCoverageAction._service; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [org.onebusaway.transit_data.services.TransitDataService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
		org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:286)
		org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1064)
		org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireBeanProperties(AbstractAutowireCapableBeanFactory.java:374)
		com.opensymphony.xwork2.spring.SpringObjectFactory.autoWireBean(SpringObjectFactory.java:193)
		com.opensymphony.xwork2.spring.SpringObjectFactory.buildBean(SpringObjectFactory.java:173)
		com.opensymphony.xwork2.spring.SpringObjectFactory.buildBean(SpringObjectFactory.java:144)
		com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:150)
		com.opensymphony.xwork2.ObjectFactory.buildAction(ObjectFactory.java:120)
		com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionInvocation.java:299)
		com.opensymphony.xwork2.DefaultActionInvocation.init(DefaultActionInvocation.java:399)
		com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:198)
		com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:70)
		org.apache.struts2.rest.RestActionProxyFactory.createActionProxy(RestActionProxyFactory.java:51)
		org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:488)
		org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
		org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
	

root cause

org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.onebusaway.transit_data.services.TransitDataService org.onebusaway.api.actions.api.where.AgenciesWithCoverageAction._service; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [org.onebusaway.transit_data.services.TransitDataService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
		org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:507)
		org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:84)
		org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:283)
		org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1064)
		org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireBeanProperties(AbstractAutowireCapableBeanFactory.java:374)
		com.opensymphony.xwork2.spring.SpringObjectFactory.autoWireBean(SpringObjectFactory.java:193)
		com.opensymphony.xwork2.spring.SpringObjectFactory.buildBean(SpringObjectFactory.java:173)
		com.opensymphony.xwork2.spring.SpringObjectFactory.buildBean(SpringObjectFactory.java:144)
		com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:150)
		com.opensymphony.xwork2.ObjectFactory.buildAction(ObjectFactory.java:120)
		com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionInvocation.java:299)
		com.opensymphony.xwork2.DefaultActionInvocation.init(DefaultActionInvocation.java:399)
		com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:198)
		com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:70)
		org.apache.struts2.rest.RestActionProxyFactory.createActionProxy(RestActionProxyFactory.java:51)
		org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:488)
		org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
		org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
	

root cause

org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [org.onebusaway.transit_data.services.TransitDataService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
		org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:914)
		org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:783)
		org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:697)
		org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:478)
		org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:84)
		org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:283)
		org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1064)
		org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireBeanProperties(AbstractAutowireCapableBeanFactory.java:374)
		com.opensymphony.xwork2.spring.SpringObjectFactory.autoWireBean(SpringObjectFactory.java:193)
		com.opensymphony.xwork2.spring.SpringObjectFactory.buildBean(SpringObjectFactory.java:173)
		com.opensymphony.xwork2.spring.SpringObjectFactory.buildBean(SpringObjectFactory.java:144)
		com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:150)
		com.opensymphony.xwork2.ObjectFactory.buildAction(ObjectFactory.java:120)
		com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionInvocation.java:299)
		com.opensymphony.xwork2.DefaultActionInvocation.init(DefaultActionInvocation.java:399)
		com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:198)
		com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:70)
		org.apache.struts2.rest.RestActionProxyFactory.createActionProxy(RestActionProxyFactory.java:51)
		org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:488)
		org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
		org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
	

note The full stack trace of the root cause is available in the Apache Tomcat/7.0.27 logs.


Apache Tomcat/7.0.27


My data-sources.xml file:

<?xml version="1.0" encoding="UTF-8"?>
<!-- refer to http://developer.onebusaway.org/modules/onebusaway-application-modules/current/guides/realtime-configuration-guide.htm
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="
                http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
                http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd">

        <bean class="org.onebusaway.container.spring.SystemPropertyOverrideConfigurer">
                <property name="order" value="-2" />
                <property name="properties">
                        <props>
                                <prop key="bundlePath">/home/tomcat/onebusaway/our_gtfs.zip</prop>
                        </props>
                </property>
        </bean>

        <!-- Use the infinitely loose DummyApiKeyPermissionService -->
        <bean id="apiKeyValidationService" class="org.onebusaway.api.services.DummyApiKeyPermissionService"/>
        <!-- ... but here's how we define keys:
        <bean class="org.onebusaway.users.impl.CreateApiKeyAction">
                <property name="key" value="TEST"/>
        </bean>
        -->

        <!-- Use Peter's real-time feeds (on a different server) (commented out for now)
        <bean class="org.onebusaway.transit_data_federation.impl.realtime.gtfs_realtime.GtfsRealtimeSource">
                <property name="tripUpdatesUrl" value="http://another.internal.server:8088/tripupdate"/>
                <property name="vehiclePositionsUrl" value="http://another.internal.server:8088/vehpos"/>
        </bean> -->

        <!-- Use HSQLDB -->
        <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
                <property name="driverClassName" value="org.hsqldb.jdbcDriver"/>
                <property name="url" value="jdbc:hsqldb:file:/home/tomcat/onebusaway/hsqldb/dataSource"/>
                <property name="username" value="sa"/>
                <property name="password" value=""/>
        </bean>

        <!-- I don't know what this is for, given our_gtfs.zip bundlePath, which is why it's commented out...
        <bean id="transitDataService" class="org.springframework.remoting.caucho.HessianProxyFactoryBean">
                <property name="serviceUrl" value="http://soak-transit-data.onebusaway.org/puget_sound/remoting/transit-data-service"/>
                <property name="serviceInterface" value="org.onebusaway.transit_data.services.TransitDataService"/>
        </bean>
        -->

</beans>

The zip file contains trips.txt, stop_times.txt, routes.txt, calendar.txt, stops.txt and agency.txt, and it seems to work on our other server.

Can anyone explain what's going on?

Thanks,
MS.

jnfrazao

unread,
Jun 14, 2012, 12:50:56 PM6/14/12
to OneBusAway API
I´m not sure but I noticed you defined your bundlePath with the zip
file. You must create the transit data bundle first, from the zip
file. It will create a folder. Then point the bundle path to the
folder created. Try this.

João

On 14 Jun, 12:16, Michael Scheper <goo...@michaelscheper.com> wrote:
> G'day people,
>
> Sorry if this is a silly question, but I'm not understanding the purpose
> of the transitDataService when we're using a GTFS bundle.
>
> I've built and deployed onebusaway-combined-webapp-1.0.7-api-only.war on
> our Tomcat 7 server. I'm not getting any exceptions when I launch, but
> when I requesthttp://my.server:8080/api/where/agencies-with-coverage.xml?key=TEST, I
> get this response:
>
>         HTTP Status 500 -
>
>         ________________________________________________________________
>
>         type Exception report
>
>         message
>
>         description The server encountered an internal error () that
>         prevented it from fulfilling this request.
>
>         exception
>
>         Unable to instantiate Action, org.onebusaway.api.actions.api.where.AgenciesWithCoverageAction,  defined for 'agencies-with-coverage' in namespace '/api/where'Error creating bean with name 'org.onebusaway.api.actions.api.where.AgenciesWithCoverageAction': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.onebusaway.transit_data.services.TransitDataService org.onebusaway.api.actions.api.where.AgenciesWithCoverageAction._service; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [org.onebusaway.transit_data.services.TransitDataService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {...@org.springframework.beans.factory.annotation.Autowired(required=true)}
>                         com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionInvocation.java:318)
>                         com.opensymphony.xwork2.DefaultActionInvocation.init(DefaultActionInvocation.java:399)
>                         com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:198)
>                         com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:70)
>                         org.apache.struts2.rest.RestActionProxyFactory.createActionProxy(RestActionProxyFactory.java:51)
>                         org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:488)
>                         org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
>                         org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
>
>         root cause
>
>         org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.onebusaway.api.actions.api.where.AgenciesWithCoverageAction': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.onebusaway.transit_data.services.TransitDataService org.onebusaway.api.actions.api.where.AgenciesWithCoverageAction._service; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [org.onebusaway.transit_data.services.TransitDataService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {...@org.springframework.beans.factory.annotation.Autowired(required=true)}
>                         org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:286)
>                         org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1064)
>                         org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireBeanProperties(AbstractAutowireCapableBeanFactory.java:374)
>                         com.opensymphony.xwork2.spring.SpringObjectFactory.autoWireBean(SpringObjectFactory.java:193)
>                         com.opensymphony.xwork2.spring.SpringObjectFactory.buildBean(SpringObjectFactory.java:173)
>                         com.opensymphony.xwork2.spring.SpringObjectFactory.buildBean(SpringObjectFactory.java:144)
>                         com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:150)
>                         com.opensymphony.xwork2.ObjectFactory.buildAction(ObjectFactory.java:120)
>                         com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionInvocation.java:299)
>                         com.opensymphony.xwork2.DefaultActionInvocation.init(DefaultActionInvocation.java:399)
>                         com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:198)
>                         com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:70)
>                         org.apache.struts2.rest.RestActionProxyFactory.createActionProxy(RestActionProxyFactory.java:51)
>                         org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:488)
>                         org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
>                         org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
>
>         root cause
>
>         org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.onebusaway.transit_data.services.TransitDataService org.onebusaway.api.actions.api.where.AgenciesWithCoverageAction._service; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [org.onebusaway.transit_data.services.TransitDataService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {...@org.springframework.beans.factory.annotation.Autowired(required=true)}
>                         org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:507)
>                         org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:84)
>                         org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:283)
>                         org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1064)
>                         org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireBeanProperties(AbstractAutowireCapableBeanFactory.java:374)
>                         com.opensymphony.xwork2.spring.SpringObjectFactory.autoWireBean(SpringObjectFactory.java:193)
>                         com.opensymphony.xwork2.spring.SpringObjectFactory.buildBean(SpringObjectFactory.java:173)
>                         com.opensymphony.xwork2.spring.SpringObjectFactory.buildBean(SpringObjectFactory.java:144)
>                         com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:150)
>                         com.opensymphony.xwork2.ObjectFactory.buildAction(ObjectFactory.java:120)
>                         com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionInvocation.java:299)
>                         com.opensymphony.xwork2.DefaultActionInvocation.init(DefaultActionInvocation.java:399)
>                         com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:198)
>                         com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:70)
>                         org.apache.struts2.rest.RestActionProxyFactory.createActionProxy(RestActionProxyFactory.java:51)
>                         org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:488)
>                         org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
>                         org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
>
>         root cause
>
>         org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [org.onebusaway.transit_data.services.TransitDataService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {...@org.springframework.beans.factory.annotation.Autowired(required=true)}
>                         org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:914)
>                         org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:783)
>                         org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:697)
>                         org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:478)
>                         org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:84)
>                         org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:283)
>                         org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1064)
>                         org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireBeanProperties(AbstractAutowireCapableBeanFactory.java:374)
>                         com.opensymphony.xwork2.spring.SpringObjectFactory.autoWireBean(SpringObjectFactory.java:193)
>                         com.opensymphony.xwork2.spring.SpringObjectFactory.buildBean(SpringObjectFactory.java:173)
>                         com.opensymphony.xwork2.spring.SpringObjectFactory.buildBean(SpringObjectFactory.java:144)
>                         com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:150)
>                         com.opensymphony.xwork2.ObjectFactory.buildAction(ObjectFactory.java:120)
>                         com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionInvocation.java:299)
>                         com.opensymphony.xwork2.DefaultActionInvocation.init(DefaultActionInvocation.java:399)
>                         com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:198)
>                         com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:70)
>                         org.apache.struts2.rest.RestActionProxyFactory.createActionProxy(RestActionProxyFactory.java:51)
>                         org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:488)
>                         org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
>                         org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
>
>         note The full stack trace of the root cause is available in the
>         Apache Tomcat/7.0.27 logs.
>
>         ________________________________________________________________
>
>         Apache Tomcat/7.0.27
>
> My data-sources.xml file:
>
> <?xml version="1.0" encoding="UTF-8"?>
> <!-- refer tohttp://developer.onebusaway.org/modules/onebusaway-application-module...
>                http://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-2.5.xsd">
>                 <property name="serviceUrl" value="http://soak-transit-data.onebusaway.org/puget_sound/remoting/transit-..."/>

Michael Scheper

unread,
Jun 14, 2012, 8:24:06 PM6/14/12
to onebusa...@googlegroups.com
Thanks, João—I suppose I should've known they'd just be resource bundles.

So it seems that the bundles get read into the dataSource for faster access. Is that correct?

The reason I ask is that our 'static' data is likely to be updated several times per week, because we manage many large agencies who make frequent shift schedule changes. We'll be pushing that static data to the REST API server, because the server is in the cloud and the data is behind a firewall. I'm just trying to work out the best way to implement this. I'm happy to code a new ResourceBundle subclass (especially since the OBA code is abstracted so well) but maybe it makes more sense to dump it straight into the dataSource somehow? Or is there already a way to do this?

Anyhow, I'll see if using proper bundles makes the requirement for transitDataService go away. Cheers.

MS.

Michael Scheper

unread,
Jun 15, 2012, 2:45:32 AM6/15/12
to OneBusAway API
I realise, now, that the REST API webapp and the data federation
webapps are different animals, and that the latter makes the data in
the bundlePath available via a transitDataService for the former. So
my serviceUrl should basically be localhost in this case.

Thanks,
MS.

On Jun 15, 10:24 am, Michael Scheper <goo...@michaelscheper.com>
wrote:
> > org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFil ter(StrutsPrepareAndExecuteFilter.java:91)
>
> > >         root cause
>
> > >         org.springframework.beans.factory.BeanCreationException: Error
> > creating bean with name
> > 'org.onebusaway.api.actions.api.where.AgenciesWithCoverageAction':
> > Injection of autowired dependencies failed; nested exception is
> > org.springframework.beans.factory.BeanCreationException: Could not autowire
> > field: private org.onebusaway.transit_data.services.TransitDataService
> > org.onebusaway.api.actions.api.where.AgenciesWithCoverageAction._service;
> > nested exception is
> > org.springframework.beans.factory.NoSuchBeanDefinitionException: No
> > matching bean of type
> > [org.onebusaway.transit_data.services.TransitDataService] found for
> > dependency: expected at least 1 bean which qualifies as autowire candidate
> > for this dependency. Dependency annotations:
> > {...@org.springframework.beans.factory.annotation.Autowired(required=true)}
>
> > org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostPro cessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java: 286)
>
> > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactor y.populateBean(AbstractAutowireCapableBeanFactory.java:1064)
>
> > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactor y.autowireBeanProperties(AbstractAutowireCapableBeanFactory.java:374)
>
> > com.opensymphony.xwork2.spring.SpringObjectFactory.autoWireBean(SpringObjec tFactory.java:193)
>
> > com.opensymphony.xwork2.spring.SpringObjectFactory.buildBean(SpringObjectFa ctory.java:173)
>
> > com.opensymphony.xwork2.spring.SpringObjectFactory.buildBean(SpringObjectFa ctory.java:144)
>
> > com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:150)
>
> > com.opensymphony.xwork2.ObjectFactory.buildAction(ObjectFactory.java:120)
>
> > com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionI nvocation.java:299)
>
> > com.opensymphony.xwork2.DefaultActionInvocation.init(DefaultActionInvocatio n.java:399)
>
> > com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java: 198)
>
> > com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(Default ActionProxyFactory.java:70)
>
> > org.apache.struts2.rest.RestActionProxyFactory.createActionProxy(RestAction ProxyFactory.java:51)
>
> > org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:488)
>
> > org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOpe rations.java:77)
>
> > org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFil ter(StrutsPrepareAndExecuteFilter.java:91)
>
> > >         root cause
>
> > >         org.springframework.beans.factory.BeanCreationException: Could
> > not autowire field: private
> > org.onebusaway.transit_data.services.TransitDataService
> > org.onebusaway.api.actions.api.where.AgenciesWithCoverageAction._service;
> > nested exception is
> > org.springframework.beans.factory.NoSuchBeanDefinitionException: No
> > matching bean of type
> > [org.onebusaway.transit_data.services.TransitDataService] found for
> > dependency: expected at least 1 bean which qualifies as autowire candidate
> > for this dependency. Dependency annotations:
> > {...@org.springframework.beans.factory.annotation.Autowired(required=true)}
>
> > org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostPro cessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.ja va:507)
>
> > org.springframework.beans.factory.annotation.InjectionMetadata.inject(Injec tionMetadata.java:84)
>
> > org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostPro cessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java: 283)
>
> > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactor y.populateBean(AbstractAutowireCapableBeanFactory.java:1064)
>
> > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactor y.autowireBeanProperties(AbstractAutowireCapableBeanFactory.java:374)
>
> > com.opensymphony.xwork2.spring.SpringObjectFactory.autoWireBean(SpringObjec tFactory.java:193)
>
> > com.opensymphony.xwork2.spring.SpringObjectFactory.buildBean(SpringObjectFa ctory.java:173)
>
> > com.opensymphony.xwork2.spring.SpringObjectFactory.buildBean(SpringObjectFa ctory.java:144)
>
> > com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:150)
>
> > com.opensymphony.xwork2.ObjectFactory.buildAction(ObjectFactory.java:120)
>
> > com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionI nvocation.java:299)
>
> > com.opensymphony.xwork2.DefaultActionInvocation.init(DefaultActionInvocatio n.java:399)
>
> > com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java: 198)
>
> > com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(Default ActionProxyFactory.java:70)
>
> ...
>
> read more »
Reply all
Reply to author
Forward
0 new messages