I am not able to auto-wire JpaTransactionManager transactionManagerOdata into the Odata ExampleProducerFactory servlet.
TransactionManagerOdata is configured OK and it can be auto-wire in any other Spring class.
In my case transactionManagerOdata is always null. Please, do you have any suggestion how to configure Odata4J ExampleProducerFactory, so Spring is aware of this servlet.
Thank you
web.xml
<servlet>
<servlet-name>OData</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.resourceConfigClass</param-name>
<param-value>org.odata4j.jersey.producer.resources.ODataApplication</param-value>
</init-param>
<init-param>
<param-name>odata4j.producerfactory</param-name>
<param-value>com.sungard.webapp.odata.apex.producer.ExampleProducerFactory</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>OData</servlet-name>
<url-pattern>/example.svc/*</url-pattern>
</servlet-mapping>
ExampleProducerFactory.java
@Configurable(autowire= Autowire.BY_NAME)
public class ExampleProducerFactory implements ODataProducerFactory
{
@Autowired(required=true)
private JpaTransactionManager transactionManagerOdata;
public ODataProducer create(Properties properties)
{
EntityManagerFactory emf = transactionManagerOdata.getEntityManagerFactory();
JPAProducer tmpProd = new JPAProducer(emf, "", 500);
return tmpProd;
}
}
ApplicationContext.xml
<bean class="org.springframework.orm.jpa.JpaTransactionManager"
id="transactionManagerOdata">
<property name="entityManagerFactory" ref="entityManagerFactoryOdata" />
</bean>
<bean class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
id="entityManagerFactoryOdata">
<property name="persistenceUnitName" value="persistenceUnitOdata" />
<property name="persistenceXmlLocation"
value="classpath*:META-INF/persistence-spring-odata.xml" />
<property name="dataSource" ref="dataSource" />
</bean>