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(JaxenXPathExpres
sion.java:106)
        at
org.servicemix.components.util.DefaultFileMarshaler.getOutputName(Defaul
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(Delivery
ChannelImpl.java:588)
        at
org.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:171
)
        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(Unkno
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(SourceTr
ansformer.java:213)
        at
org.servicemix.jbi.jaxp.SourceTransformer.toDOMSource(SourceTransformer.
java:136)
        at
org.servicemix.jbi.jaxp.SourceTransformer.toDOMNode(SourceTransformer.ja
va:249)
        at
org.servicemix.jbi.jaxp.SourceTransformer.toDOMNode(SourceTransformer.ja
va:276)
        at
org.servicemix.expression.JaxenXPathExpression.getXMLNode(JaxenXPathExpr
ession.java:210)
        at
org.servicemix.expression.JaxenXPathExpression.evaluate(JaxenXPathExpres
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]>
>


Reply via email to