Hi Ruwan,
 
the rest of the synapse.xml should not matter. My SOAP-request (will
test with hessian later) is send to an address, which cannot be mapped
to any proxyservice. I just added a few characters to a correct URL to
force this.
 
If i add a log mediator with full output just before the send mediator
it only add the following info:
2008-05-23 19:05:58,084 [10.137.148.73-carl] [HttpServerWorker-14]  INFO
LogMediator To: ,WSAction: ,SOAPAction: ,MessageID:
urn:uuid:867131EB957C2C35661211562358715,Direction: response,Envelope:
<?xml version='1.0' encoding='utf-8'?><soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";><soapenv:Body>
<soapenv:Fault><faultcode
xmlns:sf11="http://schemas.xmlsoap.org/soap/envelope/";>sf11:Client</faul
tcode><faultstring>No service found for specified
URL.</faultstring></soapenv:Fault></soapenv:Body></soapenv:Envelope>
2008-05-23 19:05:58,084 [10.137.148.73-carl] [HttpServerWorker-14] ERROR
HttpCoreNIOSender Malformed destination EPR :
java.net.MalformedURLException: no protocol:
[...]
 
So I don't get something about the request, but rather the response with
an empty and thus not valid To-address.
 
Regards,
   Eric
 
I'll try the sample 5 on the weekend. But this is something different
from my point of view. If there is some fault I delegate to an
faulthandler and then do the same. But here I have no fault, just a
request which does not map to any proxyservice. Or am I wrong on this?
 
 
 


________________________________

        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(Ht
tpCoreNIOSender.java:317)
                        at
org.apache.synapse.transport.nhttp.HttpCoreNIOSender.invoke(HttpCoreNIOS
ender.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(Axis2SynapseE
nvironment.java:219)
                        at
org.apache.synapse.mediators.builtin.SendMediator.mediate(SendMediator.j
ava:154) 

                        at
org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMe
diator.java:58)
                        at
org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMedia
tor.java:125)
                        at
org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis
2SynapseEnvironment.java:176)
                        at
org.apache.synapse.core.axis2.SynapseMessageReceiver.receive(SynapseMess
ageReceiver.java:89)
                        at
org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:176)
                        at
org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostReques
t(HTTPTransportUtils.java:275)
                        at
org.apache.synapse.transport.nhttp.ServerWorker.processPost(ServerWorker
.java:238)
                        at
org.apache.synapse.transport.nhttp.ServerWorker.run(ServerWorker.java:19
4)
                        at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecuto
r.java:650)
                        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.ja
va: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(RhinoCompiledS
cript.java:68)

                                        at
javax.script.CompiledScript.eval(CompiledScript.java:64)

                                        at
org.apache.synapse.mediators.bsf.ScriptMediator.mediateForInlineScript(S
criptMediator.java:248)

                                        at
org.apache.synapse.mediators.bsf.ScriptMediator.invokeScript(ScriptMedia
tor.java:195)

                                        at
org.apache.synapse.mediators.bsf.ScriptMediator.mediate(ScriptMediator.j
ava:168)

                                        at
org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMe
diator.java:58)

                                        at
org.apache.synapse.mediators.filters.InMediator.mediate(InMediator.java:
60)

                                        at
org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMe
diator.java:58)

                                        at
org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMedia
tor.java:125)

                                        at
org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis
2SynapseEnvironment.java:176)

                                        at
org.apache.synapse.core.axis2.SynapseMessageReceiver.receive(SynapseMess
ageReceiver.java:89)

                                        at
org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:176)

                                        at
org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostReques
t(HTTPTransportUtils.java:275)

                                        at
org.apache.synapse.transport.nhttp.ServerWorker.processPost(ServerWorker
.java:238)

                                        at
org.apache.synapse.transport.nhttp.ServerWorker.run(ServerWorker.java:19
4)

                                        at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecuto
r.java:650)

                                        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.ja
va: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(DefaultErrorRep
orter.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.ja
va: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(RhinoCompiledS
cript.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