[
https://issues.apache.org/jira/browse/TUSCANY-1398?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
York (He Yuan) HUANG updated TUSCANY-1398:
------------------------------------------
Description:
I created a simple SCA application, which involves an order process. The
application was attached. Below is the composite file of the application. Note
that, the callback method of Supplier will invoke the callback interface of
Customer. Thus, there are nested callbacks.
<?xml version="1.0" encoding="UTF-8"?>
<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
targetNamespace="http://orderprocess"
xmlns:cb="http://orderprocess"
name="orderprocess">
<component name="Customer">
<implementation.java class="orderprocess.CustomerImpl"/>
<reference name="supplier" target="Supplier/Order">
<interface.java interface="orderprocess.Order"
callbackInterface="orderprocess.OrderNotification"/>
</reference>
</component>
<component name="Supplier">
<service name="Order">
<interface.java interface="orderprocess.Order"
callbackInterface="orderprocess.OrderNotification"/>
</service>
<implementation.java class="orderprocess.SupplierImpl"/>
<reference name="railway" target="RailwayTransport/Shipment">
<interface.java interface="orderprocess.Shipment"
callbackInterface="orderprocess.ShipmentNotification"/>
</reference>
<reference name="highway" target="HighwayTransport">
<interface.java interface="orderprocess.Shipment"
callbackInterface="orderprocess.ShipmentNotification"/>
</reference>
</component>
<component name="HighwayTransport">
<service name="Shipment">
<interface.java interface="orderprocess.Shipment"
callbackInterface="orderprocess.ShipmentNotification"/>
</service>
<implementation.java class="orderprocess.HighwayTransport"/>
<property name="period">5000</property>
</component>
<component name="RailwayTransport">
<service name="Shipment">
<interface.java interface="orderprocess.Shipment"
callbackInterface="orderprocess.ShipmentNotification"/>
</service>
<implementation.java class="orderprocess.RaiwayTransport"/>
<property name="period">1000</property>
</component>
</composite>
However, the application fails on both SCA Java 0.90 and trunk. Below is the
error message. When I debugged the application, I found that it might be caused
by wrong "from" info in ThreadMessageContext.
java.lang.NullPointerException
at
org.apache.tuscany.sca.core.invocation.JDKCallbackInvocationHandler.invoke(JDKCallbackInvocationHandler.java:77)
at $Proxy11.notify(Unknown Source)
at orderprocess.SupplierImpl.notify(SupplierImpl.java:70)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at
org.apache.tuscany.sca.implementation.java.invocation.JavaTargetInvoker.invokeTarget(JavaTargetInvoker.java:112)
at
org.apache.tuscany.sca.implementation.java.invocation.JavaTargetInvoker.invoke(JavaTargetInvoker.java:134)
at
org.apache.tuscany.sca.implementation.java.invocation.TargetInvokerInvoker.invoke(TargetInvokerInvoker.java:46)
at
org.apache.tuscany.sca.core.invocation.AbstractInvocationHandler.invoke(AbstractInvocationHandler.java:84)
at
org.apache.tuscany.sca.core.invocation.JDKCallbackInvocationHandler.invoke(JDKCallbackInvocationHandler.java:85)
at $Proxy13.notify(Unknown Source)
at orderprocess.RaiwayTransport.doShipping(RaiwayTransport.java:56)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at
org.apache.tuscany.sca.implementation.java.invocation.JavaTargetInvoker.invokeTarget(JavaTargetInvoker.java:112)
at
org.apache.tuscany.sca.implementation.java.invocation.JavaTargetInvoker.invoke(JavaTargetInvoker.java:134)RuntimeException
invoking receiveResult: java.lang.NullPointerException
at
org.apache.tuscany.sca.implementation.java.invocation.TargetInvokerInvoker.invoke(TargetInvokerInvoker.java:46)
at
org.apache.tuscany.sca.core.invocation.NonBlockingInterceptor$1.run(NonBlockingInterceptor.java:68)
at org.apache.tuscany.sca.core.work.Jsr237Work.run(Jsr237Work.java:61)
at
org.apache.tuscany.sca.core.work.ThreadPoolWorkManager$DecoratingWork.run(ThreadPoolWorkManager.java:206)
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)
was:
I created a simple SCA application, which involves an order process. Below is
the composite file of the application. Note that, the callback method of
Supplier will invoke the callback interface of Customer. Thus, there are nested
callbacks.
<?xml version="1.0" encoding="UTF-8"?>
<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
targetNamespace="http://orderprocess"
xmlns:cb="http://orderprocess"
name="orderprocess">
<component name="Customer">
<implementation.java class="orderprocess.CustomerImpl"/>
<reference name="supplier" target="Supplier/Order">
<interface.java interface="orderprocess.Order"
callbackInterface="orderprocess.OrderNotification"/>
</reference>
</component>
<component name="Supplier">
<service name="Order">
<interface.java interface="orderprocess.Order"
callbackInterface="orderprocess.OrderNotification"/>
</service>
<implementation.java class="orderprocess.SupplierImpl"/>
<reference name="railway" target="RailwayTransport/Shipment">
<interface.java interface="orderprocess.Shipment"
callbackInterface="orderprocess.ShipmentNotification"/>
</reference>
<reference name="highway" target="HighwayTransport">
<interface.java interface="orderprocess.Shipment"
callbackInterface="orderprocess.ShipmentNotification"/>
</reference>
</component>
<component name="HighwayTransport">
<service name="Shipment">
<interface.java interface="orderprocess.Shipment"
callbackInterface="orderprocess.ShipmentNotification"/>
</service>
<implementation.java class="orderprocess.HighwayTransport"/>
<property name="period">5000</property>
</component>
<component name="RailwayTransport">
<service name="Shipment">
<interface.java interface="orderprocess.Shipment"
callbackInterface="orderprocess.ShipmentNotification"/>
</service>
<implementation.java class="orderprocess.RaiwayTransport"/>
<property name="period">1000</property>
</component>
</composite>
However, the application fails on both SCA Java 0.90 and trunk. Below is the
error message. When I debugged the application, I found that it might be caused
by wrong "from" info in ThreadMessageContext.
java.lang.NullPointerException
at
org.apache.tuscany.sca.core.invocation.JDKCallbackInvocationHandler.invoke(JDKCallbackInvocationHandler.java:77)
at $Proxy11.notify(Unknown Source)
at orderprocess.SupplierImpl.notify(SupplierImpl.java:70)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at
org.apache.tuscany.sca.implementation.java.invocation.JavaTargetInvoker.invokeTarget(JavaTargetInvoker.java:112)
at
org.apache.tuscany.sca.implementation.java.invocation.JavaTargetInvoker.invoke(JavaTargetInvoker.java:134)
at
org.apache.tuscany.sca.implementation.java.invocation.TargetInvokerInvoker.invoke(TargetInvokerInvoker.java:46)
at
org.apache.tuscany.sca.core.invocation.AbstractInvocationHandler.invoke(AbstractInvocationHandler.java:84)
at
org.apache.tuscany.sca.core.invocation.JDKCallbackInvocationHandler.invoke(JDKCallbackInvocationHandler.java:85)
at $Proxy13.notify(Unknown Source)
at orderprocess.RaiwayTransport.doShipping(RaiwayTransport.java:56)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at
org.apache.tuscany.sca.implementation.java.invocation.JavaTargetInvoker.invokeTarget(JavaTargetInvoker.java:112)
at
org.apache.tuscany.sca.implementation.java.invocation.JavaTargetInvoker.invoke(JavaTargetInvoker.java:134)RuntimeException
invoking receiveResult: java.lang.NullPointerException
at
org.apache.tuscany.sca.implementation.java.invocation.TargetInvokerInvoker.invoke(TargetInvokerInvoker.java:46)
at
org.apache.tuscany.sca.core.invocation.NonBlockingInterceptor$1.run(NonBlockingInterceptor.java:68)
at org.apache.tuscany.sca.core.work.Jsr237Work.run(Jsr237Work.java:61)
at
org.apache.tuscany.sca.core.work.ThreadPoolWorkManager$DecoratingWork.run(ThreadPoolWorkManager.java:206)
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)
> Nested Callbacks Fail
> ---------------------
>
> Key: TUSCANY-1398
> URL: https://issues.apache.org/jira/browse/TUSCANY-1398
> Project: Tuscany
> Issue Type: Bug
> Components: Java SCA Java Implementation Extension
> Affects Versions: Java-SCA-0.90, Java-SCA-Next
> Reporter: York (He Yuan) HUANG
> Attachments: non-block-orderprocess.zip
>
>
> I created a simple SCA application, which involves an order process. The
> application was attached. Below is the composite file of the application.
> Note that, the callback method of Supplier will invoke the callback interface
> of Customer. Thus, there are nested callbacks.
> <?xml version="1.0" encoding="UTF-8"?>
> <composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
> targetNamespace="http://orderprocess"
> xmlns:cb="http://orderprocess"
> name="orderprocess">
> <component name="Customer">
> <implementation.java class="orderprocess.CustomerImpl"/>
> <reference name="supplier" target="Supplier/Order">
> <interface.java interface="orderprocess.Order"
> callbackInterface="orderprocess.OrderNotification"/>
> </reference>
> </component>
> <component name="Supplier">
> <service name="Order">
> <interface.java interface="orderprocess.Order"
> callbackInterface="orderprocess.OrderNotification"/>
> </service>
> <implementation.java class="orderprocess.SupplierImpl"/>
> <reference name="railway" target="RailwayTransport/Shipment">
> <interface.java interface="orderprocess.Shipment"
> callbackInterface="orderprocess.ShipmentNotification"/>
> </reference>
> <reference name="highway" target="HighwayTransport">
> <interface.java interface="orderprocess.Shipment"
> callbackInterface="orderprocess.ShipmentNotification"/>
> </reference>
> </component>
>
> <component name="HighwayTransport">
> <service name="Shipment">
> <interface.java interface="orderprocess.Shipment"
> callbackInterface="orderprocess.ShipmentNotification"/>
> </service>
> <implementation.java class="orderprocess.HighwayTransport"/>
> <property name="period">5000</property>
> </component>
>
> <component name="RailwayTransport">
> <service name="Shipment">
> <interface.java interface="orderprocess.Shipment"
> callbackInterface="orderprocess.ShipmentNotification"/>
> </service>
> <implementation.java class="orderprocess.RaiwayTransport"/>
> <property name="period">1000</property>
> </component>
>
> </composite>
> However, the application fails on both SCA Java 0.90 and trunk. Below is the
> error message. When I debugged the application, I found that it might be
> caused by wrong "from" info in ThreadMessageContext.
> java.lang.NullPointerException
> at
> org.apache.tuscany.sca.core.invocation.JDKCallbackInvocationHandler.invoke(JDKCallbackInvocationHandler.java:77)
> at $Proxy11.notify(Unknown Source)
> at orderprocess.SupplierImpl.notify(SupplierImpl.java:70)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:585)
> at
> org.apache.tuscany.sca.implementation.java.invocation.JavaTargetInvoker.invokeTarget(JavaTargetInvoker.java:112)
> at
> org.apache.tuscany.sca.implementation.java.invocation.JavaTargetInvoker.invoke(JavaTargetInvoker.java:134)
> at
> org.apache.tuscany.sca.implementation.java.invocation.TargetInvokerInvoker.invoke(TargetInvokerInvoker.java:46)
> at
> org.apache.tuscany.sca.core.invocation.AbstractInvocationHandler.invoke(AbstractInvocationHandler.java:84)
> at
> org.apache.tuscany.sca.core.invocation.JDKCallbackInvocationHandler.invoke(JDKCallbackInvocationHandler.java:85)
> at $Proxy13.notify(Unknown Source)
> at orderprocess.RaiwayTransport.doShipping(RaiwayTransport.java:56)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:585)
> at
> org.apache.tuscany.sca.implementation.java.invocation.JavaTargetInvoker.invokeTarget(JavaTargetInvoker.java:112)
> at
> org.apache.tuscany.sca.implementation.java.invocation.JavaTargetInvoker.invoke(JavaTargetInvoker.java:134)RuntimeException
> invoking receiveResult: java.lang.NullPointerException
> at
> org.apache.tuscany.sca.implementation.java.invocation.TargetInvokerInvoker.invoke(TargetInvokerInvoker.java:46)
> at
> org.apache.tuscany.sca.core.invocation.NonBlockingInterceptor$1.run(NonBlockingInterceptor.java:68)
> at org.apache.tuscany.sca.core.work.Jsr237Work.run(Jsr237Work.java:61)
> at
> org.apache.tuscany.sca.core.work.ThreadPoolWorkManager$DecoratingWork.run(ThreadPoolWorkManager.java:206)
> 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)
--
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]