Hi Eric,

I think the ReplyTo header contains some URL which is not valid. The
HttpCoreNIOSender.sendAsyncRequest() method has been invoked which is wrong
and it should be the sendAsyncResponse which has to be invoked.

Could you please add a full log mediator just before the send mediator in
the following configuration and attach the synapse log? so that I can
investigate what actually went wrong.

At the same time could you please try the sample 5 and see what happens?

Thanks,
Ruwan

On Fri, May 23, 2008 at 8:30 PM, Hubert, Eric <[EMAIL PROTECTED]> wrote:

>  Hi Ruwan,
>
> I now tried this approach with the following synapse-config-block:
>
> <syn:sequence name="main">
>         <syn:makefault version="soap11">
>             <syn:code xmlns:sf11="
> http://schemas.xmlsoap.org/soap/envelope/"; value="sf11:Client"/>
>             <syn:reason value="No service found for specified URL."/>
>         </syn:makefault>
>         <syn:property name="RESPONSE" value="true"/>
>         <syn:header name="To" expression="get-property('ReplyTo')"/>
>         <syn:send/>
> </syn:sequence>
> Is there anything wrong with this? It is more or less copied from the
> example. I get the following exception:
>
> 2008-05-23 16:38:15,834 [10.137.148.73-carl] [HttpServerWorker-10] ERROR
> HttpCoreNIOSender Malformed destination EPR :
> java.net.MalformedURLException: no protocol:
>         at java.net.URL.<init>(URL.java:567)
>         at java.net.URL.<init>(URL.java:464)
>         at java.net.URL.<init>(URL.java:413)
>         at
> org.apache.synapse.transport.nhttp.HttpCoreNIOSender.sendAsyncRequest(HttpCoreNIOSender.java:317)
>         at
> org.apache.synapse.transport.nhttp.HttpCoreNIOSender.invoke(HttpCoreNIOSender.java:256)
>         at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:448)
>         at
> org.apache.synapse.core.axis2.Axis2Sender.sendBack(Axis2Sender.java:138)
>         at
> org.apache.synapse.core.axis2.Axis2SynapseEnvironment.send(Axis2SynapseEnvironment.java:219)
>         at
> org.apache.synapse.mediators.builtin.SendMediator.mediate(SendMediator.java:154)
>         at
> org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:58)
>         at
> org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:125)
>         at
> org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:176)
>         at
> org.apache.synapse.core.axis2.SynapseMessageReceiver.receive(SynapseMessageReceiver.java:89)
>         at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:176)
>         at
> org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:275)
>         at
> org.apache.synapse.transport.nhttp.ServerWorker.processPost(ServerWorker.java:238)
>         at
> org.apache.synapse.transport.nhttp.ServerWorker.run(ServerWorker.java:194)
>         at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
>         at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
>         at java.lang.Thread.run(Thread.java:595)
> Regards,
>    Eric
>
>  ------------------------------
> *From:* Ruwan Linton [mailto:[EMAIL PROTECTED]
> *Sent:* Friday, May 23, 2008 12:36 PM
>
> *To:* [email protected]
> *Subject:* Re: How to send back a fault from an in-sequence
>
> Eric,
>
> I still don't understand why do you need a script to do this. Is there any
> other requirements except for sending a hessian fault back?
>
> If not I would strongly suggest you to go with the existing mediators and
> if there are any issues lets find them out and fix them.
>
> Thanks,
> Ruwan
>
> On Fri, May 23, 2008 at 3:40 PM, Hubert, Eric <[EMAIL PROTECTED]>
> wrote:
>
>>   Hi Ruwan,
>>
>>
>>
>> Thanks for your cross test! No, we didn't change any of the libraries. If
>> I find the time, I'll try the sample on my own and contact the developer to
>> find out more about his testing environment. I guess he was testing locally.
>> So maybe he uses another Java-Version or something like that. If the problem
>> does not happen in the integration environment we may try to narrow it down.
>>
>>
>>
>> Regards,
>>
>>    Eric
>>
>>
>>   ------------------------------
>>
>> *From:* Ruwan Linton [mailto:[EMAIL PROTECTED]
>> *Sent:* Friday, May 23, 2008 11:15 AM
>> *To:* [email protected]
>> *Subject:* Re: How to send back a fault from an in-sequence
>>
>>
>>
>> Hi Eric,
>>
>> I just tried the sample 352 and was working fine for me. May be this is a
>> scripting problem.
>>
>> Are you using some other scripting jar than what we ship with Synapse/ESB?
>>
>> Thanks,
>> Ruwan
>>
>> On Fri, May 23, 2008 at 1:43 PM, Hubert, Eric <[EMAIL PROTECTED]>
>> wrote:
>>
>> Hi Ruwan,
>>
>>
>>
>> It seems to me as we have been on the right track on this. We will check
>> to use this way, which looks more or less like we tried to achieve using the
>> scripting approach. We followed synapse example 352, but there we always
>> received an exception. I'll go and grep it. Yes, here it is:
>>
>>
>>
>> 2008-05-23 10:41:04,358 [127.0.0.1-berjbolle-lx1] [I/O dispatcher 5]  INFO
>> PipeImpl Using native OS Pipes for event-driven to stream IO bridging
>>
>> 2008-05-23 10:41:04,451 [127.0.0.1-berjbolle-lx1] [HttpServerWorker-1]
>> ERROR ScriptMediator The script engine returned an error executing the
>> inlined js script function mediate
>>
>> com.sun.phobos.script.util.ExtendedScriptException:
>> org.mozilla.javascript.EvaluatorException: The choice of Java constructor
>> setTo matching JavaScript argument types (null) is ambiguous; candidate
>> constructors are:
>>
>>     void setTo(java.lang.String)
>>
>>     void setTo(org.apache.axis2.addressing.EndpointReference) (<Unknown
>> Source>#2)in: <Unknown Source>at line no: 2
>>
>>         at
>> com.sun.phobos.script.javascript.RhinoCompiledScript.eval(RhinoCompiledScript.java:68)
>>
>>         at javax.script.CompiledScript.eval(CompiledScript.java:64)
>>
>>         at
>> org.apache.synapse.mediators.bsf.ScriptMediator.mediateForInlineScript(ScriptMediator.java:248)
>>
>>         at
>> org.apache.synapse.mediators.bsf.ScriptMediator.invokeScript(ScriptMediator.java:195)
>>
>>         at
>> org.apache.synapse.mediators.bsf.ScriptMediator.mediate(ScriptMediator.java:168)
>>
>>         at
>> org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:58)
>>
>>         at
>> org.apache.synapse.mediators.filters.InMediator.mediate(InMediator.java:60)
>>
>>         at
>> org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:58)
>>
>>         at
>> org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:125)
>>
>>         at
>> org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:176)
>>
>>         at
>> org.apache.synapse.core.axis2.SynapseMessageReceiver.receive(SynapseMessageReceiver.java:89)
>>
>>         at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:176)
>>
>>         at
>> org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:275)
>>
>>         at
>> org.apache.synapse.transport.nhttp.ServerWorker.processPost(ServerWorker.java:238)
>>
>>         at
>> org.apache.synapse.transport.nhttp.ServerWorker.run(ServerWorker.java:194)
>>
>>         at
>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
>>
>>         at
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
>>
>>         at java.lang.Thread.run(Thread.java:595)
>>
>> Caused by: org.mozilla.javascript.EvaluatorException: The choice of Java
>> constructor setTo matching JavaScript argument types (null) is ambiguous;
>> candidate constructors are:
>>
>>     void setTo(java.lang.String)
>>
>>     void setTo(org.apache.axis2.addressing.EndpointReference) (<Unknown
>> Source>#2)
>>
>>         at
>> org.mozilla.javascript.DefaultErrorReporter.runtimeError(DefaultErrorReporter.java:98)
>>
>>         at
>> org.mozilla.javascript.Context.reportRuntimeError(Context.java:966)
>>
>>         at
>> org.mozilla.javascript.Context.reportRuntimeError(Context.java:1022)
>>
>>         at
>> org.mozilla.javascript.Context.reportRuntimeError3(Context.java:1000)
>>
>>         at
>> org.mozilla.javascript.NativeJavaMethod.findFunction(NativeJavaMethod.java:385)
>>
>>         at
>> org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:156)
>>
>>         at
>> org.mozilla.javascript.optimizer.OptRuntime.call1(OptRuntime.java:66)
>>
>>         at org.mozilla.javascript.gen.c3._c0(<Unknown Source>:2)
>>
>>         at org.mozilla.javascript.gen.c3.call(<Unknown Source>)
>>
>>         at
>> org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:340)
>>
>>         at
>> org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:2758)
>>
>>         at org.mozilla.javascript.gen.c3.call(<Unknown Source>)
>>
>>         at org.mozilla.javascript.gen.c3.exec(<Unknown Source>)
>>
>>         at
>> com.sun.phobos.script.javascript.RhinoCompiledScript.eval(RhinoCompiledScript.java:55)
>>
>>         ... 17 more
>>
>>
>>
>> So while looking at this stack it seems as if the replyTo would be null.
>> Maybe this is only some scripting problem. Could someone please check the
>> example. If it is also not working for someone else, we should file a JIRA.
>> Or can this not work from within the main-sequence for some reason?
>> Basically it is the same as your decribed mediator sequence but with
>> scripting, or am I wrong?
>>
>>
>>
>>
>>
>> Regards,
>>
>>    Eric
>>
>>
>>   ------------------------------
>>
>> Small modification;
>>
>> On Thu, May 22, 2008 at 9:21 PM, Ruwan Linton <[EMAIL PROTECTED]>
>> wrote:
>>
>> Hi Eric,
>>
>> Please see my comments in line;
>>
>> On Thu, May 22, 2008 at 8:53 PM, Hubert, Eric <[EMAIL PROTECTED]>
>> wrote:
>>
>> Hi,
>>
>> how can we send back a fault from an in-sequence? Regarding the Hessian
>> support, is there a way to generate a Hessian fault?
>>
>>
>> If the incoming message is a hessian message and if you
>>
>>    - create a SOAP fault,
>>    - set the RESPONSE=true property and
>>    - copy the ReplyTo as To
>>
>>  I forgot to mention that you will obviously need to send as well to send
>> back the generated response,
>>
>> So the set of mediators required are [makefault, property, header, send]
>>
>> Thanks,
>> Ruwan
>>
>>
>>    -
>>
>> as described in the Sample 
>> 5<http://synapse.apache.org/Synapse_Samples.html#Sample5>then you will be 
>> able to send back a hessian fault.
>>
>>
>>
>> Background:
>> 1) In a switch mediator within the in-sequence we want to send back a
>> fault for the default case and log this.
>>
>>
>> Can be easily done as described above.
>>
>>
>>
>>
>> 2) If the requested URL does not match with any proxy service
>> definitions, Synapse sends back a 202 response to the client. If we got
>> it right synapse always uses the main-sequence if no other sequence
>> matches. So also for this case we would like to send back a fault from
>> within the in-sequence of the main-sequence.
>>
>>
>> A minor correction to this at first, if the message is not dispatched to
>> any of the proxy services on Synapse then the message will be directed to
>> the main sequence of synapse. (synapse dose not match over any other
>> sequences but just the proxy services for incoming messages)
>>
>> If you just have proxy services (service mediation only) and no message
>> mediation (messages coming into main sequence), then you can assume a
>> message reaching the main sequence as a fault message and send back a fault,
>> using the same strategy as described above inside the main sequence.
>>
>>
>>
>>
>> --
>> Ruwan Linton
>> http://www.wso2.org - "Oxygenating the Web Services Platform"
>>
>
>
>
> --
> Ruwan Linton
> http://www.wso2.org - "Oxygenating the Web Services Platform"
>
>


-- 
Ruwan Linton
http://www.wso2.org - "Oxygenating the Web Services Platform"

Reply via email to