Hi,

I have been playing around with the CXF-SE on OpenESB a little trying to
expose a POJO using a JAX-WS facade as a service endpoint. One of the
strongest (and strangest) limitations I encountered is the fact that the
XBean based "deployment descriptor" does not support the new namespaces
introduced in Spring 2.0, e.g. for declarative TX management.

Here is my example xbean.xml file

<?xml version="1.0" encoding="UTF-8"?>
<beans 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:cxfse="http://servicemix.apache.org/cxfse/1.0";
       xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
       http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
       http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
       http://servicemix.apache.org/cxfse/1.0
http://servicemix.apache.org/schema/servicemix-cxfse-3.2.2.xsd";>

    <tx:annotation-driven />

    <bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="org.gjt.mm.mysql.Driver" />
        <property name="url" value="jdbc:mysql://mysql:3306/tmddb01" />
        <property name="username" value="someone" />
        <property name="password" value="somewhere" />
    </bean>

    <bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="jpaVendorAdapter">
            <bean
class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
                <property name="showSql" value="false" />
            </bean>
        </property>
        <property name="jpaProperties">
            <props>
                <prop
key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop>
                <prop key="hibernate.hbm2ddl.auto">create</prop>
            </props>
        </property>
    </bean>
    <bean id="transactionManager"
class="org.springframework.orm.jpa.JpaTransactionManager">
        <constructor-arg ref="entityManagerFactory" />
    </bean>

    <cxfse:endpoint>
        <cxfse:pojo>
          <bean id="outboxEndpoint" class="outbox.OutboxEndpoint">
              <constructor-arg ref="outboxBean" />
          </bean>
        </cxfse:pojo>
    </cxfse:endpoint>

    <bean id="outboxDao" class="outbox.OutboxDaoImpl">
        <property name="entityManagerFactory" ref="entityManagerFactory" />
    </bean>
    
    <bean id="outboxBean" class="outbox.OutboxBean">
        <property name="outboxDao" ref="outboxDao"/>
    </bean>
</beans>

However, during startup of the service unit this fails miserably with the
following error

Task deploy failed
                        Component: servicemix-cxf-se
                                Task deploy failed
                                        ERROR: 
                                        Could not deploy xbean service unit
                                        Exception:
                                               
org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected
exception parsing XML document from file
[C:\NetBeansProjects\gf_v2ur2\publish\glassfish\domains\domain1\jbi\service-assemblies\PIIServiceMix\OutboxCXFSEImpl\servicemix-cxf-se\xbean.xml];
nested exception is java.lang.IllegalArgumentException: 'beanName' must not
be empty

When I remove the <tx:annotation-driven/> tag the service unit can be
started (but obviously does not use transactions). 

Does that mean that you really can only use Spring 1.2.x features using the
xbean context, i.e. the old fashioned TransactionProxyFactoryBean approach?

I would really appreciate if someone could shed some light on this ...

Regards,
Kai
-- 
View this message in context: 
http://www.nabble.com/CXF-SE-in-ServiceMix-3.2-branch-does-not-support-Spring-2.x-features-tp19622972p19622972.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.

Reply via email to