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