apache-cxf-3.0.4和spring实现rest服务
2015-03-31 01:16
441 查看
1、新建动态web项目CXFRestService,结构如下:
2、引入jar包如下:
3、配置文件
web.xml和log4j.properties还是一样没有变化,来看applicationContext-server.xml
主要注意beans的引用和jaxrs:server定义。
4、实体和服务定义
User.java
IUserRestService.java
UserRestServiceImpl.java
5、运行、测试
在tomcat中运行,
地址栏输入http://localhost:8080/CXFRestService/rest/user/user/123,执行结果如下:
2、引入jar包如下:
aopalliance-1.0.jar commons-logging-1.1.3.jar cxf-core-3.0.4.jar cxf-rt-frontend-jaxrs-3.0.4.jar cxf-rt-rs-client-3.0.4.jar cxf-rt-rs-extension-providers-3.0.4.jar cxf-rt-rs-extension-search-3.0.4.jar cxf-rt-rs-security-cors-3.0.4.jar cxf-rt-rs-security-jose-3.0.4.jar cxf-rt-rs-security-oauth-3.0.4.jar cxf-rt-rs-security-oauth2-3.0.4.jar cxf-rt-rs-security-sso-saml-3.0.4.jar cxf-rt-rs-security-xml-3.0.4.jar cxf-rt-rs-service-description-3.0.4.jar cxf-rt-transports-http-3.0.4.jar javax.ws.rs-api-2.0.1.jar jaxb-api-2.2.11.jar jaxb-core-2.2.11.jar jaxb-impl-2.2.11.jar jcl-over-slf4j-1.7.9.jar jettison-1.3.7.jar log4j-1.2.13.jar slf4j-api-1.7.9.jar slf4j-jdk14-1.7.9.jar spring-aop-3.2.6.RELEASE.jar spring-beans-3.2.6.RELEASE.jar spring-context-3.2.6.RELEASE.jar spring-core-3.2.6.RELEASE.jar spring-expression-3.2.6.RELEASE.jar spring-web-3.2.6.RELEASE.jar stax2-api-3.1.4.jar woodstox-core-asl-4.4.1.jar wsdl4j-1.6.3.jar xmlschema-core-2.2.1.jar同样参考WHICH_JARS中要点:
For JAX-RS support: - abdera* (optional: for AtomPub support, but also needed for the Management log browser console) - commons-codec.jar (Needed for Abdera) - jaxen.jar (Needed for Abdera) - axiom* (Needed for Abdera) - javax.ws.rs-api.jar - jettison.jar (Needed for JSON services only) - oauth*.jar (Needed for OAuth support) - cxf-rt-frontend-jaxrs.jar - cxf-rt-rs-*.jar as needed但实际执行时发现还是需要cxf-rt-transports-http-3.0.4.jar,不然会提示cxf-servlet.xml找不到。
3、配置文件
web.xml和log4j.properties还是一样没有变化,来看applicationContext-server.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:jaxws="http://cxf.apache.org/jaxws" xmlns:jaxrs="http://cxf.apache.org/jaxrs" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.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" /> <bean id="userRestServiceBean" class="com.java.service.impl.UserRestServiceImpl" /> <!-- 这里的地址很重要,客户端需要通过这个地址来访问WebService --> <jaxrs:server id="restServiceContainer" address="/rest"> <jaxrs:serviceBeans> <ref bean="userRestServiceBean" /> </jaxrs:serviceBeans> <jaxrs:extensionMappings> <entry key="json" value="application/json" /> <entry key="xml" value="application/xml" /> </jaxrs:extensionMappings> <jaxrs:languageMappings> <entry key="en" value="en-gb" /> </jaxrs:languageMappings> </jaxrs:server> </beans>
主要注意beans的引用和jaxrs:server定义。
4、实体和服务定义
User.java
import java.io.Serializable; import javax.xml.bind.annotation.XmlRootElement; @XmlRootElement(name = "UserInfo") public class User implements Serializable { private static final long serialVersionUID = 677484458789332877L; private int id; private String name; private String email; private String address; @Override public String toString() { return this.id + "#" + this.name + "#" + this.email + "#" + this.address; } // getter/setter public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } }
IUserRestService.java
import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import com.java.entity.User; @Path(value = "/rest/") public interface IUserRestService { @GET @Path("/user/{id}") @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON }) public User getUser(@PathParam("id") int id); }
UserRestServiceImpl.java
import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import com.java.entity.User; import com.java.service.IUserRestService; @Path(value = "/user/") public class UserRestServiceImpl implements IUserRestService { @GET @Path("/user/{id}") @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON }) public User getUser(@PathParam("id") int id) { User user = new User(); user.setId(id); user.setName("test_name"); return user; } }
5、运行、测试
在tomcat中运行,
地址栏输入http://localhost:8080/CXFRestService/rest/user/user/123,执行结果如下:
<UserInfo> <id>123</id> <name>test_name</name> </UserInfo>这就是最简单的GET服务了,返回指定ID的用户信息,其他更详细的用法可以参考之前转载的文。
相关文章推荐
- 用jersey + spring 实现rest服务及单元测试
- 记录apache-cxf-3.0.4编写web服务的过程(2)——集合
- 使用 Spring + CXF 发布 REST 服务
- Jersey+Spring 实现rest 接口 服务调用
- CXF系列之JAX-RS:CXF与spring集成发布REST服务
- cxf结合maven实现rest服务
- [转]使用 Spring 和 Apache CXF 设计和实现 POJO Web 服务,第 1 部分: 使用 CXF 和 Spring 创建 Web 服务
- Maven+SpringMVC+CXF整合实现webservice服务的发布与调用
- 更改或隐藏org.apache.cxf.transport.servlet.CXFServlet的rest或soap服务列表
- 微服务框架Spring Cloud介绍 Part4: 使用Eureka, Ribbon, Feign实现REST服务客户端
- 使用CXF和spring发布rest服务
- webservice--cxf和spring结合,发布restFull风格的服务
- Spring中应用Apache Wink创建REST服务
- 记录apache-cxf-3.0.4编写web服务的过程
- 8、CXF与Spring整合发布http rest 风格的WebService服务
- Jersey+Spring 实现rest 接口 服务调用
- 使用 Spring + CXF 发布 REST 服务(jax-RS)
- SpringBoot通过restTemplate实现消费服务
- spring-cxf集成rest实现webservice以及调用过程
- webservice--CXF+Spring整合发布REST的服务