Urso Wieske wrote:
Hi Simon,

I have uploaded my sources as a zipped file.

Hi Urso,
This problem is caused by a bug in Tuscany.  Please raise a JIRA
so that we can track and fix the problem.  In the meantime, I can
suggest a partial workaround.

The injection failure only happens if Tuscany is using the
tuscany-binding-ws-runtime-jaxws module as the runtime implementation
for <binding.ws>.  It doesn't happen if tuscany-binding-ws-runtime-axis2
is used instead of tuscany-binding-ws-runtime-jaxws.  This implies that
the problem is caused by a bug in the -jaxws version.

By default, Tuscany uses the -jaxws version.  To get Tuscany to use
the -axis2 version instead, you need to do special configuration in
the pom.xml file.

Unfortunately I couldn't find a way to make this change when using
maven-tuscany-plugin to run the application.  This is because
maven-tuscany-plugin has a dependency on tuscany-base-runtime.
The tuscany-base-runtime jar contains the -jaxws version and seems
to always use it even if the -axis2 version is declared as an
additional dependency.

I did find a way to get Tuscany to use the -axis2 version when not
using maven-tuscany-plugin.  If you replace this dependency:
  <dependency>
      <groupId>org.apache.tuscany.sca</groupId>
      <artifactId>tuscany-base-runtime</artifactId>
      <version>2.0-Beta1</version>
  </dependency>

by the following four dependencies:
  <dependency>
      <groupId>org.apache.tuscany.sca</groupId>
      <artifactId>tuscany-binding-ws-runtime-axis2</artifactId>
      <version>2.0-Beta1</version>
  </dependency>

  <dependency>
      <groupId>org.apache.tuscany.sca</groupId>
      <artifactId>tuscany-host-jetty</artifactId>
      <version>2.0-Beta1</version>
  </dependency>

  <dependency>
      <groupId>org.apache.tuscany.sca</groupId>
      <artifactId>tuscany-node-impl</artifactId>
      <version>2.0-Beta1</version>
  </dependency>

  <dependency>
      <groupId>org.apache.tuscany.sca</groupId>
      <artifactId>tuscany-implementation-java-runtime</artifactId>
      <version>2.0-Beta1</version>
  </dependency>

then the application runs successfully.  I used a maven JUnit test
to verify this.

  Simon

Hi Simon,

I adapted my code as you suggested. It seems like the error has dissappeared, but I got new ones. Well I removed the setter and getter of messageInterpreterCallback from MessageInterpreterImpl. Now my MessageInterpreterImpl class contains only the instance variable messageInterpreterCallback . I have made it a protected variable.

I get a HTTP Internal Server ( error 500).
I am still missing something.SCA runtime is supposed "automatically" inject my callback instance in the messageInterpreterCallback member variable of MessageInterpreterImpl. The MessageInterpreterImpl needs to have a reference to some callback instance.
I can;t seem to solve this problem.

This is the error....
---------------------------------------
SEVERE: Exception invoking injector - null
org.oasisopen.sca.ServiceRuntimeException: Exception invoking injector - null at org.apache.tuscany.sca.implementation.java.invocation.JavaImplementationInvoker.invoke(JavaImplementationInvoker.java:208) at org.apache.tuscany.sca.core.databinding.wire.DataTransformationInterceptor.invoke(DataTransformationInterceptor.java:86) at org.apache.tuscany.sca.core.invocation.RuntimeInvoker.invoke(RuntimeInvoker.java:91) at org.apache.tuscany.sca.core.invocation.RuntimeInvoker.invoke(RuntimeInvoker.java:74) at org.apache.tuscany.sca.core.assembly.impl.RuntimeEndpointImpl.invoke(RuntimeEndpointImpl.java:286) at org.apache.tuscany.sca.binding.ws.jaxws.JAXWSBindingProvider.invoke(JAXWSBindingProvider.java:207) at org.apache.tuscany.sca.binding.ws.jaxws.JAXWSBindingProvider.invoke(JAXWSBindingProvider.java:61) at com.sun.xml.internal.ws.api.server.InstanceResolver$1.invokeProvider(InstanceResolver.java:245) at com.sun.xml.internal.ws.server.InvokerTube$2.invokeProvider(InvokerTube.java:145) at com.sun.xml.internal.ws.server.provider.SyncProviderInvokerTube.processRequest(SyncProviderInvokerTube.java:67)
at com.sun.xml.internal.ws.api.pipe.Fiber.__doRun(Fiber.java:587)
at com.sun.xml.internal.ws.api.pipe.Fiber._doRun(Fiber.java:546)
at com.sun.xml.internal.ws.api.pipe.Fiber.doRun(Fiber.java:531)
at com.sun.xml.internal.ws.api.pipe.Fiber.runSync(Fiber.java:428)
at com.sun.xml.internal.ws.server.WSEndpointImpl$2.process(WSEndpointImpl.java:232) at com.sun.xml.internal.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:460) at com.sun.xml.internal.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:233) at com.sun.xml.internal.ws.transport.http.server.WSHttpHandler.handleExchange(WSHttpHandler.java:95) at com.sun.xml.internal.ws.transport.http.server.WSHttpHandler.handle(WSHttpHandler.java:80)
at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:65)
at sun.net.httpserver.AuthFilter.doFilter(AuthFilter.java:65)
at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:68)
at sun.net.httpserver.ServerImpl$Exchange$LinkHandler.handle(ServerImpl.java:555)
at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:65)
at sun.net.httpserver.ServerImpl$Exchange.run(ServerImpl.java:527)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
Caused by: org.apache.tuscany.sca.core.factory.ObjectCreationException: Exception invoking injector - null at org.apache.tuscany.sca.implementation.java.invocation.JavaImplementationInvoker.injectCallbacks(JavaImplementationInvoker.java:235) at org.apache.tuscany.sca.implementation.java.invocation.JavaImplementationInvoker.invoke(JavaImplementationInvoker.java:106)
... 27 more
Caused by: java.lang.NullPointerException
at org.apache.tuscany.sca.core.context.impl.CallbackServiceReferenceImpl.init(CallbackServiceReferenceImpl.java:64) at org.apache.tuscany.sca.core.context.impl.CallbackServiceReferenceImpl.<init>(CallbackServiceReferenceImpl.java:47) at org.apache.tuscany.sca.core.invocation.impl.JDKProxyFactory.createCallbackProxy(JDKProxyFactory.java:137) at org.apache.tuscany.sca.core.invocation.ExtensibleProxyFactory.createCallbackProxy(ExtensibleProxyFactory.java:76) at org.apache.tuscany.sca.core.invocation.CallbackWireObjectFactory.getInstance(CallbackWireObjectFactory.java:45) at org.apache.tuscany.sca.implementation.java.injection.MethodInjector.inject(MethodInjector.java:55) at org.apache.tuscany.sca.implementation.java.invocation.JavaImplementationInvoker.injectCallbacks(JavaImplementationInvoker.java:230)
... 28 more
10-jan-2011 1:39:26 com.sun.xml.internal.ws.server.provider.SyncProviderInvokerTube processRequest
SEVERE: The server sent HTTP status code 500: Internal Server Error
com.sun.xml.internal.ws.client.ClientTransportException: The server sent HTTP status code 500: Internal Server Error at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.checkStatusCodeOneway(HttpTransportPipe.java:207) at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.process(HttpTransportPipe.java:164) at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.processRequest(HttpTransportPipe.java:83) at com.sun.xml.internal.ws.transport.DeferredTransportPipe.processRequest(DeferredTransportPipe.java:105)
at com.sun.xml.internal.ws.api.pipe.Fiber.__doRun(Fiber.java:587)
at com.sun.xml.internal.ws.api.pipe.Fiber._doRun(Fiber.java:546)
at com.sun.xml.internal.ws.api.pipe.Fiber.doRun(Fiber.java:531)
at com.sun.xml.internal.ws.api.pipe.Fiber.runSync(Fiber.java:428)
at com.sun.xml.internal.ws.client.Stub.process(Stub.java:211)
at com.sun.xml.internal.ws.client.dispatch.DispatchImpl.invokeOneWay(DispatchImpl.java:204) at org.apache.tuscany.sca.binding.ws.jaxws.JAXWSBindingInvoker.invokeTarget(JAXWSBindingInvoker.java:224) at org.apache.tuscany.sca.binding.ws.jaxws.JAXWSBindingInvoker.invoke(JAXWSBindingInvoker.java:149) at org.apache.tuscany.sca.core.databinding.wire.DataTransformationInterceptor.invoke(DataTransformationInterceptor.java:86) at org.apache.tuscany.sca.core.invocation.impl.JDKInvocationHandler.invoke(JDKInvocationHandler.java:298) at org.apache.tuscany.sca.core.invocation.impl.JDKInvocationHandler.invoke(JDKInvocationHandler.java:254) at org.apache.tuscany.sca.core.invocation.impl.JDKInvocationHandler.invoke(JDKInvocationHandler.java:114) at org.apache.tuscany.sca.core.invocation.impl.AsyncJDKInvocationHandler.doInvokeSync(AsyncJDKInvocationHandler.java:238) at org.apache.tuscany.sca.core.invocation.impl.AsyncJDKInvocationHandler.invoke(AsyncJDKInvocationHandler.java:160)
at $Proxy50.interpret(Unknown Source)
at org.acme.logix.LogisticCenterImpl.processMessage(LogisticCenterImpl.java:27)
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:597)
at org.apache.tuscany.sca.implementation.java.invocation.JavaImplementationInvoker.invoke(JavaImplementationInvoker.java:158) at org.apache.tuscany.sca.core.databinding.wire.DataTransformationInterceptor.invoke(DataTransformationInterceptor.java:86) at org.apache.tuscany.sca.core.invocation.RuntimeInvoker.invoke(RuntimeInvoker.java:91) at org.apache.tuscany.sca.core.invocation.RuntimeInvoker.invoke(RuntimeInvoker.java:74) at org.apache.tuscany.sca.core.assembly.impl.RuntimeEndpointImpl.invoke(RuntimeEndpointImpl.java:286) at org.apache.tuscany.sca.binding.ws.jaxws.JAXWSBindingProvider.invoke(JAXWSBindingProvider.java:207) at org.apache.tuscany.sca.binding.ws.jaxws.JAXWSBindingProvider.invoke(JAXWSBindingProvider.java:61) at com.sun.xml.internal.ws.api.server.InstanceResolver$1.invokeProvider(InstanceResolver.java:245) at com.sun.xml.internal.ws.server.InvokerTube$2.invokeProvider(InvokerTube.java:145) at com.sun.xml.internal.ws.server.provider.SyncProviderInvokerTube.processRequest(SyncProviderInvokerTube.java:67)
at com.sun.xml.internal.ws.api.pipe.Fiber.__doRun(Fiber.java:587)
at com.sun.xml.internal.ws.api.pipe.Fiber._doRun(Fiber.java:546)
at com.sun.xml.internal.ws.api.pipe.Fiber.doRun(Fiber.java:531)
at com.sun.xml.internal.ws.api.pipe.Fiber.runSync(Fiber.java:428)
at com.sun.xml.internal.ws.server.WSEndpointImpl$2.process(WSEndpointImpl.java:232) at com.sun.xml.internal.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:460) at com.sun.xml.internal.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:233) at com.sun.xml.internal.ws.transport.http.server.WSHttpHandler.handleExchange(WSHttpHandler.java:95) at com.sun.xml.internal.ws.transport.http.server.WSHttpHandler.handle(WSHttpHandler.java:80)
at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:65)
at sun.net.httpserver.AuthFilter.doFilter(AuthFilter.java:65)
at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:68)
at sun.net.httpserver.ServerImpl$Exchange$LinkHandler.handle(ServerImpl.java:555)
at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:65)
at sun.net.httpserver.ServerImpl$Exchange.run(ServerImpl.java:527)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
-----------------------------------------
Hope you can help me. (?)

Kind Regards
Urso




2011/1/14 Simon Nash <[email protected] <mailto:[email protected]>>

    Hi Urso,
    I'm starting to look at your project code now.

    It's important to keep these threads on the Tuscany mailing list
    so that other members of the Tuscany community are included in
    the discussion.  The Tuscany mailing list archives are an important
    resource for Tuscany users who are experiencing a problem and are
    looking to see if others have found a solution.  If a problem is
    solved by a private message exchange instead of on the public list,
    the knowledge of how to solve it is confined to one person instead
    of being shared by the community.

    The best way to make this happen would be for you to resend your
    recent private emails to the public list.  I'll look out for them
    on the public list so that I can respond to them there.

     Simon

    Urso Wieske wrote:

        Hi Simon,

        You'll find in this email the zipped file containing my sourcecode.

        Unfortunately, I still have errors.
        I changed the member variable from protected to private like you
        suggested.
        And created Getter and Setter for this member variable.
        (messageInterpreterCallback).
        I annotated the setter with @Callback.
        I also removed the URI attribute from the callback/binding.ws
        <http://binding.ws> <http://binding.ws> element of the service
        according to your suggestion. Still problems.... :-(


        I have zipped my source. It's an Eclipse project.

        I appreciate the fact that you are willing to verify this issue.
        If you have any questions about the code, just let me know.

        Please checkout also if my POM is well specified with regard to
        dependencies. Do I have the proper dependencies. I am using
        Tuscany 2.0 Beta1.

        Kind Regards
        Urso


        2011/1/10 Simon Nash <[email protected] <mailto:[email protected]>
        <mailto:[email protected] <mailto:[email protected]>>>


           Urso Wieske wrote:

               Hi Simon,

               I adapted my code as you suggested. It seems like the
        error has
               dissappeared, but I got new ones. Well I removed the
        setter and
               getter of messageInterpreterCallback from
               MessageInterpreterImpl. Now my MessageInterpreterImpl class
               contains only the instance variable
        messageInterpreterCallback .
               I have made it a protected variable.

           According to the SCA 1.1 specs, this variable should be private
           in order to avoid having it treated as a reference.  Can you try
           changing this and see if it makes any difference?


               I get a HTTP Internal Server ( error 500).
               I am still missing something.SCA runtime is supposed
               "automatically" inject my callback instance in the
               messageInterpreterCallback member variable of
               MessageInterpreterImpl. The MessageInterpreterImpl needs
        to have
               a reference to some callback instance.
               I can;t seem to solve this problem.

            >From the stack trace it seems that the thread message
        context doesn't
           contain the callback endpoint.  I'm not sure what could cause
        this.
           However I noticed a problem in your composite that would be worth
           fixing, and it's just possible that this might be related to the
           problem that you're seeing.

           The problem is that you have specified a callback URI for the
           MessageInterpreter service in MessageInterpreterComponent, as
        follows:

            <service name="MessageInterpreter">
              <interface.java interface="org.acme.logix.MessageInterpreter"
callbackInterface="org.acme.logix.MessageInterpreterCallback"/>
              <binding.ws <http://binding.ws> <http://binding.ws>

uri="http://localhost:8081/MessageInterpreterComponent/MessageInterpreter"/>
              <callback>
                <binding.ws <http://binding.ws> <http://binding.ws>
           uri="http://localhost:8084/Client/MessageInterpreterCallback"/>
              </callback>
            </service>

           There shouldn't be any callback URI in the service
        definition, because
           this information is provided at runtime by the client
        invocation.  So
           you should change the above to:

            <service name="MessageInterpreter">
              <interface.java interface="org.acme.logix.MessageInterpreter"
callbackInterface="org.acme.logix.MessageInterpreterCallback"/>
              <binding.ws <http://binding.ws> <http://binding.ws>

uri="http://localhost:8081/MessageInterpreterComponent/MessageInterpreter"/>
              <callback>
                <binding.ws/ <http://binding.ws/> <http://binding.ws/>>

              </callback>
            </service>

           If neither of these suggested changes fixes the problem, please
           post the complete application as a zip file.

            Simon

               This is the error....
               ---------------------------------------
               SEVERE: Exception invoking injector - null
               org.oasisopen.sca.ServiceRuntimeException: Exception invoking
               injector - null
               at
org.apache.tuscany.sca.implementation.java.invocation.JavaImplementationInvoker.invoke(JavaImplementationInvoker.java:208)
               at
org.apache.tuscany.sca.core.databinding.wire.DataTransformationInterceptor.invoke(DataTransformationInterceptor.java:86)
               at
org.apache.tuscany.sca.core.invocation.RuntimeInvoker.invoke(RuntimeInvoker.java:91)
               at
org.apache.tuscany.sca.core.invocation.RuntimeInvoker.invoke(RuntimeInvoker.java:74)
               at
org.apache.tuscany.sca.core.assembly.impl.RuntimeEndpointImpl.invoke(RuntimeEndpointImpl.java:286)
               at
org.apache.tuscany.sca.binding.ws.jaxws.JAXWSBindingProvider.invoke(JAXWSBindingProvider.java:207)
               at
org.apache.tuscany.sca.binding.ws.jaxws.JAXWSBindingProvider.invoke(JAXWSBindingProvider.java:61)
               at
com.sun.xml.internal.ws.api.server.InstanceResolver$1.invokeProvider(InstanceResolver.java:245)
               at
com.sun.xml.internal.ws.server.InvokerTube$2.invokeProvider(InvokerTube.java:145)
               at
com.sun.xml.internal.ws.server.provider.SyncProviderInvokerTube.processRequest(SyncProviderInvokerTube.java:67)
               at
        com.sun.xml.internal.ws.api.pipe.Fiber.__doRun(Fiber.java:587)
               at
        com.sun.xml.internal.ws.api.pipe.Fiber._doRun(Fiber.java:546)
               at
        com.sun.xml.internal.ws.api.pipe.Fiber.doRun(Fiber.java:531)
               at
        com.sun.xml.internal.ws.api.pipe.Fiber.runSync(Fiber.java:428)
               at
com.sun.xml.internal.ws.server.WSEndpointImpl$2.process(WSEndpointImpl.java:232)
               at
com.sun.xml.internal.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:460)
               at
com.sun.xml.internal.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:233)
               at
com.sun.xml.internal.ws.transport.http.server.WSHttpHandler.handleExchange(WSHttpHandler.java:95)
               at
com.sun.xml.internal.ws.transport.http.server.WSHttpHandler.handle(WSHttpHandler.java:80)
               at
        com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:65)
               at sun.net.httpserver.AuthFilter.doFilter(AuthFilter.java:65)
               at
        com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:68)
               at
sun.net.httpserver.ServerImpl$Exchange$LinkHandler.handle(ServerImpl.java:555)
               at
        com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:65)
               at
        sun.net.httpserver.ServerImpl$Exchange.run(ServerImpl.java:527)
               at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
               at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
               at java.lang.Thread.run(Thread.java:662)
               Caused by:
               org.apache.tuscany.sca.core.factory.ObjectCreationException:
               Exception invoking injector - null
               at
org.apache.tuscany.sca.implementation.java.invocation.JavaImplementationInvoker.injectCallbacks(JavaImplementationInvoker.java:235)
               at
org.apache.tuscany.sca.implementation.java.invocation.JavaImplementationInvoker.invoke(JavaImplementationInvoker.java:106)
               ... 27 more
               Caused by: java.lang.NullPointerException
               at
org.apache.tuscany.sca.core.context.impl.CallbackServiceReferenceImpl.init(CallbackServiceReferenceImpl.java:64)
               at
org.apache.tuscany.sca.core.context.impl.CallbackServiceReferenceImpl.<init>(CallbackServiceReferenceImpl.java:47)
               at
org.apache.tuscany.sca.core.invocation.impl.JDKProxyFactory.createCallbackProxy(JDKProxyFactory.java:137)
               at
org.apache.tuscany.sca.core.invocation.ExtensibleProxyFactory.createCallbackProxy(ExtensibleProxyFactory.java:76)
               at
org.apache.tuscany.sca.core.invocation.CallbackWireObjectFactory.getInstance(CallbackWireObjectFactory.java:45)
               at
org.apache.tuscany.sca.implementation.java.injection.MethodInjector.inject(MethodInjector.java:55)
               at
org.apache.tuscany.sca.implementation.java.invocation.JavaImplementationInvoker.injectCallbacks(JavaImplementationInvoker.java:230)
               ... 28 more
               10-jan-2011 1:39:26
com.sun.xml.internal.ws.server.provider.SyncProviderInvokerTube
               processRequest
               SEVERE: The server sent HTTP status code 500: Internal
        Server Error
               com.sun.xml.internal.ws.client.ClientTransportException: The
               server sent HTTP status code 500: Internal Server Error
               at
com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.checkStatusCodeOneway(HttpTransportPipe.java:207)
               at
com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.process(HttpTransportPipe.java:164)
               at
com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.processRequest(HttpTransportPipe.java:83)
               at
com.sun.xml.internal.ws.transport.DeferredTransportPipe.processRequest(DeferredTransportPipe.java:105)
               at
        com.sun.xml.internal.ws.api.pipe.Fiber.__doRun(Fiber.java:587)
               at
        com.sun.xml.internal.ws.api.pipe.Fiber._doRun(Fiber.java:546)
               at
        com.sun.xml.internal.ws.api.pipe.Fiber.doRun(Fiber.java:531)
               at
        com.sun.xml.internal.ws.api.pipe.Fiber.runSync(Fiber.java:428)
               at com.sun.xml.internal.ws.client.Stub.process(Stub.java:211)
               at
com.sun.xml.internal.ws.client.dispatch.DispatchImpl.invokeOneWay(DispatchImpl.java:204)
               at
org.apache.tuscany.sca.binding.ws.jaxws.JAXWSBindingInvoker.invokeTarget(JAXWSBindingInvoker.java:224)
               at
org.apache.tuscany.sca.binding.ws.jaxws.JAXWSBindingInvoker.invoke(JAXWSBindingInvoker.java:149)
               at
org.apache.tuscany.sca.core.databinding.wire.DataTransformationInterceptor.invoke(DataTransformationInterceptor.java:86)
               at
org.apache.tuscany.sca.core.invocation.impl.JDKInvocationHandler.invoke(JDKInvocationHandler.java:298)
               at
org.apache.tuscany.sca.core.invocation.impl.JDKInvocationHandler.invoke(JDKInvocationHandler.java:254)
               at
org.apache.tuscany.sca.core.invocation.impl.JDKInvocationHandler.invoke(JDKInvocationHandler.java:114)
               at
org.apache.tuscany.sca.core.invocation.impl.AsyncJDKInvocationHandler.doInvokeSync(AsyncJDKInvocationHandler.java:238)
               at
org.apache.tuscany.sca.core.invocation.impl.AsyncJDKInvocationHandler.invoke(AsyncJDKInvocationHandler.java:160)
               at $Proxy50.interpret(Unknown Source)
               at
org.acme.logix.LogisticCenterImpl.processMessage(LogisticCenterImpl.java:27)
               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:597)
               at
org.apache.tuscany.sca.implementation.java.invocation.JavaImplementationInvoker.invoke(JavaImplementationInvoker.java:158)
               at
org.apache.tuscany.sca.core.databinding.wire.DataTransformationInterceptor.invoke(DataTransformationInterceptor.java:86)
               at
org.apache.tuscany.sca.core.invocation.RuntimeInvoker.invoke(RuntimeInvoker.java:91)
               at
org.apache.tuscany.sca.core.invocation.RuntimeInvoker.invoke(RuntimeInvoker.java:74)
               at
org.apache.tuscany.sca.core.assembly.impl.RuntimeEndpointImpl.invoke(RuntimeEndpointImpl.java:286)
               at
org.apache.tuscany.sca.binding.ws.jaxws.JAXWSBindingProvider.invoke(JAXWSBindingProvider.java:207)
               at
org.apache.tuscany.sca.binding.ws.jaxws.JAXWSBindingProvider.invoke(JAXWSBindingProvider.java:61)
               at
com.sun.xml.internal.ws.api.server.InstanceResolver$1.invokeProvider(InstanceResolver.java:245)
               at
com.sun.xml.internal.ws.server.InvokerTube$2.invokeProvider(InvokerTube.java:145)
               at
com.sun.xml.internal.ws.server.provider.SyncProviderInvokerTube.processRequest(SyncProviderInvokerTube.java:67)
               at
        com.sun.xml.internal.ws.api.pipe.Fiber.__doRun(Fiber.java:587)
               at
        com.sun.xml.internal.ws.api.pipe.Fiber._doRun(Fiber.java:546)
               at
        com.sun.xml.internal.ws.api.pipe.Fiber.doRun(Fiber.java:531)
               at
        com.sun.xml.internal.ws.api.pipe.Fiber.runSync(Fiber.java:428)
               at
com.sun.xml.internal.ws.server.WSEndpointImpl$2.process(WSEndpointImpl.java:232)
               at
com.sun.xml.internal.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:460)
               at
com.sun.xml.internal.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:233)
               at
com.sun.xml.internal.ws.transport.http.server.WSHttpHandler.handleExchange(WSHttpHandler.java:95)
               at
com.sun.xml.internal.ws.transport.http.server.WSHttpHandler.handle(WSHttpHandler.java:80)
               at
        com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:65)
               at sun.net.httpserver.AuthFilter.doFilter(AuthFilter.java:65)
               at
        com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:68)
               at
sun.net.httpserver.ServerImpl$Exchange$LinkHandler.handle(ServerImpl.java:555)
               at
        com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:65)
               at
        sun.net.httpserver.ServerImpl$Exchange.run(ServerImpl.java:527)
               at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
               at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
               at java.lang.Thread.run(Thread.java:662)
               -----------------------------------------
                Hope you can help me. (?)

               Kind Regards
               Urso

               2011/1/9 Simon Nash <[email protected]
        <mailto:[email protected]> <mailto:[email protected]
        <mailto:[email protected]>>
               <mailto:[email protected] <mailto:[email protected]>
        <mailto:[email protected] <mailto:[email protected]>>>>



                  Urso Wieske wrote:

                      Hi
                      I am evaluating Tuscany 2.0 Beta1 and am trying to
        learn more
                      about Callbacks (Bi-Directional interface) of SCA
        1.1. I
                      downloaded the Tuscany Sample files and started to
               explore the
                      callback implementations with webservice binding,
        i.e. the
                      Search and SearchCallback interfaces.
                      It took me a while before I realized that the
        Tuscany SCA
                      Samples were based on SCA v1.0.   Tuscany 2.0 Beta1 is
               based on
                      the SCA v1.1 specs.
                      After studying the sample sources, I have written
        my own
               callback.

                      Unfortunately, I kept on getting a runtime
        exception after I
                      installed and deployed my contribution. By the
        way, I am
               using
                      Eclipse and the maven tuscany plugin.

                      I can't find the problem and hope if someone can
        point me
               in the
                      right direction.

                      This is the error (printed on my console) I am
        getting when I
                      try to run my program:
                      [ERROR] Failed to execute goal
org.apache.tuscany.maven.plugins:maven-tuscany-plugin:2.0-Beta1:run
                      (default-cli) on project handler-agent: Execution
               default-cli of
                      goal
org.apache.tuscany.maven.plugins:maven-tuscany-plugin:2.0-Beta1:run
                      failed: org.oasisopen.sca.ServiceRuntimeException:
               [Composite:
                      {http://docs.oasis-open.org/ns/opencsa/sca/200912},
               Component:
                      MessageInterpreterComponent] - [ASM60033] No
        targets for
                      reference: Composite =
                      {http://docs.oasis-open.org/ns/opencsa/sca/200912}
               Reference =
                      messageInterpreterCallback -> [Help 1]

                      I suspect that I am doing something wrong in the
               composite file.
                      I can't imagine I did something wrong in the java
               sources. (See
                      below for the sources.)

                  Because the MessageInterpreterImpl class doesn't
        contain any
                  @Reference or
                  @Property annotations, SCA creates implicit references for
               all public
                  setter methods in this class whose type is a remotable SCA
                  interface, and
                  also for all public or protected fields in this class
        whose
               type is a
                  remotable SCA interface.

                  There is a public setter method
               setMessageInterpreterCallback() and a
                  protected field messageInterpreterCallback, so SCA
        defines a
               reference
                  named messageInterpreterCallback.  This reference doesn't
               have a target
                  configured in the composite, hence the error message.

                  To fix the problem, you need to remove the setter
        method (or
               make it
                  protected) and change the field from protected to private.

                   Simon


                      Kind Regards,

                      Urso


                      -------------------- THE SERVICE Interface With
        Callback
                      Interface association ----------
                      /**
                       *  */
                      package org.acme.logix;

                      import org.acme.logix.message.Message;
                      import org.oasisopen.sca.annotation.Callback;
                      import org.oasisopen.sca.annotation.OneWay;
                      import org.oasisopen.sca.annotation.Remotable;

                      /**
                       *  *
                       */
                      @Remotable
                      @Callback(MessageInterpreterCallback.class)
                      public interface MessageInterpreter {

                      @OneWay
                      void interpret(Message msg);
                      }


                      /**
                       *  */
                      package org.acme.logix;

                      import org.oasisopen.sca.annotation.OneWay;
                      import org.oasisopen.sca.annotation.Remotable;

                      /**
                       *  *
                       */
                      @Remotable
                      public interface MessageInterpreterCallback {
                      void onInterpret(Interpretation ipr);
                      }


                      ---------- THE CLIENT implementing the callback
        interface
                      ------------

                      /**
                       *  */
                      package org.acme.logix;

                      import org.acme.logix.message.Message;
                      import org.oasisopen.sca.annotation.Reference;

                      /**
                       *  */
                      public class LogisticCenterImpl implements
        LogisticCenter,
                      MessageInterpreterCallback {
                      private AuditService auditService;
                      @Reference
                      protected MessageInterpreter messageInterpreter;

                      /* (non-Javadoc)
                      * @see
org.acme.logix.LogisticCenter#processMessage(org.acme.logix.message.Message)
                      */
                      public void processMessage(Message message) {
                      System.out.println("Processing message with
        payload " +
                      message.getPayload() );
                      auditService.logSentMessage(message);
                      messageInterpreter.interpret(message);
                      }

                      /**
                      * @return the auditService
                      */
                      public AuditService getAuditService() {
                      return auditService;
                      }

                      /**
                      * @param auditService the auditService to set
                      */
                      @Reference
                      public void setAuditService(AuditService
        auditService) {
                      this.auditService = auditService;
                      }

                      /**
                      * @param messageInterpreter the messageInterpreter
        to set
                      */
                      public void setMessageInterpreter(MessageInterpreter
                      messageInterpreter) {
                      this.messageInterpreter = messageInterpreter;
                      }

                      /**
                      * @return the messageInterpreter
                      */
                      public MessageInterpreter getMessageInterpreter() {
                      return messageInterpreter;
                      }


                             /**
                             *  THE CALLBACK method of
        MessageInterpreterCallback
                      interface
                             */
                      public void onInterpret(Interpretation ipr) {
                      System.out.println("Message has been interpreted.");
                      }

                      }


                      ---------THE SERVICE WHICH IS CALLED BY THE CLIENT
        THROUGH
                      WEBSERVICE BINDING ---------

                      /**
                       *  */
                      package org.acme.logix;

                      import org.acme.logix.message.Message;
                      import org.oasisopen.sca.RequestContext;
                      import org.oasisopen.sca.ServiceReference;
                      import org.oasisopen.sca.annotation.Callback;
                      import org.oasisopen.sca.annotation.Context;
                      import org.oasisopen.sca.annotation.Reference;
                      import org.oasisopen.sca.annotation.Service;

                      /**
                       *  *
                       */
                      public class MessageInterpreterImpl implements
               MessageInterpreter{

                      @Callback
                      protected MessageInterpreterCallback
               messageInterpreterCallback;
                      /* (non-Javadoc)
                      * @see
org.acme.logix.MessageInterpreter#interpret(org.acme.logix.message.Message)
                      */
                      public void interpret(Message msg) {
                      System.out.println("The message is being
        interpreted..");
                      Interpretation ipr = new Interpretation();
                      messageInterpreterCallback.onInterpret(ipr);
                      }



                      /**
                      * @return the messageInterpreterCallback
                      */
                      public MessageInterpreterCallback
               getMessageInterpreterCallback() {
                      return messageInterpreterCallback;
                      }



                      /**
                      * @param messageInterpreterCallback the
                      messageInterpreterCallback to set
                      */
                      public void setMessageInterpreterCallback(
                      MessageInterpreterCallback
        messageInterpreterCallback) {
                      this.messageInterpreterCallback =
        messageInterpreterCallback;
                      }
                      }





                      ---- THE COMPOSITE -----------



                      <composite
               xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912";
                                targetNamespace="http://logistix";
                                xmlns:logistix="http://logistix";
                                name="AfnemerLogisticCenter">

                         <component name="AfnemerHandlingAgentComponent">
                      <implementation.java
               class="org.acme.logix.HandlingAgentImpl"/>
                               <reference name="logisticCenter" >
                              <binding.ws <http://binding.ws>
        <http://binding.ws>
               <http://binding.ws> <http://binding.ws>

uri="http://127.0.0.1:8087/AfnemerHandlingAgentComponent"/> </reference> <reference
        name="auditService"
target="AuditServiceComponent"/> </component>



                         <component name="AfnemerLogisticCenterComponent">
                             <implementation.java
                      class="org.acme.logix.LogisticCenterImpl"/>
                             <reference name="messageInterpreter">
                      <interface.java
interface="org.acme.logix.MessageInterpreter" callbackInterface="org.acme.logix.MessageInterpreterCallback"/>

                      <binding.ws <http://binding.ws>
        <http://binding.ws> <http://binding.ws>
               <http://binding.ws>

uri="http://localhost:8081/MessageInterpreterComponent/MessageInterpreter"/>
                      <callback >
                      <binding.ws <http://binding.ws>
        <http://binding.ws> <http://binding.ws>
               <http://binding.ws>

uri="http://localhost:8084/Client/MessageInterpreterCallback <http://localhost:8081/Client/MessageInterpreterCallback>" />

                      </callback>
                      </reference>
<reference name="auditService"> <binding.jms initialContextFactory="org.apache.activemq.jndi.ActiveMQInitialContextFactory"
                      jndiURL="tcp://localhost:61616">
                        <destination jndiName="AuditServiceQueue" />
                        </binding.jms>         </reference>
                              </component>
                             <component name="MessageInterpreterComponent">
                          <implementation.java
                      class="org.acme.logix.MessageInterpreterImpl"/>
                              <service name="MessageInterpreter">
                      <interface.java
        interface="org.acme.logix.MessageInterpreter"
callbackInterface="org.acme.logix.MessageInterpreterCallback"/>
                      <binding.ws <http://binding.ws>
        <http://binding.ws> <http://binding.ws>
               <http://binding.ws>

uri="http://localhost:8081/MessageInterpreterComponent/MessageInterpreter"/>
                      <callback>
                      <binding.ws <http://binding.ws>
        <http://binding.ws> <http://binding.ws>
               <http://binding.ws>

uri="http://localhost:8084/Client/MessageInterpreterCallback <http://localhost:8081/Client/MessageInterpreterCallback>"/>

                      </callback>
                      </service>
                         </component>


                         <component name="AuditServiceComponent">
                             <implementation.java
                      class="org.acme.logix.AuditServiceImpl"/>
                                     <service name="AuditService">
                                 <binding.jms
initialContextFactory="org.apache.activemq.jndi.ActiveMQInitialContextFactory"
                      jndiURL="tcp://localhost:61616">
                        <destination jndiName="AuditServiceQueue" />
                      </binding.jms>         </service>
                         </component>
                         </composite>








Reply via email to