Kind Regards
Urso
2011/1/15 Simon Nash <[email protected] <mailto:[email protected]>>
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 <http://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]>
<mailto:[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> <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]>>
<mailto:[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>
<http://binding.ws>
uri="http://localhost:8081/MessageInterpreterComponent/MessageInterpreter"/>
<callback>
<binding.ws <http://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>
<http://binding.ws>
uri="http://localhost:8081/MessageInterpreterComponent/MessageInterpreter"/>
<callback>
<binding.ws/ <http://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]>>>
<mailto:[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> <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>
<http://binding.ws>
uri="http://localhost:8081/MessageInterpreterComponent/MessageInterpreter"/>
<callback >
<binding.ws <http://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>
<http://binding.ws>
uri="http://localhost:8081/MessageInterpreterComponent/MessageInterpreter"/>
<callback>
<binding.ws <http://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>