cxf-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Josh Holtzman <jholtz...@berkeley.edu>
Subject Manually creating a JAX-RS endpoint in OSGI
Date Thu, 08 Apr 2010 16:51:11 GMT
I'm trying to allow for manual creation of JAX-RS endpoints in OSGI without
the DOSGI jars.  I've added a "Require-Bundle:
org.apache.cxf.bundle-minimal" header to my bundle, and I create the
endpoint like this:

    CXFNonSpringServlet cxf = new CXFNonSpringServlet();
    httpService.registerServlet(alias, cxf, new Hashtable<String, String>(),
httpContext);
    Bus bus = cxf.getBus();
    JAXRSServerFactoryBean factory = new JAXRSServerFactoryBean();
    factory.setBus(bus);
    factory.setServiceClass(service.getClass());
    factory.setResourceProvider(service.getClass(), new
SingletonResourceProvider(service));
    factory.setAddress("/");
    ClassLoader bundleClassLoader =
Thread.currentThread().getContextClassLoader();
    ClassLoader delegateClassLoader =
JAXRSServerFactoryBean.class.getClassLoader();
    try {
      Thread.currentThread().setContextClassLoader(delegateClassLoader);
      factory.create();
    } finally {
      Thread.currentThread().setContextClassLoader(bundleClassLoader);
    }

This seems to function, but I get the following stack trace when I register
the servlet:

09:36:28  WARN (CXFNonSpringServlet:45) - Initial attempt to crate
application context was unsuccessful.
org.springframework.beans.factory.BeanDefinitionStoreException: IOException
parsing XML document from class path resource [META-INF/cxf/cxf.xml]; nested
exception is java.io.FileNotFoundException: class path resource
[META-INF/cxf/cxf.xml] cannot be opened because it does not exist
    at
org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:349)
    at
org.apache.cxf.bus.spring.ControlledValidationXmlBeanDefinitionReader.loadBeanDefinitions(ControlledValidationXmlBeanDefinitionReader.java:131)
    at
org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:310)
    at
org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:143)
    at
org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:109)
    at
org.apache.cxf.bus.spring.BusApplicationContext.loadBeanDefinitions(BusApplicationContext.java:262)
    at
org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:123)
    at
org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:422)
    at
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:352)
    at
org.apache.cxf.bus.spring.BusApplicationContext.<init>(BusApplicationContext.java:91)
    at
org.apache.cxf.bus.spring.SpringBusFactory.createApplicationContext(SpringBusFactory.java:102)
    at
org.apache.cxf.bus.spring.SpringBusFactory.createBus(SpringBusFactory.java:93)
    at
org.apache.cxf.bus.spring.SpringBusFactory.createBus(SpringBusFactory.java:86)
    at
org.apache.cxf.bus.spring.SpringBusFactory.createBus(SpringBusFactory.java:64)
    at
org.apache.cxf.bus.spring.SpringBusFactory.createBus(SpringBusFactory.java:53)
    at
org.apache.cxf.transport.servlet.CXFNonSpringServlet.loadBusNoConfig(CXFNonSpringServlet.java:45)
    at
org.apache.cxf.transport.servlet.CXFNonSpringServlet.loadBus(CXFNonSpringServlet.java:38)
    at
org.apache.cxf.transport.servlet.AbstractCXFServlet.init(AbstractCXFServlet.java:78)
    at
org.mortbay.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:431)


I'm using cxf-bundle-minimal 2.2.7.  Importing the META-INF.cxf package
don't seem to help.  Any ideas?

Thanks,
Josh

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message