Can someone point to me what I am doing wrong or if it is a problem in Tuscany? Details follow...
I have the following service interface: @Remotable public interface HelloService<E> { public E getGreetings(E name); } -------- The following is the service implementation: @Service(HelloService.class) public class HelloServiceImpl implements HelloService<String> { public String getGreetings(String name) { return "Hello "+name; } } -------- The following is the client interface that invokes the service: public interface HelloServiceClient<E> { E getGreetingsForward(E name); } -------- The following is the client implementation: @Service(HelloServiceClient.class) public class HelloServiceClientImpl implements HelloServiceClient<String> { private HelloService<String> service; @Reference public void setHelloService(HelloService<String> service) { this.service = service; } public String getGreetingsForward(String name) { return service.getGreetings(name); } } -------- I have a HelloService component and two HelloServiceClient components in my composite (given below): <composite xmlns="http://www.osoa.org/xmlns/sca/1.0" xmlns:wsdli="http://www.w3.org/2006/01/wsdl-instance" name="HelloService"> <!-- Clients to test the service --> <component name="HelloServiceClientWSComponent"> <implementation.java class="org.apache.tuscany.sca.itest.impl.HelloServiceClientImpl" /> <reference name="helloService"> <interface.java interface="org.apache.tuscany.sca.itest.HelloService"/> <binding.ws uri="http://localhost:8080/hs-ep1"/> </reference> </component> <component name="HelloServiceClientSCAComponent"> <implementation.java class="org.apache.tuscany.sca.itest.impl.HelloServiceClientImpl" /> <reference name="helloService" target="HelloServiceComponent"> <binding.sca/> </reference> </component> <!-- Components used to implement the services --> <component name="HelloServiceComponent"> <implementation.java class="org.apache.tuscany.sca.itest.impl.HelloServiceImpl"/> <service name="HelloService"> <interface.java interface="org.apache.tuscany.sca.itest.HelloService"/> <binding.ws uri="http://localhost:8080/hs-ep1"/> <binding.sca/> </service> </component> </composite> -------- The following is the code I am using to invoke the service via client components: domain = SCADomain.newInstance("hello.composite"); String name = "Me <String> SCA"; HelloServiceClient<String> helloServiceClient = domain.getService(HelloServiceClient.class, "HelloServiceClientSCAComponent"); String resp = helloServiceClient.getGreetingsForward(name); System.out.println(resp); name = "Me <String> WS"; helloServiceClient = domain.getService(HelloServiceClient.class, "HelloServiceClientWSComponent"); resp = helloServiceClient.getGreetingsForward(name); System.out.println(resp); -------- It works fine when I invoke the service using the client component that uses SCA binding to connect to the service. I get the following exception when I use the client component that uses WS binding. May 23, 2008 11:04:50 PM org.apache.tuscany.sca.binding.ws.axis2.Axis2ServiceInOutSyncMessageReceiver invokeBusinessLogic SEVERE: org.apache.tuscany.sca.databinding.TransformationException: No path found for the transformation: org.apache.axiom.om.OMElement->null org.osoa.sca.ServiceRuntimeException: org.apache.tuscany.sca.databinding.TransformationException: No path found for the transformation: org.apache.axiom.om.OMElement->null at org.apache.tuscany.sca.core.invocation.RuntimeWireInvoker.invoke(RuntimeWireInvoker.java:119) at org.apache.tuscany.sca.core.invocation.RuntimeWireInvoker.invoke(RuntimeWireInvoker.java:85) at org.apache.tuscany.sca.core.invocation.RuntimeWireInvoker.invoke(RuntimeWireInvoker.java:79) at org.apache.tuscany.sca.core.assembly.RuntimeWireImpl.invoke(RuntimeWireImpl.java:138) at org.apache.tuscany.sca.binding.ws.axis2.Axis2ServiceProvider.invokeTarget(Axis2ServiceProvider.java:669) at org.apache.tuscany.sca.binding.ws.axis2.Axis2ServiceInOutSyncMessageReceiver.invokeBusinessLogic(Axis2ServiceInOutSyncMessageReceiver.java:68) at org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver.invokeBusinessLogic(AbstractInOutSyncMessageReceiver.java:42) at org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:96) at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:145) at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:275) at org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:120) at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:726) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139) at org.mortbay.jetty.Server.handle(Server.java:324) at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505) at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:842) at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:648) at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211) at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380) at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395) at org.apache.tuscany.sca.core.work.Jsr237Work.run(Jsr237Work.java:63) at org.apache.tuscany.sca.core.work.ThreadPoolWorkManager$DecoratingWork.run(ThreadPoolWorkManager.java:221) 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) Caused by: org.apache.tuscany.sca.databinding.TransformationException: No path found for the transformation: org.apache.axiom.om.OMElement->null at org.apache.tuscany.sca.databinding.impl.MediatorImpl.getTransformerChain(MediatorImpl.java:162) at org.apache.tuscany.sca.databinding.impl.MediatorImpl.mediate(MediatorImpl.java:67) at org.apache.tuscany.sca.core.databinding.transformers.Input2InputTransformer.transform(Input2InputTransformer.java:181) at org.apache.tuscany.sca.core.databinding.transformers.Input2InputTransformer.transform(Input2InputTransformer.java:45) at org.apache.tuscany.sca.databinding.impl.MediatorImpl.mediate(MediatorImpl.java:79) at org.apache.tuscany.sca.core.databinding.wire.DataTransformationInterceptor.transform(DataTransformationInterceptor.java:186) at org.apache.tuscany.sca.core.databinding.wire.DataTransformationInterceptor.invoke(DataTransformationInterceptor.java:76) at org.apache.tuscany.sca.core.invocation.RuntimeWireInvoker.invoke(RuntimeWireInvoker.java:110) ... 29 more