Thank you very much. Is the META-INF/cxf/osgi directory new? as of 2.0.5 it doesn't exist.
-----Original Message----- From: Guillaume Nodet <[EMAIL PROTECTED]> Sent: Wednesday, April 30, 2008 10:37am To: [email protected] Subject: Re: cxf Autowiring in OSGI Here's what we came up with so far: http://servicemix.apache.org/SMX4/cxf-examples.html#CXFexamples-Insidetheexample if you really want to use the non spring configuration, the best way to avoid classloader issues may be to embed cxf and its dependencies inside a single bundle along with your services. On Wed, Apr 30, 2008 at 4:06 PM, Daniel Kulp <[EMAIL PROTECTED]> wrote: > > Dave, > > > Guillaume Nodet definitely has more experience with the OSGi stuff. In > generaly, we've seen success using the Spring Dynamic Module stuff with > OSGi as you can import the cxf stuff you need in the spring module and > the bus gets wired up correctly. (in 2.0.6/2.1, we even added a > cxf-all.xml that you can import to grab everything, but thats probably > more than you need) > > I'm not sure if anyone not using spring-dm has gotten anything to work. > One option MAY be to call SpringBusFactory.createBus() yourself first to > cause the Bus to be created with spring. Not sure if that works though > as I'm not sure if it will find all the spring config files or not. > > Dan > > > > > > On Tuesday 29 April 2008, Dave Brosius wrote: > > OK, this code is failing in OSGI > > > > BusFactory.getBusFactoryClass > > > > specifically, it tries to load the file > > > > META-INF/services/org.apache.cxf.bus.factory > > > > and fails. > > > > [CODE] > > private static String getBusFactoryClass(ClassLoader classLoader) { > > > > String busFactoryClass = null; > > String busFactoryCondition = null; > > > > // next check system properties > > busFactoryClass = > > System.getProperty(BusFactory.BUS_FACTORY_PROPERTY_NAME); if > > (isValidBusFactoryClass(busFactoryClass)) { > > return busFactoryClass; > > } > > > > try { > > // next, check for the services stuff in the jar file > > String serviceId = "META-INF/services/" + > > BusFactory.BUS_FACTORY_PROPERTY_NAME; InputStream is = null; > > > > if (classLoader == null) { > > classLoader = > > Thread.currentThread().getContextClassLoader(); } > > > > if (classLoader == null) { > > is = ClassLoader.getSystemResourceAsStream(serviceId); > > } else { > > is = classLoader.getResourceAsStream(serviceId); > > } > > if (is != null) { > > BufferedReader rd = new BufferedReader(new > > InputStreamReader(is, "UTF-8")); busFactoryClass = rd.readLine(); > > busFactoryCondition = rd.readLine(); > > rd.close(); > > } > > if (isValidBusFactoryClass(busFactoryClass)) { > > if (busFactoryCondition != null) { > > try { > > classLoader.loadClass(busFactoryCondition); > > return busFactoryClass; > > } catch (ClassNotFoundException e) { > > return DEFAULT_BUS_FACTORY; > > } > > } else { > > return busFactoryClass; > > } > > } > > > > // otherwise use default > > busFactoryClass = BusFactory.DEFAULT_BUS_FACTORY; > > return busFactoryClass; > > } catch (Exception ex) { > > LogUtils.log(LOG, Level.SEVERE, > > "FAILED_TO_DETERMINE_BUS_FACTORY_EXC", ex); } > > return busFactoryClass; > > } > > [/CODE] > > > > > > -----Original Message----- > > From: Dave Brosius <[EMAIL PROTECTED]> > > Sent: Tuesday, April 29, 2008 6:27pm > > To: [email protected] > > Cc: [EMAIL PROTECTED] > > Subject: RE: cxf Autowiring in OSGI > > > > Here's the difference: Can anyone help me with why this is so? > > > > In OSGI, createBus creates a CXFBusFactory > > > > Thread [SpringOsgiExtenderThread-2] (Suspended) > > CXFBusFactory.createBus() line: 32 > > BusFactory.getDefaultBus(boolean) line: 69 > > BusFactory.getThreadDefaultBus(boolean) line: 106 > > BusFactory.getThreadDefaultBus() line: 97 > > JaxWsServerFactoryBean(AbstractEndpointFactory).getBus() line: 73 > > JaxWsServerFactoryBean(AbstractWSDLBasedEndpointFactory).initializeSe > >rviceFactory() line: 143 > > JaxWsServerFactoryBean(AbstractWSDLBasedEndpointFactory).createEndpoin > >t() line: 73 JaxWsServerFactoryBean(ServerFactoryBean).create() line: > > 113 JaxWsServerFactoryBean.create() line: 160 > > EchoInstaller.init() line: 23 > > NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not > > available [native method] NativeMethodAccessorImpl.invoke(Object, > > Object[]) line: 39 > > DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25 > > Method.invoke(Object, Object...) line: 585 > > DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).invoke > >CustomInitMethod(String, Object, String, boolean) line: 1378 > > DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).invokeI > >nitMethods(String, Object, RootBeanDefinition) line: 1339 > > DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).initial > >izeBean(String, Object, RootBeanDefinition) line: 1299 > > DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).doCreat > >eBean(String, RootBeanDefinition, Object[]) line: 463 > > AbstractAutowireCapableBeanFactory$1.run() line: 404 > > AccessController.doPrivileged(PrivilegedAction<T>) line: not > > available [native method] > > DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createB > >ean(String, RootBeanDefinition, Object[]) line: 375 > > AbstractBeanFactory$1.getObject() line: 263 > > DefaultListableBeanFactory(DefaultSingletonBeanRegistry).getSingleton > >(String, ObjectFactory) line: 170 > > DefaultListableBeanFactory(AbstractBeanFactory).doGetBean(String, > > Class, Object[], boolean) line: 260 > > DefaultListableBeanFactory(AbstractBeanFactory).getBean(String, Class, > > Object[]) line: 184 > > DefaultListableBeanFactory(AbstractBeanFactory).getBean(String) line: > > 163 DefaultListableBeanFactory.preInstantiateSingletons() line: 430 > > OsgiBundleXmlApplicationContext(AbstractApplicationContext).finishBean > >FactoryInitialization(ConfigurableListableBeanFactory) line: 729 > > OsgiBundleXmlApplicationContext(AbstractDelegatedExecutionApplicationC > >ontext).completeRefresh() line: 268 > > DependencyWaiterApplicationContextExecutor$CompleteRefreshTask.run() > > line: 142 > > DependencyWaiterApplicationContextExecutor$CompleteRefreshTask.run() > > line: 142 Thread.run() line: 595 > > > > > > In standard mode, createBus creates a SpringBusFactory > > > > Thread [main] (Suspended (breakpoint at line 54 in SpringBusFactory)) > > SpringBusFactory.createBus() line: 54 > > BusFactory.getDefaultBus(boolean) line: 69 > > BusFactory.getThreadDefaultBus(boolean) line: 106 > > BusFactory.getThreadDefaultBus() line: 97 > > JaxWsServerFactoryBean(AbstractEndpointFactory).getBus() line: 73 > > JaxWsServerFactoryBean(AbstractWSDLBasedEndpointFactory).initializeSe > >rviceFactory() line: 143 > > JaxWsServerFactoryBean(ServerFactoryBean).initializeServiceFactory() > > line: 149 > > JaxWsServerFactoryBean(AbstractWSDLBasedEndpointFactory).createEndpoin > >t() line: 73 JaxWsServerFactoryBean(ServerFactoryBean).create() line: > > 113 JaxWsServerFactoryBean.create() line: 160 > > Main.main(String[]) line: 19 > > > > > > > > > > -----Original Message----- > > From: Dave Brosius <[EMAIL PROTECTED]> > > Sent: Tuesday, April 29, 2008 6:15pm > > To: [email protected] > > Cc: [EMAIL PROTECTED] > > Subject: cxf Autowiring in OSGI > > > > I am having trouble getting cxf to work in osgi. The problem is that > > it appears that there are no factories registered for the various > > namespaces needed such as http://schemas.xmlsoap.org/soap/http > > > > > > When run in normal mode (not osgi), I see these namespaces being > > registered (in the below stack trace). In OSGI this isn't happening > > and so it fails in JaxWsServerFactoryBean.createBindingInfo. Does > > anyone have any ideas about how to fix this? > > > > > > [CODE] > > Thread [main] (Suspended (breakpoint at line 79 in > > DestinationFactoryManagerImpl)) > > DestinationFactoryManagerImpl.registerDestinationFactory(String, > > DestinationFactory) line: 79 > > JettyHTTPTransportFactory.finalizeConfig() line: 68 > > NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not > > available [native method] NativeMethodAccessorImpl.invoke(Object, > > Object[]) line: 39 > > DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25 > > Method.invoke(Object, Object...) line: 585 > > ResourceInjector.invokePostConstruct() line: 305 > > ResourceInjector.construct(Object) line: 86 > > Jsr250BeanPostProcessor.postProcessAfterInitialization(Object, > > String) line: 58 > > DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).applyBe > >anPostProcessorsAfterInitialization(Object, String) line: 357 > > DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).initial > >izeBean(String, Object, RootBeanDefinition) line: 1308 > > DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).doCreat > >eBean(String, RootBeanDefinition, Object[]) line: 463 > > AbstractAutowireCapableBeanFactory$1.run() line: 404 > > AccessController.doPrivileged(PrivilegedAction<T>) line: not > > available [native method] > > DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createB > > >ean(String, RootBeanDefinition, Object[]) line: 375 > > AbstractBeanFactory$1.getObject() line: 263 > > DefaultListableBeanFactory(DefaultSingletonBeanRegistry).getSingleton > >(String, ObjectFactory) line: 170 > > DefaultListableBeanFactory(AbstractBeanFactory).doGetBean(String, > > Class, Object[], boolean) line: 260 > > DefaultListableBeanFactory(AbstractBeanFactory).getBean(String, Class, > > Object[]) line: 184 > > DefaultListableBeanFactory(AbstractBeanFactory).getBean(String) line: > > 163 DefaultListableBeanFactory.preInstantiateSingletons() line: 430 > > BusApplicationContext(AbstractApplicationContext).finishBeanFactoryIni > >tialization(ConfigurableListableBeanFactory) line: 729 > > BusApplicationContext(AbstractApplicationContext).refresh() line: 381 > > BusApplicationContext.<init>(String[], boolean, ApplicationContext) > > line: 86 SpringBusFactory.createBus(String[], boolean) line: 93 > > SpringBusFactory.createBus(String, boolean) line: 87 > > SpringBusFactory.createBus(String) line: 65 > > SpringBusFactory.createBus() line: 54 > > BusFactory.getDefaultBus(boolean) line: 69 > > BusFactory.getThreadDefaultBus(boolean) line: 106 > > BusFactory.getThreadDefaultBus() line: 97 > > JaxWsServerFactoryBean(AbstractEndpointFactory).getBus() line: 73 > > JaxWsServerFactoryBean(AbstractWSDLBasedEndpointFactory).initializeSe > > >rviceFactory() line: 143 > > JaxWsServerFactoryBean(ServerFactoryBean).initializeServiceFactory() > > line: 149 > > JaxWsServerFactoryBean(AbstractWSDLBasedEndpointFactory).createEndpoin > > > >t() line: 73 JaxWsServerFactoryBean(ServerFactoryBean).create() line: > > 113 JaxWsServerFactoryBean.create() line: 160 > > Main.main(String[]) line: 19 > > [/CODE] > > > > -- > J. Daniel Kulp > Principal Engineer, IONA > [EMAIL PROTECTED] > http://www.dankulp.com/blog > -- Cheers, Guillaume Nodet ------------------------ Blog: http://gnodet.blogspot.com/
