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]
