Perhaps I should give an example of what i am seeing here...

I have the following class that I am using to try out servicemix and the attached servicemix.xml

package org.vinson.servicemix;

/** omitting imports **/

public class ServiceMixPassthroughProxy extends PojoSupport implements MessageExchangeListener {

public void onMessageExchange(MessageExchange exchange) throws MessagingException {
System.out.println("Got Message");
done(exchange);
}
}

I get the following in the console:

ServiceMix ESB: 2.0.2

Loading ServiceMix from file: src/conf/servicemix.xml
Created MBeanServer with ID: d22104:10a1979e58c:-8000:oriza.local:1
RMIConnectorServer started at: service:jmx:rmi://oriza.local/jndi/rmi://localhost:1099/defaultJBIJMX
Got Message


Why don't i see any output in my output directory?  If i take my "custom" MessageExchangeListener out of the flow, it writes the file out to the file system, but not if this class is present.

Again, any pointers would be appreciated,
Jason

<?xml version="1.0" encoding="utf-8"?>
<beans xmlns="http://xbean.org/schemas/spring/1.0";
	xmlns:spring="http://xbean.org/schemas/spring/1.0";
	xmlns:sm="http://servicemix.org/config/1.0";
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
	xsi:schemaLocation="http://xbean.org/schemas/spring/1.0 ../../conf/spring-beans.xsd http://servicemix.org/config/1.0 ../../conf/servicemix.xsd"
	xmlns:foo="http://servicemix.org/demo";>

	<!-- the JBI container -->
	<sm:container id="jbi" useMBeanServer="true"
		createMBeanServer="true" dumpStats="true" statsInterval="10">

		<sm:activationSpecs>

			<!-- Look for files in the inbox directory -->
			<sm:activationSpec componentName="filePoller"
				destinationService="foo:one" service="foo:filePoller">
				<sm:component>
					<bean xmlns="http://xbean.org/schemas/spring/1.0";
						class="org.servicemix.components.file.FilePoller">
						<property name="workManager" ref="workManager" />
						<property name="file" value="/tmp/sm_inbox" />
						<property name="period" value="1000" />
					</bean>
				</sm:component>
			</sm:activationSpec>

			<sm:activationSpec componentName="one"
				destinationService="foo:fileSender"
				service="foo:one">
				<sm:component>
					<bean xmlns="http://xbean.org/schemas/spring/1.0";
						class="org.vinson.servicemix.ServiceMixPassthroughProxy">
					</bean>
				</sm:component>
			</sm:activationSpec>

			<sm:activationSpec componentName="fileSender"
				service="foo:fileSender">
				<sm:component>
					<bean xmlns="http://xbean.org/schemas/spring/1.0";
						class="org.servicemix.components.file.FileWriter">
						<property name="directory"
							value="/tmp/sm_outbox" />
						<property name="marshaler">
							<bean
								class="org.servicemix.components.util.DefaultFileMarshaler">
						       <property name="fileName">
                                    <bean
                                        class="org.servicemix.expression.JaxenStringXPathExpression">
                                        <constructor-arg
                                            value="concat('sample_', /sample/@id, '.xml')" />
                                    </bean>
                                </property>
							</bean>
						</property>
					</bean>
				</sm:component>
			</sm:activationSpec>
		</sm:activationSpecs>

	</sm:container>

	<!-- the work manager (thread pool) for this container -->
	<bean id="workManager"
		class="org.jencks.factory.WorkManagerFactoryBean">
		<property name="threadPoolSize" value="10" />
	</bean>

</beans>

On Mar 20, 2006, at 10:37 AM, Jason Vinson wrote:

Hi,

I'm very new to servicemix, but I have a question about what is the best approach to start writing "service engines" to use in a servicemix esb.  My first thought is to write a class that extends PojoSupport and implements MessageExchangeListener, but I wanted to find out from the experts if this is the desired implementation.

I've also been drawn towards the TransformComponentSupport class, which I suppose could be used to plug in a service as well, but the name implies that it's to be used for transformation, not service execution.  Could I get some info regarding this, or at least pointers to a clear tutorial on this concept?

Thanks so much,
Jason

Reply via email to