[
https://issues.apache.org/jira/browse/TUSCANY-1003?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12466822
]
Ignacio Silva-Lepe commented on TUSCANY-1003:
---------------------------------------------
The reason Output2OutputTransformer sees a null is that Axis2AsyncTargetInvoker
did not have a value to return other than null, since it assumed that this was
a non-blocking case.
However, as it turns out, it is not clear that non-blocking bi-directional can
be supported by Axis2 with a sync MEP. That is, it is not clear that Axis2 will
allow us to carry a non-return value invocation with callback over a single
HTTP connection with the callback conveyed by the HTTP response. This is
because to specify a non-return value invocation in WSDL we need an input-only
operation, but Axis2 takes that to mean that no response is coming back and
does not allow a callback object in the operation client.
And, the reason we are trying a sync MEP first is to not require an HTTP
listener on the client yet.
So, for now I have left the operation as input-output and tweaked the
client-side Axis2AsyncTargetInvoker to synchronize with the callback and get
the return from it. This fixes the problems we are seeing but is not quite good
enough in terms of ws async. The next step will require to consider introducing
client-side HTTP listeners to receive callbacks on separate HTTP connections.
> NPE thrown by AxisEngine.send in service side of axis2 binding for async
> callbacks
> ----------------------------------------------------------------------------------
>
> Key: TUSCANY-1003
> URL: https://issues.apache.org/jira/browse/TUSCANY-1003
> Project: Tuscany
> Issue Type: Bug
> Components: Java SCA Axis Binding
> Affects Versions: Java-SCA-Mx
> Reporter: Ignacio Silva-Lepe
> Fix For: Java-SCA-Mx
>
>
> I'm seeing an NPE thrown by AxisEngine.send in the service side of the axis2
> binding for async callbacks. The trace is below. My current guess is that
> this may have something to do with the pass-by-value interceptor but I have
> not delved to deeply into the possible cause. For now I am leaving this in
> the Java SCA Axis binding component but that may change depending on the
> actual reason for the exception.
> org.apache.tuscany.binding.axis2.Axis2BindingRunTimeException:
> java.lang.NullPoi
> nterException
> at
> org.apache.tuscany.binding.axis2.Axis2ServiceCallbackTargetInvoker.in
> vokeTarget(Axis2ServiceCallbackTargetInvoker.java:78)
> at
> org.apache.tuscany.binding.axis2.Axis2ServiceCallbackTargetInvoker.in
> voke(Axis2ServiceCallbackTargetInvoker.java:90)
> at
> org.apache.tuscany.core.wire.InvokerInterceptor.invoke(InvokerInterce
> ptor.java:44)
> at
> org.apache.tuscany.core.databinding.impl.PassByValueInterceptor.invok
> e(PassByValueInterceptor.java:65)
> at
> org.apache.tuscany.core.wire.SynchronousBridgingInterceptor.invoke(Sy
> nchronousBridgingInterceptor.java:41)
> at
> org.apache.tuscany.core.databinding.impl.DataBindingInteceptor.invoke
> (DataBindingInteceptor.java:70)
> at
> org.apache.tuscany.spi.wire.AbstractOutboundInvocationHandler.invoke(
> AbstractOutboundInvocationHandler.java:91)
> at
> org.apache.tuscany.core.wire.jdk.JDKCallbackInvocationHandler.invoke(
> JDKCallbackInvocationHandler.java:103)
> at $Proxy21.getGreetingsCallback(Unknown Source)
> at helloworld.HelloWorldImpl.getGreetings(HelloWorldImpl.java:43)
> 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:585)
> at
> org.apache.tuscany.core.implementation.java.JavaTargetInvoker.invokeT
> arget(JavaTargetInvoker.java:90)
> at
> org.apache.tuscany.spi.extension.TargetInvokerExtension.invoke(Target
> InvokerExtension.java:67)
> at
> org.apache.tuscany.core.wire.InvokerInterceptor.invoke(InvokerInterce
> ptor.java:44)
> at
> org.apache.tuscany.core.databinding.impl.PassByValueInterceptor.invok
> e(PassByValueInterceptor.java:65)
> at
> org.apache.tuscany.core.wire.NonBlockingBridgingInterceptor$1.run(Non
> BlockingBridgingInterceptor.java:79)
> at
> org.apache.tuscany.core.services.work.jsr237.Jsr237WorkScheduler$Jsr2
> 37Work.run(Jsr237WorkScheduler.java:212)
> at
> org.apache.tuscany.core.services.work.jsr237.workmanager.ThreadPoolWo
> rkManager$DecoratingWork.run(ThreadPoolWorkManager.java:206)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec
> utor.java:650)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor
> .java:675)
> at java.lang.Thread.run(Thread.java:595)
> Caused by: java.lang.NullPointerException
> at
> org.apache.coyote.http11.InternalOutputBuffer.realWriteBytes(Internal
> OutputBuffer.java:746)
> at
> org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:433)
> at
> org.apache.coyote.http11.InternalOutputBuffer.flush(InternalOutputBuf
> fer.java:304)
> at
> org.apache.coyote.http11.Http11Processor.action(Http11Processor.java:
> 991)
> at org.apache.coyote.Response.action(Response.java:182)
> at
> org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:
> 322)
> at
> org.apache.catalina.connector.OutputBuffer.flush(OutputBuffer.java:29
> 3)
> at
> org.apache.catalina.connector.CoyoteOutputStream.flush(CoyoteOutputSt
> ream.java:97)
> at
> sun.nio.cs.StreamEncoder$CharsetSE.implFlush(StreamEncoder.java:410)
> at sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:152)
> at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:213)
> at java.io.BufferedWriter.flush(BufferedWriter.java:236)
> at
> com.ctc.wstx.sw.BufferingXmlWriter.flush(BufferingXmlWriter.java:184)
> at com.ctc.wstx.sw.BaseStreamWriter.flush(BaseStreamWriter.java:269)
> at
> org.apache.axiom.om.impl.MTOMXMLStreamWriter.flush(MTOMXMLStreamWrite
> r.java:119)
> at
> org.apache.axiom.om.impl.llom.OMNodeImpl.serializeAndConsume(OMNodeIm
> pl.java:412)
> at
> org.apache.axis2.transport.http.CommonsHTTPTransportSender.sendUsingO
> utputStream(CommonsHTTPTransportSender.java:275)
> at
> org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(Com
> monsHTTPTransportSender.java:209)
> at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:670)
> at
> org.apache.tuscany.binding.axis2.Axis2ServiceCallbackTargetInvoker.in
> vokeTarget(Axis2ServiceCallbackTargetInvoker.java:70)
> ... 23 more
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]