On Tue, May 18, 2010 at 1:04 PM, Gregor Kiddie <[email protected]> wrote: > > > -----Original Message----- > From: Simon Laws [mailto:[email protected]] > Sent: 18 May 2010 12:56 > To: [email protected] > Subject: Re: Problem calling to an external web service. > > On Tue, May 18, 2010 at 12:25 PM, Gregor Kiddie > <[email protected]> wrote: >> I'm trying to make a call from Tuscany to an external webservice. I think I >> have it set up correctly, but it gives the same error each time. It's >> running in a Tomcat Container. >> >> >> >> The error I'm getting is >> >> >> >> Caused by: org.osoa.sca.ServiceRuntimeException: No runtime wire is >> available >> >> at >> org.apache.tuscany.sca.core.invocation.JDKInvocationHandler.invoke(JDKInvocationHandler.java:186) >> >> and my composite looks like this >> >> >> >> <?xml version="1.0" encoding="UTF-8"?> >> >> <composite xmlns="http://www.osoa.org/xmlns/sca/1.0" >> >> targetNamespace="com.mycompany.myproduct.mymodule" >> >> name="mymodule"> >> >> >> >> <component name="MyModule"> >> >> <implementation.spring >> location="WEB-INF/classes/applicationContext.xml" /> >> >> <service name="MyService"> >> >> <binding.ws /> >> >> </service> >> >> </component> >> >> >> >> <reference name="myServiceProvider"> >> >> <interface.java >> interface="com.mycompany.soa.webservices.SuperServiceSkeletonInterface" /> >> >> <binding.ws >> uri="http://soa.0002.dev.mycompany.com/SuperFacility/SuperService.asmx" /> >> >> </reference> >> >> </composite> >> >> >> >> Any suggestions? > > Hi > > Try putting the reference inside the component, for example, > > <component name="MyModule"> > <implementation.spring > location="WEB-INF/classes/applicationContext.xml" /> > <service name="MyService"> > <binding.ws /> > </service> > <reference name="myServiceProvider"> > <interface.java > interface="com.mycompany.soa.webservices.SuperServiceSkeletonInterface" > /> > <binding.ws > uri="http://soa.0002.dev.mycompany.com/SuperFacility/SuperService.asmx" > /> > </reference> > </component> > > I'm assuming that you're Spring context defines a reference property > called "myServiceProvider". You can of course put references at the > composite level but they should refer to a component reference that > they promote using the the "promote" attribute. > > Regards > > Simon > > Yeah, the applicationContext looks like this > > <?xml version="1.0" encoding="UTF-8"?> > <beans xmlns="http://www.springframework.org/schema/beans" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xmlns:sca="http://www.springframework.org/schema/sca" > xsi:schemaLocation=" > http://www.springframework.org/schema/beans > http://www.springframework.org/schema/beans/spring-beans-2.5.xsd > http://www.springframework.org/schema/sca > http://www.osoa.org/xmlns/sca/1.0/spring-sca.xsd"> > > <bean id="MyModuleBean" > class="com.mycompany.myproduct.mymodule.impl.DefaultImplementation"> > <property name="myServiceProvider" ref="myServiceProvider" /> > </bean> > </beans> > > Putting the reference in the component and removing the property set in the > applicationContext throws an error on start up > > Caused by: org.apache.tuscany.sca.monitor.MonitorRuntimeException: Reference > not found for component reference: Component = MyModule Reference = > myServiceProvider > > > -- > Apache Tuscany committer: tuscany.apache.org > Co-author of a book about Tuscany and SCA: tuscanyinaction.com >
It's because SCA it looking for a property that it can map to the SCA reference. In doing this it looks for Spring properties that themselves don't have references. Can you try taking the ref="myServiceProvider" annotation off the Spring property and see what happens. Regards Simon -- Apache Tuscany committer: tuscany.apache.org Co-author of a book about Tuscany and SCA: tuscanyinaction.com
