CXF配置xxx.services.xml文件暴露服务
<?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">
<!-- cxf暴露服务 -->
<jaxrs:server id="xxxServiceRest" address="/路径">
<jaxrs:serviceBeans>
<ref bean="对应@Name Bean"/>
</jaxrs:serviceBeans>
<jaxrs:providers>
<ref bean="jsonProvider"/>
<ref bean="errorHandlerProvider"/>
</jaxrs:providers>
</jaxrs:server>
</beans>
服务接口方法通过@Context HttpServletRequest request, @Context HttpServletResponse response参数
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.ws.rs.*;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import java.util.List;
@Path("book")
@Consumes(MediaType.APPLICATION_JSON + ";charset=UTF-8")
@Produces(MediaType.APPLICATION_JSON + ";charset=UTF-8")
public interface IBookService {
@POST
@Path("getAllBooks")
List<BookVO> getAllBooks(@Context HttpServletRequest request, @Context HttpServletResponse response, ParameterVO parameterVO);
}
服务接口实现类:
import javax.inject.Inject;
import javax.inject.Named;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Arrays;
import java.util.List;
import static org.apache.http.HttpStatus.SC_BAD_REQUEST;
@Named("xxxService")
public class BookService implements IBookService {
@Override
public List<BookVO> getAllBooks(HttpServletRequest request, HttpServletResponse response, ParameterVO parameterVO) {
// 使用 HttpServletResponse 修改返回
response.setStatus(SC_BAD_REQUEST);
return Arrays.asList(new BookVO(), new BookVO());
}
}