THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
...
Code Block | ||||
---|---|---|---|---|
| ||||
<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-2.0.xsd http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd"> <jaxrs:server id="customerService" address="/customers"> <jaxrs:serviceBeans> <ref bean="serviceBean"/> </jaxrs:serviceBeans> </jaxrs:server> <bean id="serviceBean" class="service.CustomerService"/> </beans> |
Spring Boot
ExampleExample1:
Code Block | ||
---|---|---|
| ||
package sample.rs.service; import org.apache.cxf.Busendpoint.Server; import org.apache.cxf.jaxrs.JAXRSServerFactoryBean; import org.apache.cxf.transportjaxrs.servletspring.CXFServletJaxRsConfig; import org.springframeworkapache.beanscxf.factorytransport.annotationservlet.AutowiredCXFServlet; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.builder.SpringApplicationBuilderSpringBootApplication; import org.springframework.boot.context.embedded.EmbeddedServletContainerFactory; import org.springframework.boot.context.embedded.ServletRegistrationBean; import org.springframework.boot.context.web.SpringBootServletInitializer; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.ImportResourceImport; @Configuration @EnableAutoConfiguration @ImportResource({ "classpath:META-INF/cxf/cxf.xml" }) public class Application extends SpringBootServletInitializer { @Autowired private ApplicationContext applicationContext; public @SpringBootApplication @Import(JaxRsConfig.class) public class SampleRestApplication { public static void main(String[] args) { SpringApplication.run(ApplicationSampleRestApplication.class, args); } // Replaces the need for web.xml @Bean public ServletRegistrationBean servletRegistrationBean(ApplicationContext context) { return new ServletRegistrationBean(new CXFServlet(), "/apiservices/*"); } @Bean public Server helloRestServicersServer() { BusJAXRSServerFactoryBean busendpoint = (Bus) applicationContext.getBean(Bus.DEFAULT_BUS_IDnew JAXRSServerFactoryBean(); JAXRSServerFactoryBean endpoint = .setServiceBean(new EndpointImpl(bus, implementorHelloService()); endpoint.setAddress("/hellohelloservice"); return endpoint.setServiceBean(new HelloWorldRestImpl());endpoint.create(); } } |
Example2:
Code Block | ||
---|---|---|
| ||
package sample.rs.service;
import org.apache.cxf.jaxrs.spring.SpringComponentScanServer;
import org.apache.cxf.transport.servlet.CXFServlet;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.embedded.ServletRegistrationBean;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Import;
@SpringBootApplication
@Import(SpringComponentScanServer.class)
public class SampleScanRestApplication {
public static void main(String[] args) {
SpringApplication.run(SampleScanRestApplication.class, args);
}
@Bean
public ServletRegistrationBean servletRegistrationBean(ApplicationContext context) {
return new ServletRegistrationBean(new CXFServlet(), "/services/helloservice/*");
}
@Bean
public HelloService helloService() {
return new HelloService();
}
} |
Example3:
Code Block | ||
---|---|---|
| ||
/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package sample.rs.service; import java.util.Collections; import java.util.Set; import javax.servlet.ServletConfig; import javax.ws.rs.ApplicationPath; import javax.ws.rs.core.Application; import org.apache.cxf.jaxrs.servlet.CXFNonSpringJaxrsServlet; import org.apache.cxf.jaxrs.spring.JaxRsConfig; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.context.embedded.ServletRegistrationBean; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Import; @SpringBootApplication @Import(JaxRsConfig.class) public class SampleScanRestApplication2 { public static void main(String[] args) { SpringApplication.run(SampleScanRestApplication2.class, args); } @Bean public ServletRegistrationBean servletRegistrationBean(ApplicationContext context) { Application app = (Application)context.getBean("helloApp"); @SuppressWarnings("serial") CXFNonSpringJaxrsServlet servlet = new CXFNonSpringJaxrsServlet(app) { @Override protected boolean isIgnoreApplicationPath(ServletConfig servletConfig) { return false; } }; return new ServletRegistrationBean(servlet, "/*"); } @Bean public Application helloApp() { return endpoint.createnew JaxrsApplication(); } @ApplicationPath("/services/helloservice") Used when deployingpublic tostatic aclass standaloneJaxrsApplication servletextends container, i.e. tomcatApplication { @Override protectedpublic SpringApplicationBuilderSet<Object> configuregetSingletons(SpringApplicationBuilder application) { return application.sources(Application.class);Collections.<Object>singleton(new HelloService()); } } } |
Please also check the classes in this package and this demo.
(Here is a demo for JAX-WS users).
Configuring JAX-RS endpoints programmatically without Spring
...