felix-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Christian Schneider <ch...@die-schneider.net>
Subject Re: Question about accessing component dosgi
Date Thu, 28 Feb 2013 08:13:40 GMT
Am 27.02.2013 23:25, schrieb Dhiego Abrantes de Oliveira Martins:
> Christian,
>
> I follow these steps:
>
> 1- Implements AdderService (using @WebService) (interface)
> 2- Implements AdderServiceImpl (using @WebService)  (Provider)
> 3- deploy item 1 and 2 in a container OSGi 1.
>
> 4- Create a *importer bundle* that contains a configuration file to show to
> CXF-DOSGi where locale the AdderService using an endpoint.
> 5- Deploy item 4 to use the WEBSERVICE exported by item3 as a "local"
> bundle.
>
> So, when I try to deploy, I get this warning:
>
> Fev 27, 2013 1:09:58 AM
> org.apache.cxf.dosgi.dsw.hooks.AbstractClientHook$DiscoveryCallback
> serviceChanged
> INFO: Notified - AVAILABLE:
> [org.apache.felix.ipojo.remote.adder.AdderService] endpoint id:
> 5e8f5f57-03d6-44bd-bcaf-f0eeadb5c433
> Fev 27, 2013 1:09:58 AM org.apache.cxf.dosgi.dsw.hooks.AbstractClientHook
> proxifyMatchingInterface
> WARNING: No class can be found for
> org.apache.felix.ipojo.remote.adder.AdderService
Did you deploy the AdderService interface on the container where you 
want to import the service?
Can you put your project on github or similar. Then I can take a look.

Honestly I personally have not yet used importer bundles. Instead I use 
the zookeeper based discovery which is easier to use.
There basically you only need to reference the service in blueprint on 
the client side and need no other config per service.
>
> The question is: Its possible use DOSGi with WebServices (REST/SOAP)?
> I mean: We can implement a bundle as a webservice and export it by dosgi ?
This is absolutely possible. I have an integration test in place that 
works this way.

Christian

>
> Abs,
> __
> *Dhiego** **Abrantes** de Oliveira Martins*
> *Computer Science, M.Sc. Candidate at UFPE*
> www.dhiegoabrantes.com
> +55 83 9999.1081
> ***Any fool can write code that a computer can understand. Good programmers
> write code that humans can understand*. (Martin Fowler)
>
>
> 2013/2/27 Christian Schneider <chris@die-schneider.net>
>
>> You have two options here:
>>
>> 1) Introduce the @Webservice annotation  on the interface. CXF-DOSGi will
>> then automatically use JAXWS/JAXB to export the service. Importing the
>> service using DOSGi should also work.
>> If it does not work then this is a bug. Can you give more informations
>> abbout the problem and eventually open an issue at the CXF-DOSGi jira?
>> 2) Do not change the interface. In this case DOSGi will use the Simple
>> frontend with the Aegis binding. So you have to change your CXF code to
>> access the service outside of OSGi use the same frontend and databinding.
>>
>> Christian
>>
>> Am 27.02.2013 04:55, schrieb Dhiego Abrantes de Oliveira Martins:
>>
>>> Hi,
>>>
>>> I'm exporting a dosgi component as a webservice and I like do access him.
>>> I'm using iPOJO.
>>>
>>> *Interface:*
>>>
>>> public interface AdderService{
>>>             String add();
>>> }
>>>
>>> *Provider:*
>>>
>>> public class AdderServiceImpl implements AdderService{
>>>             public String add(){
>>>                       return "dhiego";
>>>             }
>>> }
>>>
>>> *Provider metadata.xml*
>>>
>>> <ipojo xmlns:xsi="http://www.w3.org/**2001/XMLSchema-instance<http://www.w3.org/2001/XMLSchema-instance>
>>> "
>>> xsi:schemaLocation="org.**apache.felix.ipojo
>>> http://felix.apache.org/ipojo/**schemas/CURRENT/core.xsd<http://felix.apache.org/ipojo/schemas/CURRENT/core.xsd>
>>> "
>>> xmlns="org.apache.felix.ipojo"**>
>>>        <instance
>>> component="org.apache.felix.**ipojo.remote.adder.impl.**
>>> AdderServiceImpl">
>>>             <property name="service.exported.**interfaces" value="*" />
>>>             <property name="osgi.remote.**configuration.type"
>>> value="pojo"/>
>>>             <property name="service.exported.**configs" value="
>>> org.apache.cxf.ws"
>>> />
>>>             <property name="org.apache.cxf.ws.**address" value="
>>> http://localhost:9090/adder" />
>>>        </instance>
>>> </ipojo>
>>>
>>> So, I dont want to use dependence injection. Given some architectural
>>> restrictions, I have to call the services as follow:
>>>
>>>       JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
>>>       factory.getInInterceptors().**add(new LoggingInInterceptor());
>>>       factory.getOutInterceptors().**add(new LoggingOutInterceptor());
>>>       factory.setServiceClass(**AdderService.class);
>>>       factory.setAddress("http://**localhost:9090/adder<http://localhost:9090/adder>
>>> ");
>>>       AdderService client = (AdderService) factory.create();
>>>      * String a = client.add();*
>>>       System.out.println(a);
>>>
>>> When the *bold* line is executed, I get this error:
>>>
>>>
>>>    Exception in thread "main" javax.xml.ws.**WebServiceException: Could
>>> not
>>> find wsdl:binding operation info for web method add.
>>> at org.apache.cxf.jaxws.**JaxWsClientProxy.invoke(**
>>> JaxWsClientProxy.java:112)
>>> at $Proxy30.add(Unknown Source)
>>> at Main.main(Main.java:22)
>>>
>>> The cause basically is the AdderService wasn't annotated with @WebService.
>>> If we use the @WebService in interface AdderService, the problem will be
>>> solved. However, the service won't be recongnized when we try to import it
>>> in another container to use it as a distributed osgi component.
>>>
>>> Anyone can help me?
>>>
>>>
>>> Best regards!
>>> __
>>> *Dhiego** **Abrantes*
>>>
>>>
>> --
>>   Christian Schneider
>> http://www.liquid-reality.de
>>
>> Open Source Architect
>> Talend Application Integration Division http://www.talend.com
>>
>>
>> ------------------------------**------------------------------**---------
>> To unsubscribe, e-mail: users-unsubscribe@felix.**apache.org<users-unsubscribe@felix.apache.org>
>> For additional commands, e-mail: users-help@felix.apache.org
>>
>>


-- 
  
Christian Schneider
http://www.liquid-reality.de

Open Source Architect
Talend Application Integration Division http://www.talend.com


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
For additional commands, e-mail: users-help@felix.apache.org


Mime
View raw message