ServiceMix is not compatible with spring 2.0. It uses XBean to provide xml namespace mapping. You need to use the ClassPathXmlApplicationContext implementation that ships with xbean and everything should work fine.
org.apache.xbean.spring.context.ClassPathXmlApplicationContext Cheers, Guillaume Nodet On 6/4/06, rbeeger <[EMAIL PROTECTED]> wrote:
Hi! Thanks for answering. I'll try to shed a bit more light on what I'm trying to do. There's an application using Spring and I want to integrate ServiceMix into that application. The application uses a ClassPathXmlApplicationContext to fetch the root bean. The context now also reads the servicemix.xml. Now the problem with my original servicemix.xml was that it lacked a DOCTYPE and the parser used by Spring complained that "beans" should adhere to the null DOCTYPE. It ignored the namespace definitions. So I replaced the Spring 1.2.6 that comes with ServiceMix by Spring 2.0 which can cope with configuration files that use XML Schema instead of a DTD. Now it tells me that the attributes "id" and "embedded" are not allowed on the element sm:container. Looking into the servicemix-3.0-M1.xsdreveals that there are no such attributes defined for "container". Then I tried to configure it with pure Spring: <?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:sm="http://servicemix.apache.org/config/1.0" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="jbi" class="org.apache.servicemix.jbi.container.SpringJBIContainer"> <property name="embedded" value="true"/> <property name="componentNames"> <list> <value>kontobinding</value> </list> </property> </bean> <bean id="kontobinding" class="org.apache.servicemix.tck.ReceiverComponent"> <property name="service"> <bean class="javax.xml.namespace.QName"> <constructor-arg value="http://c1wps.de/esb/" /> <constructor-arg value="kontobinding" /> </bean> </property> <property name="endpoint" value="de.c1wps.esb.binding.KontoServiceBinding" /> </bean> <bean id="client" class="org.apache.servicemix.client.DefaultServiceMixClient"> <constructor-arg ref="jbi" /> </bean> <bean id="kontoClient" class="de.c1wps.esb.client.Client"> <property name="client" ref="client"/> </bean> </beans> The original configuration looked like this: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns:sm="http://servicemix.apache.org/config/1.0" xmlns:wps="http://c1wps.de/esb/"> <sm:container id="jbi" embedded="true"> <sm:activationSpecs> <sm:activationSpec id="kontobinding" service="wps:kontobinding"> <sm:component><bean class="de.c1wps.esb.binding.KontoServiceBinding"/></sm:component> </sm:activationSpec> </sm:activationSpecs> </sm:container> <bean id="client" class="org.apache.servicemix.client.DefaultServiceMixClient"> <constructor-arg ref="jbi" /> </bean> <bean id="kontoClient" class="de.c1wps.esb.client.Client"> <property ref="client"/> </bean> </beans> But this original configuration cannot work iin a normal Spring environment. There is no DOCTYPE and no namespace definition for the default namespace. I think the problem here is that I'm using the ClassPathXmlApplicationContext which has no idea of XBeans. Can you give me a hint what I have todo to also load XBeans. Your examples work because they run inside ServiceMix. Here it's the other way round. ServiceMix runs inside another application. The "kontoClient"-bean will eventually be a Swing-based application using ServiceMix. BTW: Is it possible to use the Client API to connect a remote ServiceMix server. The examples only show the situation where the jbi container is started inside the same application. Thanks in advance, Robert -- View this message in context: http://www.nabble.com/Trying-to-make-ServiceMix-run-embedded-inside-Spring-t1728207.html#a4702079 Sent from the ServiceMix - User forum at Nabble.com.
