I am trying to create a simple example using the XSLT router. I get a Stream closed exception when I try to execute the forward. What am I missing? I have modified the file-binding example to use the router to route an XML file based on the contents of the id.
The servicemix.xml file is as follows: <?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> <sm:activationSpec componentName="transformer" service="foo:transformer"> <sm:component> <bean class="org.servicemix.components.xslt.XsltComponent"> <property name="xsltResource" value="classpath:router.xsl"/> <!-- lets disable automatic output of the result of the transform; only if we perform an invoke in the XSLT will we invoke another endpoint --> <property name="disableOutput" value="true"/> </bean> </sm:component> </sm:activationSpec> <!-- Write files to the outbox directory --> <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="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> <!-- Write files to the outbox directory --> <sm:activationSpec componentName="fileSender2" service="foo:fileSender2"> <sm:component> <bean xmlns="http://xbean.org/schemas/spring/1.0" class="org.servicemix.components.file.FileWriter"> <property name="directory" value="outbox2"/> <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> <!-- Look for files in the inbox directory --> <sm:activationSpec componentName="filePoller" destinationService="foo:transformer" 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="inbox"/> <property name="period" value="1000"/> </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="30"/> </bean> </beans> Here is my simple transform: <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:jbi="xalan://org.servicemix.components.xslt.XalanExtension" extension-element-prefixes="jbi" xmlns:foo="http://servicemix.org/demo/" version="1.0"> <xsl:template match="/*"> <xsl:choose> <!-- lets forward the inbound message to a service --> <xsl:when test="@id = '555' "> <jbi:forward service="foo:fileSender"/> </xsl:when> <xsl:when test="@id = '666' "> <jbi:forward service="foo:fileSender2"/> </xsl:when> <xsl:otherwise> <jbi:forward service="foo:trace"/> </xsl:otherwise> </xsl:choose> </xsl:template> </xsl:stylesheet> and the execption I get is below. DEBUG - AbstractFlow.doRouting(175) | Called Flow doRouting ; SystemID: file:/C:/OpenSource/servicemix-2.1-SNAPSHOT/conf/router.xsl; Line#: 9; Column#: 46 javax.xml.transform.TransformerException: java.io.IOException: Stream closed at org.apache.xalan.extensions.ExtensionHandlerJavaClass.processElement( ExtensionHandlerJavaClass.java:441) at org.apache.xalan.templates.ElemExtensionCall.execute(ElemExtensionCal l.java:283) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(Tr ansformerImpl.java:2339) at org.apache.xalan.templates.ElemChoose.execute(ElemChoose.java:172) at org.apache.xalan.templates.ElemApplyTemplates.transformSelectedNodes( ElemApplyTemplates.java:425) at org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTempla tes.java:216) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(Tr ansformerImpl.java:2339) at org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode(Tran sformerImpl.java:2160) at org.apache.xalan.transformer.TransformerImpl.transformNode(Transforme rImpl.java:1213) at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImp l.java:668) at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImp l.java:1129) at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImp l.java:1107) at org.servicemix.components.xslt.XsltComponent.transformContent(XsltCom ponent.java:135) at org.servicemix.components.xslt.XsltComponent.transform(XsltComponent. java:119) at org.servicemix.components.util.TransformComponentSupport.onMessageExc hange(TransformComponentSupport.java:47) at org.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(Deliv eryChannelImpl.java:590) at org.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java: 182) at org.servicemix.jbi.nmr.flow.seda.SedaFlow.doSend(SedaFlow.java:140) at org.servicemix.jbi.nmr.flow.AbstractFlow.send(AbstractFlow.java:124) at org.servicemix.jbi.nmr.Broker.sendExchangePacket(Broker.java:289) at org.servicemix.jbi.container.JBIContainer.sendExchange(JBIContainer.j ava:590) at org.servicemix.jbi.messaging.DeliveryChannelImpl.doSend(DeliveryChann elImpl.java:349) at org.servicemix.jbi.messaging.DeliveryChannelImpl.sendSync(DeliveryCha nnelImpl.java:423) at org.servicemix.jbi.messaging.DeliveryChannelImpl.sendSync(DeliveryCha nnelImpl.java:400) at org.servicemix.components.file.FilePoller.processFile(FilePoller.java :220) at org.servicemix.components.file.FilePoller.processFileAndDelete(FilePo ller.java:197) at org.servicemix.components.file.FilePoller$1.run(FilePoller.java:182) at org.apache.geronimo.connector.work.WorkerContext.run(WorkerContext.ja va:291) at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(Unknown So urce) at java.lang.Thread.run(Thread.java:534) Caused by: javax.jbi.messaging.MessagingException: java.io.IOException: Stream c losed at org.servicemix.components.util.CopyTransformer.transform(CopyTransfor mer.java:77) at org.servicemix.components.util.ComponentSupport.forwardToExchange(Com ponentSupport.java:253) at org.servicemix.components.util.ComponentSupport.forwardToExchange(Com ponentSupport.java:247) at org.servicemix.components.util.ComponentSupport.invoke(ComponentSuppo rt.java:183) at org.servicemix.components.xslt.XalanExtension.forward(XalanExtension. java:78) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl. java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces sorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at org.apache.xalan.extensions.ExtensionHandlerJavaClass.processElement( ExtensionHandlerJavaClass.java:432) ... 29 more Caused by: java.io.IOException: Stream closed at java.io.BufferedInputStream.ensureOpen(BufferedInputStream.java:120) at java.io.BufferedInputStream.read(BufferedInputStream.java:199) at org.apache.xerces.impl.XMLEntityManager$RewindableInputStream.read(Un known Source) at org.apache.xerces.impl.XMLEntityManager.setupCurrentEntity(Unknown So urce) at org.apache.xerces.impl.XMLVersionDetector.determineDocVersion(Unknown Source) at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) at org.apache.xerces.parsers.DOMParser.parse(Unknown Source) at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source) at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:101) at org.servicemix.jbi.jaxp.SourceTransformer.toDOMSourceFromStream(Sourc eTransformer.java:213) at org.servicemix.jbi.jaxp.SourceTransformer.toDOMSource(SourceTransform er.java:136) at org.servicemix.jbi.jaxp.SourceTransformer.toDOMNode(SourceTransformer .java:249) at org.servicemix.jbi.jaxp.SourceTransformer.toDOMNode(SourceTransformer .java:276) at org.servicemix.jbi.jaxp.SourceTransformer.toDOMSource(SourceTransform er.java:144) at org.servicemix.components.util.CopyTransformer.transform(CopyTransfor mer.java:68) ... 38 more Scott Ryan Chief Technology Officer Soaring Eagle L.L.C. [EMAIL PROTECTED] www.soaringeagleco.com (303) 263-3044
