Hi:
I am using the sca to build a online store project. In the project, I use das
and sdo. Now I run into some problems. There are two composite files, client
and server:
client.composite:
<sca:component name="Login">
<sca:implementation.java
class="cst.zju.purchase.user.login.impl.LoginServiceImpl"/>
<sca:service name="LoginService"/>
<sca:reference name="userDataService">
<sca:binding.ws
uri="http://china-2ab29e33a:8081/purchase/userDBOP"/>
</sca:reference>
</sca:component>
the implementation class is :
@Service(interfaces={LoginService.class})
@Scope("Composite")
public class LoginServiceImpl implements LoginService{
private UserDataService userDataService;
@Reference
public void setUserDataService(UserDataService userDataService) {
this.userDataService = userDataService;
}
public boolean login(String username, String password) {
DataObject user = userDataService.getUser(username);
System.out.println("username= " + user.getString("password"));
if(username.equals(user.getString("password"))){
return true;
}else{
return false;
}
}
}
server.composite:
<sca:component name="DataOperationComponent">
<sca:implementation.java class=""/>
<sca:service name="UserDataService">
<sca:interface.java interface="cst.zju.purchase.das.UserDataService"/>
</sca:service>
</sca:component>
<sca:service name="UserDBService"
promote="DataOperationComponent/UserDataService">
<sca:binding.ws uri="http://localhost:8081/purchase/userDBOP"/>
</sca:service>
the implementation class is :
@Service(interfaces={UserDataService .class})
@Scope("Composite")
public class DataServiceImpl implements UserDataService {
public DataObject getUser(String username) {
Command read = das.getCommand("get customer by username");
read.setParameter(1, username);
DataObject root = read.executeQuery();
List list = root.getList("customer");
return (DataObject) list.get(0);
}
}
when I invoke the method login(username,password), I get some exceptions:
Exception in thread "main"
org.apache.tuscany.sca.databinding.TransformationException:
org.apache.tuscany.sca.databinding.TransformationException:
java.lang.RuntimeException:
org.eclipse.emf.ecore.resource.Resource$IOWrappedException: Package with uri
'http:///org.apache.tuscany.das.rdb/das' not found.
at
org.apache.tuscany.sca.core.databinding.transformers.Output2OutputTransformer.transform(Output2OutputTransformer.java:253)
at
org.apache.tuscany.sca.databinding.impl.MediatorImpl.mediate(MediatorImpl.java:113)
at
org.apache.tuscany.sca.databinding.impl.MediatorImpl.mediateOutput(MediatorImpl.java:405)
at
org.apache.tuscany.sca.core.databinding.wire.DataTransformationInterceptor.invoke(DataTransformationInterceptor.java:89)
at
org.apache.tuscany.sca.core.invocation.JDKInvocationHandler.invoke(JDKInvocationHandler.java:349)
at
org.apache.tuscany.sca.core.invocation.JDKInvocationHandler.invoke(JDKInvocationHandler.java:193)
at $Proxy8.getUser(Unknown Source)
at
cst.zju.purchase.user.login.impl.LoginServiceImpl.login(LoginServiceImpl.java:24)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at
org.apache.tuscany.sca.implementation.java.invocation.JavaImplementationInvoker.invoke(JavaImplementationInvoker.java:156)
at
org.apache.tuscany.sca.core.databinding.wire.PassByValueInterceptor.invoke(PassByValueInterceptor.java:60)
at
org.apache.tuscany.sca.binding.sca.impl.SCABindingInvoker.invoke(SCABindingInvoker.java:61)
at
org.apache.tuscany.sca.core.databinding.wire.PassByValueInterceptor.invoke(PassByValueInterceptor.java:60)
at
org.apache.tuscany.sca.core.invocation.JDKInvocationHandler.invoke(JDKInvocationHandler.java:349)
at
org.apache.tuscany.sca.core.invocation.JDKInvocationHandler.invoke(JDKInvocationHandler.java:193)
at $Proxy7.login(Unknown Source)
at cst.zju.purchase.user.test.Test.main(Test.java:17)
Perhaps the client does not recognize the DataObject type. If I want to invoke
a remote method with a DataObject(SDO) return type using webservice binding,
how should I do?
chang.