Not sure how CXF-BC is wired to the OSGi transport, but if this is the case, maybe we should ensure that when installing cxf-bc feature, the cxf-osgi transport is installed before that.
On Mon, May 25, 2009 at 18:41, Edell Nolan <[email protected]> wrote: > Hi, > > I have a question on the CXF Transport for OSGi. > > Basically if you do the following > > Start Servicemix > > *at the console run => features/install examples-cxf-osgi > *open a web browser and check that > http://localhost:8080/cxf/HelloWorld?wsdl<http://localhost:8080/cxf/HelloWorld?wsdl*>gives > you the demo WSDL > set *log/set TRACE > Build the cxf-wsdl-first demo and install it using => > **osgi/install -s > mvn:org.apache.servicemix.examples.cxf-wsdl-first/wsdl-first-cxf-sa/4.1.0-SNAPSHOT/zip > * > point your web browser to > http://localhost:8092/PersonService?wsdl<http://localhost:8092/PersonService?wsdl*>to > verify the cxf-wsdl-first demo is running > > this all works fine and you should see the both wsdl files. > > Then restart Servicemix. > > You can no longer see > http://localhost:8092/PersonService?wsdl<http://localhost:8092/PersonService?wsdl*>wsdl > - from debugging this along - it now ends up in the > OSGITransportFactory and will throw an error in the log files > > "17:58:41,241 | ERROR | xtenderThread-66 | CxfBcComponent > | mmon.xbean.AbstractXBeanDeployer 103 | > javax.jbi.management.DeploymentException: java.lang.IllegalStateException: > Endpoint address should be a relative URI wrt to the servlet address (use > '/xxx' for example)" > > if you look at > https://svn.apache.org/repos/asf/servicemix/smx4/features/trunk/cxf/cxf-transport-osgi/src/main/java/org/apache/servicemix/cxf/transport/http_osgi/OsgiTransportFactory.java > > In getDestination it throws > if (URI.create(endpointInfo.getAddress()).isAbsolute()) { > throw new IllegalStateException("Endpoint address should be a > relative URI wrt to the servlet address (use '/xxx' for example)"); > } > > the sequence of starting the two demos is the same on reboot but yet we get > different results. > > As when you first attempt to run the cxf-wsdl-first demo the CXF Transport > for OSGi is already running and we can see out PersonService wsdl. But it > looks like the OSGI Transport is not set as the default until after a > refresh/reboot. > > Then when you reboot and attempt to launch the PersonService wsdl it ends up > in the OsgiTransportFactory which is not going to work. > > Shouldn't other services be able to be deployed independant of the Osgi > Transport Service and use say the SoapTransportFactory. > > I did ask Freeman and he mentioned one work around would be to use your own > bus. > > thanks, Edell. > -- Cheers, Guillaume Nodet ------------------------ Blog: http://gnodet.blogspot.com/ ------------------------ Open Source SOA http://fusesource.com
