I'm not confident that this is the correct approach, not being familiar with
the databinding transformation, but have you tried leaving your service
with the DataObject argument signature and casting your NameType instance to
a DataObject? This should work although there may be better approaches. By
default Tuscany generated interfaces don't extend DataObject, (and the SDO
spec doesn't require them to), but generated classes do (and must) extend
the DataObject implementation.
Regards, Kelvin.
On 31/01/07, Hu hao <[EMAIL PROTECTED]> wrote:
Hi ,
I am new to SDO. When I try to use SDO on webservice ,i got the
Exception :
-------------------------------------------------
org.apache.tuscany.spi.databinding.TransformationException: No path found
for the transformation
Context stack trace: [Target: org.apache.axiom.om.OMElement][Source: null]
at
org.apache.tuscany.core.databinding.impl.MediatorImpl.getTransformerChain(
MediatorImpl.java:168)
at org.apache.tuscany.core.databinding.impl.MediatorImpl.mediate(
MediatorImpl.java:83)
at
org.apache.tuscany.core.databinding.impl.Input2InputTransformer.transform(
Input2InputTransformer.java:151)
at
org.apache.tuscany.core.databinding.impl.Input2InputTransformer.transform(
Input2InputTransformer.java:47)
at org.apache.tuscany.core.databinding.impl.MediatorImpl.mediate(
MediatorImpl.java:95)
at
org.apache.tuscany.core.databinding.impl.DataBindingInteceptor.transform
(DataBindingInteceptor.java:105)
at org.apache.tuscany.core.databinding.impl.DataBindingInteceptor.invoke(
DataBindingInteceptor.java:69)
at org.apache.tuscany.spi.wire.AbstractOutboundInvocationHandler.invoke(
AbstractOutboundInvocationHandler.java:60)
at org.apache.tuscany.core.wire.jdk.JDKOutboundInvocationHandler.invoke(
JDKOutboundInvocationHandler.java:121)
at $Proxy31.getGreetings1(Unknown Source)
at helloworld.ClientImpl.getGreetings1(ClientImpl.java:34)
at org.apache.jsp.index_jsp._jspService(index_jsp.java:115)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.jasper.servlet.JspServletWrapper.service(
JspServletWrapper.java:332)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java
:314)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(
ApplicationFilterChain.java:173)
at org.apache.tuscany.runtime.webapp.TuscanyFilter.doFilter(
TuscanyFilter.java:58)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(
ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(
StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(
StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(
StandardHostValve.java
:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(
ErrorReportValve.java
:105)
at org.apache.catalina.core.StandardEngineValve.invoke(
StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java
:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java
:869)
at
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection
(Http11BaseProtocol.java:664)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(
PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(
LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(
ThreadPool.java:684)
at java.lang.Thread.run(Unknown Source)
----------------------------------------------------
My code is
service:
public interface HelloWorldService {
public String getGreetings(String name);
public String getGreetings1(NameType name);
}
public class HelloWorldImpl implements HelloWorldService {
public String getGreetings1(NameType name) {
String firstName = name.getFirstName();
String lastName = name.getLastName();
return "Hello " + firstName + " " + lastName;
}
client:
public class ClientImpl implements Client {
private HelloWorldService helloWorldService;;
@Reference(name="helloWorldService",required=false)
public void setHelloWorldService(HelloWorldService helloWorldService) {
this.helloWorldService = helloWorldService;
}
public String getGreetings1(String firstName, String lastName) {
HelloworldFactory hwf = HelloworldFactoryImpl.INSTANCE;
NameType name = hwf.createNameType();
name.setFirstName("fddfdffd");
name.setLastName("erwe");
return helloWorldService.getGreetings1(name);
}
}
I have generated some *.class files using the XSD2Java tool and used
SDOUtil.registerStaticTypes(HelloworldFactory.class) in a servlet. When
the
argument is DataObject, it will be ok.