You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by Eugeny N Dzhurinsky <bo...@redwerk.com> on 2009/06/16 17:53:04 UTC

Re: Configure CXF JAXRS services in the Spring context and stand-aloneusage

On Tue, Jun 16, 2009 at 09:56:39AM +0100, Sergey Beryozkin wrote:
> Not sure why but the message formatting is broken
> Here's another attempt :
> 
> ClassPathXmlApplicationContext ctx =
>             new ClassPathXmlApplicationContext(new String[] {"/org/apache/cxf/jaxrs/spring/servers.xml"});
> 
> // 'simple' is the id of the jaxrs server bean
> JAXRSServerFactoryBean sfb = (JAXRSServerFactoryBean)ctx.getBean("simple");
> sfb.create();
> 
> or may be you just can get all the beans  from the context and call create() on those which are assignable to JAXRSServerFactoryBean
> 
> give a try please
> 
> Cheers, Sergey


Hello, Sergey!

Thank you for the reply, however looks like I am still missing something.

I created the sample application, which has the following beans.xml in the
classpath:

=======================================================================================================
<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxrs="http://cxf.apache.org/jaxrs"
    xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://cxf.apache.org/jaxrs
http://cxf.apache.org/schemas/jaxrs.xsd">

    <!--
        do not use import statements if CXFServlet init parameters link
        to this beans.xml
    -->

    <import resource="classpath:META-INF/cxf/cxf.xml" />
    <import resource="classpath:META-INF/cxf/cxf-extension-jaxrs-binding.xml" />
    <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />

    <jaxrs:server id="customerService" address="http://localhost:9000/">
        <jaxrs:serviceBeans>
            <ref bean="customerBean" />
        </jaxrs:serviceBeans>
    </jaxrs:server>

    <bean id="customerBean" class="test.service.CustomerService" />
</beans>
=======================================================================================================

And I am using the following simple class to start the things up:

=======================================================================================================
package test;

import org.apache.cxf.endpoint.Server;
import org.apache.cxf.jaxrs.JAXRSServerFactoryBean;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class App {
    public static void main(String[] args) throws Exception {
        ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext(
                "/beans.xml");
        JAXRSServerFactoryBean sfb = (JAXRSServerFactoryBean) ctx
                .getBean("customerService");
        Server server = sfb.create();
        Thread.sleep(Long.MAX_VALUE);
    }
}
=======================================================================================================

And at this point the service seems to start up:

=======================================================================================================
16.06.2009 18:38:58
org.springframework.context.support.AbstractApplicationContext prepareRefresh
INFO: Refreshing
org.springframework.context.support.ClassPathXmlApplicationContext@eb017e:
display name
[org.springframework.context.support.ClassPathXmlApplicationContext@eb017e];
startup date [Tue Jun 16 18:38:58 EEST 2009]; root of context hierarchy
16.06.2009 18:38:59
org.springframework.beans.factory.xml.XmlBeanDefinitionReader
loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource [beans.xml]
16.06.2009 18:38:59
org.springframework.beans.factory.xml.XmlBeanDefinitionReader
loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource
[META-INF/cxf/cxf.xml]
16.06.2009 18:39:00
org.springframework.beans.factory.xml.XmlBeanDefinitionReader
loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource
[META-INF/cxf/cxf-extension-jaxrs-binding.xml]
16.06.2009 18:39:00
org.springframework.beans.factory.xml.XmlBeanDefinitionReader
loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource
[META-INF/cxf/cxf-servlet.xml]
16.06.2009 18:39:00
org.springframework.context.support.AbstractApplicationContext
obtainFreshBeanFactory
INFO: Bean factory for application context
[org.springframework.context.support.ClassPathXmlApplicationContext@eb017e]:
org.springframework.beans.factory.support.DefaultListableBeanFactory@14520eb
16.06.2009 18:39:00
org.springframework.beans.factory.support.DefaultListableBeanFactory
preInstantiateSingletons
INFO: Pre-instantiating singletons in
org.springframework.beans.factory.support.DefaultListableBeanFactory@14520eb:
defining beans
[cxf,org.apache.cxf.bus.spring.BusApplicationListener,org.apache.cxf.bus.spring.BusWiringBeanFactoryPostProcessor,org.apache.cxf.bus.spring.Jsr250BeanPostProcessor,org.apache.cxf.bus.spring.BusExtensionPostProcessor,org.apache.cxf.resource.ResourceManager,org.apache.cxf.configuration.Configurer,org.apache.cxf.binding.BindingFactoryManager,org.apache.cxf.transport.DestinationFactoryManager,org.apache.cxf.transport.ConduitInitiatorManager,org.apache.cxf.wsdl.WSDLManager,org.apache.cxf.phase.PhaseManager,org.apache.cxf.workqueue.WorkQueueManager,org.apache.cxf.buslifecycle.BusLifeCycleManager,org.apache.cxf.endpoint.ServerRegistry,org.apache.cxf.endpoint.ServerLifeCycleManager,org.apache.cxf.endpoint.ClientLifeCycleManager,org.apache.cxf.transports.http.QueryHandlerRegistry,org.apache.cxf.endpoint.EndpointResolverRegistry,org.apache.cxf.headers.HeaderManager,org.apache.cxf.catalog.OASISCatalogManager,org.apache.cxf.endpoint.ServiceContractResolverRegistry,org.apache.cxf.jaxrs.JAXRSBindingFactory,org.apache.cxf.transport.servlet.ServletTransportFactory,customerService,customerBean];
root of factory hierarchy
16.06.2009 18:39:01 org.apache.cxf.endpoint.ServerImpl initDestination
INFO: Setting the server's publish address to be http://localhost:9000/
16.06.2009 18:39:01 org.apache.cxf.endpoint.ServerImpl initDestination
INFO: Setting the server's publish address to be http://localhost:9000/
=======================================================================================================

However there is nothing being listening on the port 9000, and when trying to connect to this URL 
with the browser - the connection refused is reported.

What am I doing in the wrong way?

Thank you in advance!

-- 
Eugene N Dzhurinsky