Apache CXF + Spring3 + REST + JSON配置

转载请标明出处:http://blog.csdn.net/goldenfish1919/article/details/48155331

1.web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>CXF Rest Services</display-name>
  
	<welcome-file-list>
		<welcome-file>index.html</welcome-file>
	</welcome-file-list>
	
  	
    <servlet>
        <servlet-name>CXFServlet</servlet-name>
        <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>CXFServlet</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping> 
    
    <!-- 设置spring容器加载配置文件的路径 -->
	<context-param>
  		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:applicationContext.xml</param-value>
  	</context-param>
    <listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	
</web-app>

2.applicationContext.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:aop="http://www.springframework.org/schema/aop"
	xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jdbc="http://www.springframework.org/schema/jdbc"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:cache="http://www.springframework.org/schema/cache"
	xsi:schemaLocation="
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
     http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd
     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
     http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
     http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd
     http://www.springframework.org/schema/cache
	 http://www.springframework.org/schema/cache/spring-cache-3.2.xsd"
	default-lazy-init="true">
	
	
	<!-- 包扫描、注解相关 -->
	<context:component-scan base-package="com.example">
		<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
	</context:component-scan>
	
	<import resource="classpath:applicationContext-cxf.xml" />
    
</beans>

3.applicationContext-cxf.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:jaxws="http://cxf.apache.org/jaxws"
    xmlns:jaxrs="http://cxf.apache.org/jaxrs"
    xmlns:http-conf="http://cxf.apache.org/transports/http/configuration"
    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
      http://cxf.apache.org/transports/http/configuration
      http://cxf.apache.org/schemas/configuration/http-conf.xsd
      http://cxf.apache.org/jaxws
      http://cxf.apache.org/schemas/jaxws.xsd">
      
    <import resource="classpath:META-INF/cxf/cxf.xml" />
    <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
    <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
    <http-conf:conduit
           name="*.http-conduit">
      <http-conf:client AllowChunking="false"/>
  	</http-conf:conduit>
  	 
    <bean id="jsonProvider" class="org.apache.cxf.jaxrs.provider.json.JSONProvider">
    	<property name="dropRootElement" value="true"/>
    	<property name="dropCollectionWrapperElement" value="true"/>
    </bean>
    
    <jaxrs:server id="serviceContainer" address="/rsapi">
        <jaxrs:serviceBeans>
        	<ref bean="testService" />
        </jaxrs:serviceBeans>
        <jaxrs:providers>
        	<ref bean="jsonProvider" />
        </jaxrs:providers>
        <jaxrs:languageMappings>
        	<entry key="en" value="en-gb" />
        </jaxrs:languageMappings>
    </jaxrs:server>
</beans>

4.CXFDemoImpl.java
@Service("testService")
public class CXFDemoImpl implements CXFDemo {
	@Override
	public String sayHello(final String foo) {
		return "hello " + foo;
	}

	@Override
	public String sayHi() {

		return "Hi";
	}

	@Override
	public TestObject getObject() {
		final TestObject obj = new TestObject();
		obj.setId(12);
		obj.setName("name1");
		obj.setDescription("this is a description.");
		final List<TestObject> fris = new ArrayList<>();

		TestObject obj1 = new TestObject();
		obj1.setId(13);
		obj1.setName("name2");
		obj1.setDescription("this is a description.");
		fris.add(obj1);

		obj1 = new TestObject();
		obj1.setId(14);
		obj1.setName("name3");
		obj1.setDescription("this is a description.");
		fris.add(obj1);
		obj.setFriends(fris);
		return obj;
	}
}
5.CXFDemo.java

@Path("/test/")
public interface CXFDemo {
	@GET
	@Path("/sayHello/{foo}")
	@Produces({ MediaType.APPLICATION_JSON })
	public String sayHello(@PathParam("foo") String foo);

	@GET
	@Path("/sayhi")
	@Produces({ MediaType.APPLICATION_JSON })
	public String sayHi();

	@GET
	@Path("/getobject")
	@Produces({ MediaType.APPLICATION_JSON })
	public TestObject getObject();
}
6.TestObject.java

@XmlRootElement(name = "test")
public class TestObject {

	private int id;
	private String name;
	private String description;
	private List<TestObject> friends;

	public int getId() {
		return this.id;
	}

	public void setId(final int id) {
		this.id = id;
	}

	public String getName() {
		return this.name;
	}

	public void setName(final String name) {
		this.name = name;
	}

	public String getDescription() {
		return this.description;
	}

	public void setDescription(final String description) {
		this.description = description;
	}

	public List<TestObject> getFriends() {
		return this.friends;
	}

	public void setFriends(final List<TestObject> friends) {
		this.friends = friends;
	}
}

部署到tomcat,访问:http://localhost:8080/rest_cxf/rsapi/test/getobject

输出:

{"description":"this is a description.","friends":[{"description":"this is a description.","id":13,"name":"name2"},{"description":"this is a description.","id":14,"name":"name3"}],"id":12,"name":"name1"}
 

代码下载:http://download.csdn.net/detail/goldenfish1919/9069737


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值