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.
