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 <ch...@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-unsubscr...@felix.apache.org>
For additional commands, e-mail: users-h...@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-unsubscr...@felix.apache.org
For additional commands, e-mail: users-h...@felix.apache.org

Reply via email to