Thanks. I was really astounded to discover how hard it was to find a sort of
'hello world' sample of a Java main program that would bootstrap the OSGi
environment, load some bundles, and get started.

On Sat, Jul 5, 2008 at 7:09 AM, David Savage <[EMAIL PROTECTED]>
wrote:

> Hi Benson,
>
> We're using equinox and knopflerfish at the moment - we're currently
> resolving a couple of minor issues to get working on felix. Turns out
> there a couple of differences with the way felix handles locking in
> the base level osgi log service implementation compared to equinox and
> knopflerfish. Probably wouldn't effect most end users but we're trying
> to do some funky stuff as a platform and it's causing us some
> headaches.
>
> Anyway that's all an aside. The bundle fragment system is part of the
> OSGi specification so should be supported by all OSGi containers not
> just equinox - certainly it works in knopflerfish but I've not yet
> tried felix.
>
> A word of warning, bundle fragments can initially seem very useful but
> often get very messy in the long term. It may well be posting
> questions on this to the osgi-dev list as I'm sure you'll get some
> very good feedback as to whether your use case warrants the hassle
> fragments can cause :)
>
> Regards,
>
> Dave
>
> 2008/7/5 Benson Margulies <[EMAIL PROTECTED]>:
> >  Could I ask a question in return about OSGi?
> >
> > Are you using Felix or Equinox? Do you happen to know if the Eclipse
> native
> > code bundle fragment system is a generic OSGi feature or specific to
> > Eclipse?
> >
> >
> > On Fri, Jul 4, 2008 at 7:24 AM, David Savage <[EMAIL PROTECTED]>
> > wrote:
> >>
> >> Hi Daniel,
> >>
> >> This was with CXF 2.1.1 I'm actually working on getting CXF working
> >> within infiniflow (based on newton - http://newton.codecauldron.org)
> >> as a provider of a web services binding.
> >>
> >> I've now managed to get the JaxWsProxyFactoryBean working now though
> >> it still needs the patch I mentioned to
> >> org.apache.cxf.frontend.ClientProxyFactoryBean - diff file attached.
> >> In this usecase the CXF libraries are packaged in one bundle but the
> >> "client" code i.e. the code that asks for the proxy to be created is
> >> packaged in a separate bundle. The CXF code is then linked to the
> >> client through the SCA of a binding.
> >>
> >> This allows multiple client bundles to reuse CXF without having to
> >> embed it in the client bundle (or for that matter even know that CXF
> >> is involved - they just ask for an SCA <binding.ws /> which happens to
> >> be implemented by CXF). However this means that the client bundle does
> >> not have the CXF libraries in it's bundle classpath - hence the need
> >> to do some classloader juggling via the Thread.contextClassLoader.
> >>
> >> In general I'm not a big fan of using Thread.contextClassLoader as
> >> it's a little ambiguous - prefer an explicit declaration of the
> >> classloader to be used but this would have been a much larger change
> >> to the CXF code which I didn't want to attempt without the aid of a
> >> safety net :)
> >>
> >> The "javax.xml.ws.WebServiceException: Could not find wsdl:binding
> >> operation info..." issue turned out to be with the way I was using the
> >> interface/impl - the combination that worked in the end was to
> >> explicitly add the @WebService etc annotations to the class/interface
> >> etc, like so:
> >>
> >> package com.paremus.infiniflow.example.cxf;
> >>
> >> import javax.jws.WebParam;
> >> import javax.jws.WebService;
> >>
> >> @WebService
> >> public interface HelloWorld {
> >>       String sayHello(@WebParam(name="text") String name);
> >> }
> >>
> >> -------------------------------------------------------------
> >>
> >> package com.paremus.infiniflow.example.cxf;
> >>
> >> import javax.jws.WebService;
> >>
> >> @WebService(endpointInterface =
> >> "com.paremus.infiniflow.example.cxf.HelloWorld",
> >>       serviceName = "HelloWorld")
> >>
> >> public class HelloWorldImpl implements HelloWorld {
> >>       public String sayHello(String name) {
> >>               return "Hello " + name;
> >>       }
> >> }
> >>
> >> I didn't get around to exploring what the minimum set of annotations
> >> was to get this working. Incidentally is there a case for CXF
> >> automagically inferring webservice info from interfaces that are this
> >> trivial? It seems a little verbose in this case to have to annotate a
> >> single method interface/impl. Though I appreciate this is not the
> >> general use case...
> >>
> >> I'm still having some problems with https but not sure this is OSGi
> >> related so possibly best to follow up in a separate email thread if
> >> necessary. I currently suspect issue is with my certificate chain as
> >> get a message
> >>
> >> 2008-07-03 13:23:25.023::WARN:  EXCEPTION
> >> javax.net.ssl.SSLHandshakeException: Received fatal alert:
> >> certificate_unknown
> >>       at
> >> com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:150)
> >>
> >> When the JaxWsProxy tries to invoke the method call on the client.
> >>
> >> Regards,
> >>
> >> Dave
> >>
> >> 2008/7/1 Daniel Kulp <[EMAIL PROTECTED]>:
> >> >
> >> > Have you tried this with CXF 2.1.1 or 2.1 or other?
> >> >
> >> > We did some work in 2.1.1 to hopefully help some of the issues, but
> I'm
> >> > not really sure about this specific issue.
> >> >
> >> >
> >> > In general, we kind of recommend using the spring dynamic modules for
> >> > OSGi.   The servicemix 4 folks have an example at:
> >> >
> http://servicemix.apache.org/SMX4/cxf-examples.html#CXFexamples-Inside
> >> > that shows how that works.   When you do that, all the spring config
> >> > things should work.
> >> >
> >> > Dan
> >> >
> >> > On Jun 27, 2008, at 12:02 PM, David Savage wrote:
> >> >
> >> >> Hi there,
> >> >>
> >> >> I'm trying to get cxf to work in an OSGi environment and have been
> >> >> banging my head against the desk a bit, suspect it might be due to
> leaping
> >> >> in at the deep end but any help would be appreciated.
> >> >>
> >> >> Ok here's what I've got working:
> >> >>
> >> >>  JaxWsServerFactoryBean svrFactory = new JaxWsServerFactoryBean();
> >> >>  svrFactory.setServiceClass(HelloWorld.class);
> >> >>  svrFactory.setServiceBean(HelloWorldImpl());
> >> >>  svrFactory.setAddress("http://localhost:9000/hello"; );
> >> >>  svrFactory.create();
> >> >>
> >> >> This launches an internal jetty server and when I test this using a
> web
> >> >> browser I can at least see that the server is running as I get a soap
> >> >> response:
> >> >>
> >> >> <soap:Envelope>
> >> >>  <soap:Body>
> >> >>   <soap:Fault>
> >> >>     <faultcode>soap:Server</faultcode>
> >> >>     <faultstring>No such operation: </faultstring>
> >> >>   </soap:Fault>
> >> >>  </soap:Body>
> >> >> </soap:Envelope>
> >> >>
> >> >> However I've not been able to get a client working in OSGi. Initially
> >> >> this was due to code in the
> org.apache.cxf.frontend.ClientProxyFactoryBean
> >> >> which assumed the classloader to generate the proxy would be the
> loader of
> >> >> the client interface. I've worked around that in a local patch here
> by
> >> >> setting Thread.contextClassLoader.
> >> >>
> >> >> Here's what I have on the client side:
> >> >>
> >> >>  JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
> >> >>  factory.setServiceClass(reference.getInterface());
> >> >>  factory.setAddress("http://localhost:9000/hello";);
> >> >>  // set context classloader
> >> >>  ...
> >> >>  HelloWorld proxy = factory.create();
> >> >>  proxy.sayHello("World");
> >> >>
> >> >>
> >> >> However the client still fails due to a null BindingDetails object
> >> >> which is loaded when my test method is invoked:
> >> >>
> >> >> javax.xml.ws.WebServiceException: Could not find wsdl:binding
> operation
> >> >> info for web method sayHello.
> >> >>        at
> >> >>
> org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:150)
> >> >>        at $Proxy35.sayHello(Unknown Source)
> >> >>
> >> >> Is there a stage I'm missing here?
> >> >>
> >> >> I'm also trying to get cxf to work with an https connection (both
> >> >> client and server). On the server side I've figured out that the
> process has
> >> >> something to do with doing something like:
> >> >>
> >> >> server = svrFactory.create();
> >> >>
> >> >> JettyHTTPDestination dest = (JettyHTTPDestination)
> >> >> server.getDestination();
> >> >> JettyHTTPServerEngine engine = (JettyHTTPServerEngine)
> >> >> dest.getEngine();
> >> >>
> >> >> if ( secure ) {
> >> >>  TLSServerParameters params = new TLSServerParameters();
> >> >>  // set params
> >> >>  engine.setTlsServerParameters(params);
> >> >> }
> >> >>
> >> >> But again I'm not having much luck. Is there any example code I can
> >> >> follow or that someone can post to show how this should work?
> >> >>
> >> >> Thanks in advance for any help.
> >> >>
> >> >> Regards,
> >> >>
> >> >> Dave
> >> >>
> >> >>
> _______________________________________________________________________
> >> >> Paremus Limited. Registered in England
> >> >> No. 4181472
> >> >> Registered Office: 22-24 Broad Street, Wokingham, Berks RG40 1BA
> >> >> Postal Address: 107-111 Fleet Street, London, EC4A 2AB
> >> >> The information transmitted is intended only for the person(s) or
> >> >> entity to which it is addressed and may contain confidential and/or
> >> >> privileged material. Any review, retransmission, dissemination or
> other use
> >> >> of, or taking of any action in reliance upon, this information by
> persons or
> >> >> entities other than the intended recipient is prohibited.
> >> >> If you received this in error, please contact the sender and delete
> the
> >> >> material from any computer.
> >> >>
> _______________________________________________________________________
> >> >
> >> > ---
> >> > Daniel Kulp
> >> > [EMAIL PROTECTED]
> >> > http://www.dankulp.com/blog
> >> >
> >> >
> >> >
> >> >
> >
> >
>

Reply via email to