On Thu, Nov 6, 2008 at 1:50 PM, Ray Harrison <[EMAIL PROTECTED]> wrote:

> Hi folks,
>
> I am apparently a bear of very little brain and I am attempting to get
> working what in my mind should be a very simple case: Have a component
> reference an external web service (implemented in this case via Spring Web
> Services). I've followed an example I believe posted by ant called
> Translator but I've mostly been banging my head repeatedly for several days
> getting nowhere.
>
> I've plowed through some of the reference docs as well as the Tuscany
> documentation I can find and any examples in the download, but I'm missing
> something fundamental somewhere and I am reaching out for guidance -
> apologies in advance for the newbieness of the post. But, hey, I'm very new
> at Tuscany and SCA in general.
>
> Here's the (I believe) simple setup:
>
> 1.) I've got a WSDL and supporting schemas:
>
> src/
>        Customer.wsdl
>        {schemas - namespace imports in WSDL}
>        Customer.composite - which has been stripped bare:
>
> <?xml version="1.0" encoding="ISO-8859-15"?>
> <sca:composite xmlns:sca="http://www.osoa.org/xmlns/sca/1.0";
> name="Customer" targetNamespace="http://customer";>
>  <sca:component name="CustomerServiceComponent">
>    <sca:implementation.java class="services.CustomerServiceComponentImpl"/>
>    <sca:reference name="customerWs">
>      <sca:binding.ws wsdlElement="
> http://customer/comcast/:#wsdl.port(CustomerService/CustomerPort)<http://customer/comcast/:#wsdl.port%28CustomerService/CustomerPort%29>
> "/>
>    </sca:reference>
>  </sca:component>
> </sca:composite>
>
>
> Compare this to the translator example (which I can get to work):
>
> <?xml version="1.0" encoding="UTF-8"?>
> <composite xmlns="http://www.osoa.org/xmlns/sca/1.0"; xmlns:tuscany="
> http://tuscany.apache.org/xmlns/sca/1.0";
>    targetNamespace="http://sample"; name="Translator">
>
>    <component name="TranslationService">
>        <implementation.java class="translate.TranslationServiceImpl" />
>        <reference name="translator">
>           <binding.ws wsdlElement="
> http://tempuri.org/#wsdl.port(Translator/TranslatorSoap)<http://tempuri.org/#wsdl.port%28Translator/TranslatorSoap%29>"
> />
>        </reference>
>    </component>
>
> </composite>
>
>
> Then I've got bare-bones implementation classes and interfaces.
>
> src/services:
>
>        CustomerWS - interface which represents the reference service
>
> package services;
>
> public interface CustomerWS {
>
> }
>        CustomerServiceComponent - interface for the component
>
> package services;
>
> public interface CustomerServiceComponent {
>
> }
>        CustomerServiceComponentImpl - implementation class
>
>              package services;
>
> import org.osoa.sca.annotations.Reference;
> import org.osoa.sca.annotations.Service;
>
> @Service(CustomerServiceComponent.class)
> public class CustomerServiceComponentImpl implements
> CustomerServiceComponent {
>
>        private CustomerWS customerWs;
>
>        @Reference
>    public void setCustomerWs(CustomerWS customerWs) {
>                this.customerWs = customerWs;
>        }
>
> }
>
>        CustomerServiceClient - client class
>
> Right now, this is all very, very stripped down as you can see. However,
> even when it has similar methods from the Translator example, it still can't
> past the line:
>
>        SCADomain domain = SCADomain.newInstance("Customer.composite");
>
> in the client class.
>
> I get:
>
>
>
>
> SEVERE: Interface not remotable: services.CustomerWS
> Exception in thread "main" org.osoa.sca.ServiceRuntimeException:
> org.osoa.sca.ServiceRuntimeException: Interface not remotable:
> services.CustomerWS
>        at
> org.apache.tuscany.sca.host.embedded.SCADomain.createNewInstance(SCADomain.java:276)
>        at
> org.apache.tuscany.sca.host.embedded.SCADomain.newInstance(SCADomain.java:70)
>        at services.CustomerServiceClient.main(CustomerServiceClient.java:8)
> Caused by: org.osoa.sca.ServiceRuntimeException: Interface not remotable:
> services.CustomerWS
>        at
> org.apache.tuscany.sca.host.embedded.impl.DefaultSCADomain.analyseProblems(DefaultSCADomain.java:309)
>        at
> org.apache.tuscany.sca.host.embedded.impl.DefaultSCADomain.init(DefaultSCADomain.java:239)
>        at
> org.apache.tuscany.sca.host.embedded.impl.DefaultSCADomain.<init>(DefaultSCADomain.java:120)
>        at
> org.apache.tuscany.sca.host.embedded.SCADomain.createNewInstance(SCADomain.java:242)
>        ... 2 more
>
>
> And I thought I might need to add @Remotable to the service interface, but
> the translator example doesn't have it and that brought up all kinds  of
> other issues as well.
>
> So, sorry for the long post, but any guidance on actual steps for
> referencing an external service in a component would be most helpful - and
> if I've missed docs somewhere outlining, I'm all for going off and reading,
> I just haven't seen it.
>
> Thanks very much for your time!
>
> Ray
>
>
>
Hi Ray

Doesn't look like you are missing anything fundamental to me.

As far as I know the interface CustomerWS should be marked as @Remotable as
binding.ws is a remotable binding. I surfed up that Translator sample that
Ant made and you are right that @Remotable doesn''t appear. Very strange. I
don't know how that worked (assuming it did).

What were the issues you saw when you added @Remotable to the service
interface?

Regards

Simon

Reply via email to