I'm sending in a test xml document: <test id="1" />
So are you saying that the HttpConnector doesn't truly support InOnly at the moment? I don't have any issues updating the class, just wanted to make sure I understood you. -----Original Message----- From: Guillaume Nodet [mailto:[EMAIL PROTECTED] Sent: Wednesday, January 25, 2006 11:37 AM To: [email protected] Subject: Re: [servicemix-user] ServiceMix Design Questions What do you send in your POST request ? You should have a valid xml ... Also, for the reason you pointed, the HttpConnector and related components do use synchronous send even for in-only. Thus, there is no need to copy the message from the http request, as the input stream will be parsed directly. You should patch the HttpInOutBinding to add a flag to use asynchronous sends when in only, and send the exchange asynchronously (after having copied the content). Cheers, Guillaume Nodet Schweter, Ryan wrote: >I tried this simple example of how I think you setup an In-Only HTTP >endpoint (notice the defaultInOut = false. When I post a message to the >endpoint it returns immediately (good), but then throws a socket >exception on the server (bad). My guess is that the FileWriter is >trying to use the socket stream that is obviously no longer valid. >Seems like the InOnly HTTP connector should pull out all of the POST >and save it in the message instead of using a socket stream. > >Have I done something wrong? > >----------------------------------------------------------------------- - >------------------------- >CONFIG: > ><sm:activationSpec componentName="httpReceiver2" >service="brw:httpBinding2" endpoint="httpReceiver" >destinationService="brw:fileSender"> > <sm:component> > <bean xmlns="http://xbean.org/schemas/spring/1.0" >class="org.servicemix.components.http.HttpConnector"> > <property name="host" value="localhost"/> > <property name="port" value="8913"/> > <property name="defaultInOut" value="false"/> > </bean> > </sm:component> ></sm:activationSpec> > ><sm:activationSpec componentName="fileSender" service="brw:fileSender"> > <sm:component> > <bean class="org.servicemix.components.file.FileWriter"> > <property name="directory" value="c:\blah"/> > > <property name="marshaler"> > <bean >class="org.servicemix.components.util.DefaultFileMarshaler"> > <property name="fileName"> > <bean >class="org.servicemix.expression.JaxenStringXPathExpression"> > <constructor-arg >value="concat('sample_', //@id, '.xml')"/> > </bean> > </property> > </bean> > </property> > </bean> > </sm:component> ></sm:activationSpec> >----------------------------------------------------------------------- - >------------------------- > >----------------------------------------------------------------------- - >------------------------- >EXCEPTION: > >javax.jbi.messaging.MessagingException: java.net.SocketException: >Software caused connection abort: recv failed > at >org.servicemix.expression.JaxenXPathExpression.evaluate(JaxenXPathExpre s >sion.java:106) > at >org.servicemix.components.util.DefaultFileMarshaler.getOutputName(Defau l >tFileMarshaler.java:65) > at >org.servicemix.components.file.FileWriter.process(FileWriter.java:114) > at >org.servicemix.components.util.OutBinding.onMessageExchange(OutBinding. j >ava:51) > at >org.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(Deliver y >ChannelImpl.java:588) > at >org.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:17 1 >) > at >org.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:225) > at >org.apache.geronimo.connector.work.WorkerContext.run(WorkerContext.java : >291) > at >EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(Unknown >Source) > at java.lang.Thread.run(Thread.java:595) >Caused by: java.net.SocketException: Software caused connection abort: >recv failed > at java.net.SocketInputStream.socketRead0(Native Method) > at java.net.SocketInputStream.read(SocketInputStream.java:129) > at org.mortbay.util.LineInput.fill(LineInput.java:434) > at org.mortbay.util.LineInput.read(LineInput.java:293) > at java.io.FilterInputStream.read(FilterInputStream.java:66) > at org.mortbay.jetty.servlet.ServletIn.read(ServletIn.java:27) > at >org.apache.xerces.impl.XMLEntityManager$RewindableInputStream.read(Unkn o >wn Source) > at >org.apache.xerces.impl.XMLEntityManager.setupCurrentEntity(Unknown >Source) > 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:123) > at >org.servicemix.jbi.jaxp.SourceTransformer.toDOMSourceFromStream(SourceT r >ansformer.java:213) > at >org.servicemix.jbi.jaxp.SourceTransformer.toDOMSource(SourceTransformer . >java:136) > at >org.servicemix.jbi.jaxp.SourceTransformer.toDOMNode(SourceTransformer.j a >va:249) > at >org.servicemix.jbi.jaxp.SourceTransformer.toDOMNode(SourceTransformer.j a >va:276) > at >org.servicemix.expression.JaxenXPathExpression.getXMLNode(JaxenXPathExp r >ession.java:210) > at >org.servicemix.expression.JaxenXPathExpression.evaluate(JaxenXPathExpre s >sion.java:86) >----------------------------------------------------------------------- - >------------------------- > > >-----Original Message----- >From: Guillaume Nodet [mailto:[EMAIL PROTECTED] >Sent: Wednesday, January 25, 2006 10:09 AM >To: [email protected] >Subject: Re: [servicemix-user] ServiceMix Design Questions > >The request / response should be handled by a synchronous in-out mep on >the binding component. >The asynchronous one should use an asynchronous in-only mep. > >Cheers, >Guillaume Nodet > >Schweter, Ryan wrote: > > > >>I've recently gotten back into ServiceMix and am setting up a >>messaging infrastructure for published application events. I want to >>have two HTTP entry points into the message bus: one that will >>synchronously return a success/fail response (regarding schema >>validation and whatnot) and one that immediately returns (fire and >>forget). As mentioned, on the synchronous endpoint I want to return a >>response to the client, then work asynchronously (from a client >>perspective) while routing/translating the event. >> >>What is the best way to get the functionality I want? >> >> >> >> >*______________________________________________________________________ _ >_______________** > > >>***Ryan Schweter**** *** >>*Architect / Developer >>IT Systems Architecture >>Broadwing Communications, LLC >> >>.: 512.742.7875 >>.: [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> >> >> >> > > > > > >
