Hello,

I am using JPA/Hibernate in servicemix.
Here is my usecase:
I have created a jar for the database helper using JPA/Hibernate. I have put
this in servicemix\lib
I have created a SA containing SU which will need to access methods from
dbHelper.jar

I have added the following to the jndi.xml under servicemix\conf
<util:map id="jndiEntries">
                <entry key="JPAEntityManager" value-ref="entityManagerFactory" 
/>
.
.
</util:map>

<bean id="entityManagerFactory"
        
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
                <property name="persistenceUnitManager" 
ref="persistenceUnitManager" />
                <property name="dataSource" ref="dataSource" />
                <property name="jpaVendorAdapter">
                        <bean
class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
                                <property name="showSql" value="true" />
                                <property name="generateDdl" value="false" />
                                <property name="databasePlatform"
value="org.hibernate.dialect.HSQLDialect" />
                                <!--property name="databasePlatform"
value="org.hibernate.dialect.Oracle9Dialect" /-->
                        </bean>
                </property>
                <property name="loadTimeWeaver">
                        <bean
class="org.springframework.instrument.classloading.SimpleLoadTimeWeaver"/>
                </property>
        </bean>

        <bean id="JPAtransactionManager"
class="org.springframework.orm.jpa.JpaTransactionManager">
                <property name="dataSource" ref="dataSource" />
                <property name="entityManagerFactory" 
ref="entityManagerFactory" />
        </bean>

        
        <bean
class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor"
/>
        <bean
class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"
/>

        <bean id="dataSource_oracle"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
                <property name="driverClassName" 
value="oracle.jdbc.driver.OracleDriver"
/>
                <property name="url" 
value="jdbc:oracle:thin:@10.58.116.101:1521:OSS" />
                <property name="username" value="omc" />
                <property name="password" value="omc" />
        </bean>

        <bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
                <property name="driverClassName" value="org.hsqldb.jdbcDriver" 
/>
                <property name="url" value="jdbc:hsqldb:." />
                <property name="username" value="sa" />
                <property name="password" value="" />
        </bean>

        <bean id="persistenceUnitManager"
        
class="org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager">
                <property name="persistenceXmlLocations">
                        <list>
                                
<value>classpath*:lctMediation-dataAccess-persistence.xml</value>
                        </list>
                </property>
                <property name="defaultDataSource" ref="dataSource" />
                
        </bean>

Here is the xbean i have used for the SU
<?xml version="1.0"?>
<beans xmlns:cxfse="http://servicemix.apache.org/cxfse/1.0";
       xmlns:sm="http://servicemix.apache.org/config/1.0";
       xmlns:b="http://servicemix.apache.org/samples/bridge";>

  <cxfse:endpoint service="b:testcxfse"
                 endpoint="endpoint">
                                 
                                 
   <cxfse:pojo>
     <bean class="com.nsn.oss.nat.lct.mediation.snmp_udp.advise.AdviseImpl">
       <property name="localIp">
          <value>10.254.126.23</value>
        </property>
                 <property name="localPort">
          <value>1612</value>
        </property>
                 <property name="neDataAccess" ref="neDataAccessDao"/>
          
     </bean>
 </cxfse:pojo>
       
</cxfse:endpoint>

When I deploy the SU, i get the following exception
(The same error does not occur if i remove bean definitions from jndi.xml
and put it inside the xbean.xml itself!!!. But, I will have multiple SUs in
different SA which need to use the same dbHelper.
So I would prefer to have JPA/HIbernate dependency injection from jndi.xml
rather than in xbean.xml of SU)

Exception:
DEBUG - CxfSeComponent                 - Looking for
D:\NetActTransport1.0\Tools\apache-servicemix-3.3.1\data\smx\service-assemblies\nat-common-cxf-sa\version_1\sus\servicemix-cxf-se\nat-common-cxf-se-su\xbean.xml:
true
ERROR - CxfSeComponent                 -
org.springframework.beans.factory.BeanCreationException: Error creating bean
with name 'org.apache.servicemix.cxfse.CxfSeEndpoint#0' defined in file
[D:\NetActTransport1.0\Tools\apache-servicemix-3.3.1\data\smx\service-assemblies\nat-common-cxf-sa\version_1\sus\servicemix-cxf-se\nat-common-cxf-se-su\xbean.xml]:
Cannot create inner bean
'com.nsn.oss.nat.lct.mediation.snmp_udp.advise.AdviseImpl#0' of type
[com.nsn.oss.nat.lct.mediation.snmp_udp.advise.AdviseImpl] while setting
bean property 'pojo'; nested exception is
org.springframework.beans.factory.BeanCreationException: Error creating bean
with name 'com.nsn.oss.nat.lct.mediation.snmp_udp.advise.AdviseImpl#0'
defined in file
[D:\NetActTransport1.0\Tools\apache-servicemix-3.3.1\data\smx\service-assemblies\nat-common-cxf-sa\version_1\sus\servicemix-cxf-se\nat-common-cxf-se-su\xbean.xml]:
Cannot resolve reference to bean 'neDataAccessDao' while setting bean
property 'neDataAccess'; nested exception is
org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean
named 'neDataAccessDao' is defined


I do not understand why SU's xbean.xml is unable to refer to the bean
created in jndi.xml of servicemix\conf

Is there any other configuration to be done?

Thanks in advance.
Best Regards,
Sindhu

-- 
View this message in context: 
http://old.nabble.com/xbean.xml-Cannot-create-inner-bean-%28defined-in-jndi.xml%29-tp26535002p26535002.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.

Reply via email to