Dear Raymond,

Do you want to say that I am using the @Reference annotation in wrong way? 
How must I use it? It is obvious that I have a problem with the references. 
Could you please help me?

Thanks,

Ana Belen


-----Original Message-----

From: "Raymond Feng" <[EMAIL PROTECTED]>

To: <[email protected]>

Date: Thu, 11 Oct 2007 09:22:20 -0700

Subject: Re: New using Tuscany




Another issue is that you should use @Reference against public/protected 

fields or setter methods to receive the proxy by injection. In your case, 

the following is invalid:



@Reference

public List<InformationObject> 

getAllInformationObject(List<InformationObjectConstraint> constraintsList) 

throws ISNotFoundException {

...

}



I'll add some check in our code to report these kind of illegal usages.



Thanks,

Raymond



----- Original Message ----- 

From: "Simon Laws" <[EMAIL PROTECTED]>

To: <[email protected]>

Sent: Thursday, October 11, 2007 9:17 AM

Subject: Re: New using Tuscany





On 10/11/07, Ana Belén Antón Gironés <[EMAIL PROTECTED]> 
wrote:

>

> Hi Simon!

>

> First of all, thank you very much for your help.

>

> I have some problems running my application. When I run my isClient.java I

> get this exception:

>

> Starting ...

> 11-oct-2007 16:45:23

> org.apache.tuscany.sca.assembly.builder.impl.CompositeBuilderImpl$1problem

> ADVERTENCIA: [WARNING] No targets for reference: getInformationObject null

> 11-oct-2007 16:45:23

> org.apache.tuscany.sca.assembly.builder.impl.CompositeBuilderImpl$1problem

> ADVERTENCIA: [WARNING] No targets for reference: getAllInformationObject

> null

> Information.composite ready

> Exception in thread "main" org.osoa.sca.ServiceUnavailableException: No

> service invoker is available for reference default

> (bindingURI=InformationGroundingServiceComponent

> operation=getGroundingService).

> at

>

> 
org.apache.tuscany.sca.binding.sca.impl.RuntimeSCAReferenceBindingProvider.c

> reateInvoker(RuntimeSCAReferenceBindingProvider.java:192)

> at

> org.apache.tuscany.sca.core.assembly.RuntimeWireImpl.addBindingInterceptor

> (R

> untimeWireImpl.java:214)

> at

> org.apache.tuscany.sca.core.assembly.RuntimeWireImpl.initInvocationChains

> (Ru

> ntimeWireImpl.java:156)

> at

> org.apache.tuscany.sca.core.assembly.RuntimeWireImpl.getInvocationChains

> (Run

> timeWireImpl.java:97)

> at

>

> 
org.apache.tuscany.sca.core.invocation.JDKInvocationHandler.getInvocationCha

> in(JDKInvocationHandler.java:190)

> at

> org.apache.tuscany.sca.core.invocation.JDKInvocationHandler.invoke

> (JDKInvoca

> tionHandler.java:124)

> at $Proxy7.getInformationObject(Unknown Source)

> at Client.isClient.main(isClient.java:34)

>

>

> I know that I am missing some refence to getInformationObject and

> getAllInformationObject and something is missing in the composite,  but I

> don't know what it is. My application has a complex estructure but I am

> going to try to explain it.

>

>

> isClient.java is:

>

>

> 
****************************************************************************

> *****************************

> package Client;

>

> import org.apache.tuscany.sca.host.embedded.SCADomain;

> import eu.services.information.exceptions.ISNotFoundException;

> import eu.services.information.io.InformationObject;

> import eu.services.information.is.InformationService;

>

> public class isClient {

>

> public static void main(String[] args) throws Exception {

>

>   System.out.println("Starting ...");

>   SCADomain scaDomain = SCADomain.newInstance("Information.composite");

>   System.out.println("Information.composite ready");

>

>   InformationService is = scaDomain.getService(InformationService.class,

>     "InformationServiceComponent");

>

>   InformationObject iobj;

>   try {

>    iobj = is.getInformation("c1dee5cd");

>

>    System.out.println("Description: " + iobj.getDescription());

>    System.out.println("Lang: " + iobj.getLang());

>    System.out.println("Name: " + iobj.getName());;

>    System.out.println("Protocol: " + iobj.getProtocol());

>    System.out.println("URL: " + iobj.getURL());

>    System.out.println("ID: " + iobj.getID());

>   } catch (ISNotFoundException e1) {

>    e1.printStackTrace();

>   }

>   scaDomain.close();

> }

> }

>

> 
****************************************************************************

> *********************************

>

>

> the composite:

>

>

> 
****************************************************************************

> *********************************

> <?xml version="1.0" encoding="UTF-8"?>

>

> <composite    xmlns="http://www.osoa.org/xmlns/sca/1.0 
[http://www.osoa.org/xmlns/sca/1.0]";

>     name="InformationComposite">

>

> <component name="InformationServiceComponent">

>   <implementation.java class=

> "eu.services.information.rh.InformationServiceImpl"/>

> </component>

>

> </composite>

>

> 
****************************************************************************

> *********************************

>

>

> my src structure is:

>

>

> 
****************************************************************************

> *********************************

>

> -Client

>      -isClient.java

> -eu.services.information.exceptions

>      -GCException.java

>      -InconsistentIOConstraintException.java

>      -InconsistentIOException.java

>      -ISNotFoundException.java

> -eu.services.information.ior

>      -InformationObjectRepository.java

> -eu.services.information.io

>      -InformationObject.java

> -eu.services.information.isr

>      -ISRequest.java

>      -mainISRequest.java

> -eu.services.information.is

>      -InformationService.java

>      -InformationObjectConstraint.java

> -eu.services.information.rh

>      -InformationServiceImpl.java

>      -InformationObjectImpl.java

> -InformationService.composite

>

>

> 
****************************************************************************

> *********************************

>

>

> the InformationService.java is

>

>

> 
****************************************************************************

> ********************************

> package eu.services.information.is;

>

> import java.util.List;

>

> import org.osoa.sca.annotations.Remotable;

>

> import eu.services.information.exceptions.*;

> import -eu.services.information.io.InformationObject;

>

>

> @Remotable

> public interface InformationService {

>

>

> public InformationObject getInformationObject (String id)

> throws ISNotFoundException;

>

>

> public List<InformationObject>

> getAllInformationObject(List<InformationObjectConstraint> constraintsList)

> throws ISNotFoundException;

> }

>

> 
****************************************************************************

> *********************************

>

>

> and the InformationServiceImpl.java:

>

> 
****************************************************************************

> *********************************

> package eu.esdihumboldt.informationgrounding.requesthandler;

>

> import java.io.IOException;

> import java.util.ArrayList;

> import java.util.List;

>

> import org.dom4j.Document;

> import org.dom4j.DocumentException;

> import org.dom4j.DocumentHelper;

> import org.dom4j.Node;

> import org.osoa.sca.annotations.Reference;

> import org.osoa.sca.annotations.Service;

>

> import eu.services.information.exceptions.*;

> import eu.services.information.ior.InformationObjectRepository;

> import eu.services.information.io.InformationObject;

> import eu.services.information.is.*;

>

>

> @Service(InformationGroundingService.class)

> public class InformationServiceImpl implements InformationService{

>

> //

>

> 
----------------------------------------------------------------------------

> ------------------------------

>

> @Reference

> public List<InformationObject>

> getAllInformationObject(List<InformationObjectConstraint> constraintsList)

> throws ISNotFoundException {

>   List<InformationObject> ioList = new ArrayList<GroundingService>();

>   //code

>          return ioList;

> }

>

>

> // ----------------------------------------------------------------------

>

> @Reference

> public InformationObject getInformationObject(String id) throws

> ISNotFoundException{

>

>   InformationObject io = null;

>   //code

>   return io;

> }

>

> // ----------------------------------------------------------------------

>

> private boolean checkConstaintList(List<GroundingServiceConstraint>

> constraints){

>   boolean isRight = true;

>   //code

>   return isRight;

> }

>

> // ----------------------------------------------------------------------

> private String buildXPath (List<GroundingServiceConstraint> constraints){

>   //code

>   String path = "";

>   return path;

> }

>

> // ----------------------------------------------------------------------

>

> private String getPath (Integer id ){

>   //code

>   String path = "";

>   return path;

> }

>

> }

>

>

> 
****************************************************************************

> *********************************

>

> I hope you can follow and understand my explanation.

>

> Thank you very much for your help! Regards,

>

> Ana Belen

>

>

> Hi



Disregarding that warnings you are getting about missing references (as you

say you are expecting that) the error you are getting:



Exception in thread "main" org.osoa.sca.ServiceUnavailableException: No

service invoker is available for reference default

(bindingURI=InformationGroundingServiceComponent

operation=getGroundingService).



Means that when you make the call in the client to get a proxy to a service:



  InformationService is = scaDomain.getService(InformationService.class

,"InformationServiceComponent");



The runtime is not able to find the service you are asking for. Now the

interesting thing to note here is that the bindingURI =

InformationGroundingServiceComponent. This is clearly not the name of the

component in the .composite file or the name of the component you asked for.

There is a similar name in the @Service annotation you have on you service

implementation:



@Service(InformationGroundingService.class)

public class InformationServiceImpl implements InformationService{



Not sure how Component is getting added to the end though. Anyhow you should

make the @Service annotation match the interface that the service

implementation implementats. @Service is used to tell the Tuscany runtime

which interfaces provide SCA services.  So try.



@Service(InformationService.class)



In this case you can get away without the @Service annotation altogether as

the runtime will assume that you want to expose the single interface that

you implement as a service.



If this doesn't have any +ve effect let me know and I'll look a little

closer, i.e. run up the sample, and see what's going on



Regards



Simon





---------------------------------------------------------------------

To unsubscribe, e-mail: [EMAIL PROTECTED]

For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to