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

Reply via email to