CXF创建WebService实例 基于maven



一、概述
1、ApacheCXF项目是由ObjectWeb Celtix和CodeHaus XFire合并成立。ObjectWeb Celtix是
由IONA公司赞助,于2005年成立的开源Java ESB产品,XFire则是业界知名的SOAP堆栈。
合并后的ApacheCXF融合该两个开源项目的功能精华,提供了实现SOA所需要的核心ESB功能框架,
包括SOA服务创建,服务路由,及一系列企业级QoS功能。

2.支持标准
(1)JAX-WS, JSR-181, SAAJ, JAX-RS
(2)SOAP 1.1, 1.2, WS-I BasicProfile, WS-Security, WS-Addressing, WS-RM, WS-Policy
(3)WSDL 1.1
(4)MTOM

3.传输方式,绑定,数据绑定,传送数据格式
(1)绑定: SOAP, REST/HTTP
(2)数据绑定: JAXB 2.x, Aegis, XMLBeans, SDO
(3)传送数据格式: XML, JSON, FastInfoset
(4)传输方式: HTTP, Servlet, JMS

 

二、基于SOAP发布webservice

 

(1)pom.xml文件中导入CXF相关包

Xml代码 复制代码  收藏代码
  1. <dependency>  
  2.     <groupId>org.apache.cxf</groupId>  
  3.     <artifactId>cxf-rt-core</artifactId>  
  4.     <version>2.6.2</version>                  
  5. </dependency>  
  6. <dependency>  
  7.     <groupId>org.apache.cxf</groupId>  
  8.     <artifactId>cxf-rt-frontend-jaxws</artifactId>  
  9.     <version>2.6.2</version>                  
  10. </dependency>  
  11. <dependency>  
  12.     <groupId>org.apache.cxf</groupId>  
  13.     <artifactId>cxf-rt-transports-http</artifactId>  
  14.     <version>2.6.2</version>  
  15. </dependency>  

 

(2)web.xml文件中配置

Xml代码 复制代码  收藏代码
  1. <servlet>  
  2. <servlet-name>CXFServlet</servlet-name>       
  3. <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>  
  4. </servlet>  
  5. <servlet-mapping>  
  6. <servlet-name>CXFServlet</servlet-name>  
  7. <url-pattern>/cxf/*</url-pattern>  
  8. </servlet-mapping>  

 

(3)创建webService接口UserService

Java代码 复制代码  收藏代码
  1. package com.icsshs.dmis.webservice.soap;  
  2. import javax.jws.WebParam;  
  3. import javax.jws.WebService;  
  4. import com.icsshs.dmis.webservice.soap.response.UserDTO;  
  5. /** 
  6. * JAX-WS2.0的WebService接口定义类 *  
  7. * 使用JAX-WS2.0 annotation设置WSDL中的定义. 
  8. * 使用WSResult及其子类包裹返回结果. 
  9. * 使用DTO传输对象隔绝系统内部领域对象的修改对外系统的影响. 
  10.  
  11. */  
  12. //name 指明wsdl中<wsdl:portType>元素的名称  
  13. @WebService(name = "UserService", targetNamespace = WsConstants.NS)  
  14. public interface UserService {  
  15.   
  16.     //@WebService是必须的;@WebParam不是必须的。  
  17.     //如果没有@WebParam的描述,在wsdl文件内描述的方法中,参数名将变为arg0,arg1…以此类推.  
  18.     public String getUserName(@WebParam(name = "userId")String userId);  
  19.     public UserDTO getUser(@WebParam(name = "userId")String userId);  
  20. }  
package com.icsshs.dmis.webservice.soap;
import javax.jws.WebParam;
import javax.jws.WebService;
import com.icsshs.dmis.webservice.soap.response.UserDTO;
/**
* JAX-WS2.0的WebService接口定义类 * 
* 使用JAX-WS2.0 annotation设置WSDL中的定义.
* 使用WSResult及其子类包裹返回结果.
* 使用DTO传输对象隔绝系统内部领域对象的修改对外系统的影响.
* 
*/
//name 指明wsdl中<wsdl:portType>元素的名称
@WebService(name = "UserService", targetNamespace = WsConstants.NS)
public interface UserService {

	//@WebService是必须的;@WebParam不是必须的。
	//如果没有@WebParam的描述,在wsdl文件内描述的方法中,参数名将变为arg0,arg1…以此类推.
	public String getUserName(@WebParam(name = "userId")String userId);
	public UserDTO getUser(@WebParam(name = "userId")String userId);
}

 

UserService接口实现类:

Java代码 复制代码  收藏代码
  1. package com.icsshs.dmis.webservice.soap;  
  2. import javax.jws.WebService;  
  3. import com.icsshs.dmis.webservice.soap.response.UserDTO;  
  4. /** 
  5. * WebService服务端实现类. 
  6. */  
  7. //serviceName指明WSDL中<wsdl:service>与<wsdl:binding>元素的名称,  
  8. //endpointInterface属性指向Interface类全称.  
  9. @WebService(serviceName = "UserService",   
  10.         endpointInterface = "com.icsshs.dmis.webservice.soap.UserService",  
  11. targetNamespace = WsConstants.NS)  
  12. public class UserServiceImpl implements UserService {  
  13.     @Override  
  14.     public UserDTO getUser(String userId) {  
  15.         UserDTO dto = new UserDTO();  
  16.         dto.setId(Long.parseLong("1001"));  
  17.         dto.setLoginName("dongwq");  
  18.         dto.setName("张三");  
  19.         dto.setEmail("dongwq@qq.com");  
  20.         return dto;  
  21.     }  
  22.   
  23.     @Override  
  24.     public String getUserName(String userId) {  
  25.         return "dongwq";  
  26.     }  
  27. }  
package com.icsshs.dmis.webservice.soap;
import javax.jws.WebService;
import com.icsshs.dmis.webservice.soap.response.UserDTO;
/**
* WebService服务端实现类.
*/
//serviceName指明WSDL中<wsdl:service>与<wsdl:binding>元素的名称,
//endpointInterface属性指向Interface类全称.
@WebService(serviceName = "UserService", 
		endpointInterface = "com.icsshs.dmis.webservice.soap.UserService",
targetNamespace = WsConstants.NS)
public class UserServiceImpl implements UserService {
	@Override
	public UserDTO getUser(String userId) {
		UserDTO dto = new UserDTO();
		dto.setId(Long.parseLong("1001"));
		dto.setLoginName("dongwq");
		dto.setName("张三");
		dto.setEmail("dongwq@qq.com");
		return dto;
	}

	@Override
	public String getUserName(String userId) {
		return "dongwq";
	}
}

 

传输的对象UserDTO类:

Java代码 复制代码  收藏代码
  1. package com.icsshs.dmis.webservice.soap.response;  
  2. import javax.xml.bind.annotation.XmlRootElement;  
  3. import javax.xml.bind.annotation.XmlType;  
  4. import org.apache.commons.lang3.builder.ToStringBuilder;  
  5. import com.icsshs.dmis.webservice.soap.WsConstants;  
  6. /** 
  7. * Web Service传输User信息的DTO.*  
  8. * 只传输外部接口需要的属性.使用JAXB 2.0的annotation标注JAVA-XML映射,尽量使用默认约定.*  
  9. * @XmlRootElement指定User为XML的根元素。User类的属性默认指定映射为@XmlElement。 
  10. * @XmlElement用来定义XML中的子元素。 
  11. * @XmlType-映射一个类或一个枚举类型成一个XML Schema类型 
  12. */  
  13. @XmlRootElement  
  14. @XmlType(name = "User", namespace = WsConstants.NS)  
  15. public class UserDTO {  
  16.     private Long id;  
  17.     private String loginName;  
  18.     private String name;  
  19.     private String email;  
  20.     // 相关get、set方法省略。  
  21. }  
package com.icsshs.dmis.webservice.soap.response;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
import org.apache.commons.lang3.builder.ToStringBuilder;
import com.icsshs.dmis.webservice.soap.WsConstants;
/**
* Web Service传输User信息的DTO.* 
* 只传输外部接口需要的属性.使用JAXB 2.0的annotation标注JAVA-XML映射,尽量使用默认约定.* 
* @XmlRootElement指定User为XML的根元素。User类的属性默认指定映射为@XmlElement。
* @XmlElement用来定义XML中的子元素。
* @XmlType-映射一个类或一个枚举类型成一个XML Schema类型
*/
@XmlRootElement
@XmlType(name = "User", namespace = WsConstants.NS)
public class UserDTO {
	private Long id;
	private String loginName;
	private String name;
	private String email;
	// 相关get、set方法省略。
}

 

统一命名空间类定义:

Java代码 复制代码  收藏代码
  1. public class WsConstants {  
  2.     /**项目内统一的NameSpace定义.**/  
  3.     /**wsdl2java生成客户端代码时默认按定义的namespace倒序生成包路径 **/  
  4.     public static final String NS = "http://soap.webservice.dmis.icsshs.com";  
  5. }  
public class WsConstants {
	/**项目内统一的NameSpace定义.**/
	/**wsdl2java生成客户端代码时默认按定义的namespace倒序生成包路径 **/
	public static final String NS = "http://soap.webservice.dmis.icsshs.com";
}

 

(4)在spring的applicationContext.xml文件中进行配置:

Xml代码 复制代码  收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"   
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xmlns:jaxws="http://cxf.apache.org/jaxws"  
  5.     xsi:schemaLocation="http://cxf.apache.org/jaxws   
  6.     http://cxf.apache.org/schemas/jaxws.xsd   
  7.     http://www.springframework.org/schema/beans   
  8.     http://www.springframework.org/schema/beans/spring-beans-3.1.xsd"  
  9.     default-lazy-init="true">  
  10.   
  11. <description>SOAP Web Service配置</description>  
  12. <!--  
  13. 1、访问接口服务:http://localhost:8080/dmis/cxf/soap/userService?wsdl  
  14. 2、访问接口中的方法:  
  15. http://localhost:8080/dmis/cxf/soap/userService/getUserName?userId=aaa  
  16. 或:http://localhost:8080/dmis/cxf/soap/userService/getUserName?arg0=aaa  
  17. -->  
  18. <!-- jax-ws endpoint定义  -->  
  19. <jaxws:endpoint address="/soap/userService">  
  20. <jaxws:implementor ref="userService" />  
  21. </jaxws:endpoint>  
  22. <!-- WebService的实现Bean定义 -->  
  23. <bean id="userService" class="com.icsshs.dmis.webservice.soap.UserServiceImpl" />  
  24. </beans>  

 

(5)启动web应用,测试webservice应用是否发布成功。

访问:http://localhost:8080/dmis/cxf/soap/userService?wsdl

 

三、基于SOAP的客户端调用


(1)通过代理API调用,依赖于服务端的接口

Java代码 复制代码  收藏代码
  1. /** 
  2. * 通过代理API调用,依赖于服务端的接口 
  3. */  
  4. public static void testClientByProxy(){  
  5.     // 调用WebService  
  6.     JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();  
  7.     factory.setServiceClass(UserService.class);  
  8.     factory.setAddress("http://localhost:8080/dmis/cxf/soap/userService");  
  9.     UserService service = (UserService) factory.create();  
  10.     UserDTO user = service.getUser("1001");  
  11.     System.out.println(user.getName());  
  12. }  
/**
* 通过代理API调用,依赖于服务端的接口
*/
public static void testClientByProxy(){
	// 调用WebService
	JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
	factory.setServiceClass(UserService.class);
	factory.setAddress("http://localhost:8080/dmis/cxf/soap/userService");
	UserService service = (UserService) factory.create();
	UserDTO user = service.getUser("1001");
	System.out.println(user.getName());
}

 

(2)不依赖服务端的接口

Java代码 复制代码  收藏代码
  1. /** 
  2. * 不依赖服务端的接口 
  3. * @throws Exception  
  4. */  
  5. public static void testClient() throws Exception{  
  6.     //不依赖服务器端接口来完成调用的,也就是不仅仅能调用Java的接口   
  7.     JaxWsDynamicClientFactory clientFactory =   
  8.         JaxWsDynamicClientFactory.newInstance();   
  9.     Client client = clientFactory.createClient(  
  10.             "http://localhost:8080/dmis/cxf/soap/userService?wsdl");   
  11.     Object[] result = client.invoke("getUserName""1001");   
  12.     System.out.println(result[0]);  
  13. }  
/**
* 不依赖服务端的接口
* @throws Exception 
*/
public static void testClient() throws Exception{
	//不依赖服务器端接口来完成调用的,也就是不仅仅能调用Java的接口 
	JaxWsDynamicClientFactory clientFactory = 
		JaxWsDynamicClientFactory.newInstance(); 
	Client client = clientFactory.createClient(
			"http://localhost:8080/dmis/cxf/soap/userService?wsdl"); 
	Object[] result = client.invoke("getUserName", "1001"); 
	System.out.println(result[0]);
}

 

(3)先通过wsdl2Java生成客户端代码,再进行调用

Java代码 复制代码  收藏代码
  1. /** 
  2. * 先通过wsdl2Java生成客户端代码,再进行调用 
  3. */  
  4. public static void testClient2() {  
  5.     UserService_Service serivce = new UserService_Service();  
  6.     UserService impl = serivce.getUserServiceImplPort();  
  7.     String userName = impl.getUserName("1001");  
  8.     System.out.println(userName);  
  9. }  
/**
* 先通过wsdl2Java生成客户端代码,再进行调用
*/
public static void testClient2() {
	UserService_Service serivce = new UserService_Service();
	UserService impl = serivce.getUserServiceImplPort();
	String userName = impl.getUserName("1001");
	System.out.println(userName);
}

 

 

四、基于JAX-RS的方式发布WebService


(1)pom.xml文件中导入CXF相关包

Xml代码 复制代码  收藏代码
  1. <dependency>  
  2.     <groupId>org.apache.cxf</groupId>  
  3.     <artifactId>cxf-rt-frontend-jaxrs</artifactId>  
  4.     <version>2.6.2</version>  
  5. </dependency>  
  6. <dependency>  
  7.     <groupId>com.fasterxml.jackson.jaxrs</groupId>  
  8.     <artifactId>jackson-jaxrs-json-provider</artifactId>  
  9.     <version>2.0.5</version>  
  10. </dependency>  

 

(2)web.xml文件中配置,同上

Xml代码 复制代码  收藏代码
  1. <servlet>  
  2. <servlet-name>CXFServlet</servlet-name>       
  3. <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>  
  4. </servlet>  
  5. <servlet-mapping>  
  6. <servlet-name>CXFServlet</servlet-name>  
  7. <url-pattern>/cxf/*</url-pattern>  
  8. </servlet-mapping>  

 

(3)创建webService接口UserJaxRsService

Java代码 复制代码  收藏代码
  1. package com.icsshs.dmis.webservice.jaxrs;  
  2. import java.io.IOException;  
  3. import javax.ws.rs.GET;  
  4. import javax.ws.rs.POST;  
  5. import javax.ws.rs.Path;  
  6. import javax.ws.rs.PathParam;  
  7. import javax.ws.rs.Produces;  
  8. import javax.ws.rs.WebApplicationException;  
  9. import javax.ws.rs.core.MediaType;  
  10. import javax.ws.rs.core.Response;  
  11. import javax.ws.rs.core.Response.Status;  
  12. import org.springframework.beans.factory.annotation.Autowired;  
  13. import com.icsshs.dmis.entity.bi.BiPerson;  
  14. import com.icsshs.dmis.service.bi.BiService;  
  15. import com.icsshs.dmis.webservice.soap.response.UserDTO;  
  16.   
  17. @Path("/user")  
  18. public class UserJaxRsService {  
  19.     @Autowired  
  20.     private BiService biService;//业务系统类接口,省略  
  21.   
  22.     @GET  
  23.     @Path("/{personCode}.xml")  
  24.     @Produces(MediaType.APPLICATION_XML)  
  25.     public UserDTO getAsXml(@PathParam("personCode") String personCode) {  
  26.         BiPerson person = biService.findBiPersonByPersonCode(personCode);  
  27.         if (person == null) {  
  28.             String message = "用户不存在(id:" + personCode + ")";  
  29.             throw buildException(Status.NOT_FOUND, message);  
  30.         }  
  31.         UserDTO dto = new UserDTO();  
  32.         dto.setName(person.getPersonName());  
  33.         dto.setLoginName(person.getR1PersonId());  
  34.         return dto;  
  35.     }  
  36.   
  37.     @GET  
  38.     @Path("/{personCode}.json")  
  39.     @Produces(MediaType.APPLICATION_JSON)  
  40.     public UserDTO getAsJson(@PathParam("personCode") String personCode) {  
  41.         BiPerson person = biService.findBiPersonByPersonCode(personCode);  
  42.         if (personCode == null) {  
  43.             String message = "用户不存在(id:" + personCode + ")";  
  44.             throw buildException(Status.NOT_FOUND, message);  
  45.         }  
  46.         UserDTO dto = new UserDTO();  
  47.         dto.setName(person.getPersonName());  
  48.         dto.setLoginName(person.getR1PersonId());  
  49.         return dto;  
  50.     }  
  51.   
  52.     @POST  
  53.     @Path("/addUser")  
  54.     @Produces( { MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })  
  55.     public UserDTO addUser(UserDTO user) throws IOException {  
  56.         System.out.println(user);  
  57.         user.setName("jojo##12321321");  
  58.         return user;  
  59.     }  
  60.   
  61.     private WebApplicationException buildException(Status status, String message){  
  62.         return new WebApplicationException(Response.status(status).entity(  
  63.             message).type(MediaType.TEXT_PLAIN).build());  
  64.     }  
  65. }  
package com.icsshs.dmis.webservice.jaxrs;
import java.io.IOException;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
import org.springframework.beans.factory.annotation.Autowired;
import com.icsshs.dmis.entity.bi.BiPerson;
import com.icsshs.dmis.service.bi.BiService;
import com.icsshs.dmis.webservice.soap.response.UserDTO;

@Path("/user")
public class UserJaxRsService {
	@Autowired
	private BiService biService;//业务系统类接口,省略

	@GET
	@Path("/{personCode}.xml")
	@Produces(MediaType.APPLICATION_XML)
	public UserDTO getAsXml(@PathParam("personCode") String personCode) {
		BiPerson person = biService.findBiPersonByPersonCode(personCode);
		if (person == null) {
			String message = "用户不存在(id:" + personCode + ")";
			throw buildException(Status.NOT_FOUND, message);
		}
		UserDTO dto = new UserDTO();
		dto.setName(person.getPersonName());
		dto.setLoginName(person.getR1PersonId());
		return dto;
	}

	@GET
	@Path("/{personCode}.json")
	@Produces(MediaType.APPLICATION_JSON)
	public UserDTO getAsJson(@PathParam("personCode") String personCode) {
		BiPerson person = biService.findBiPersonByPersonCode(personCode);
		if (personCode == null) {
			String message = "用户不存在(id:" + personCode + ")";
			throw buildException(Status.NOT_FOUND, message);
		}
		UserDTO dto = new UserDTO();
		dto.setName(person.getPersonName());
		dto.setLoginName(person.getR1PersonId());
		return dto;
	}

	@POST
	@Path("/addUser")
	@Produces( { MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
	public UserDTO addUser(UserDTO user) throws IOException {
		System.out.println(user);
		user.setName("jojo##12321321");
		return user;
	}

	private WebApplicationException buildException(Status status, String message){
		return new WebApplicationException(Response.status(status).entity(
			message).type(MediaType.TEXT_PLAIN).build());
	}
}

 

(4)在spring的applicationContext.xml文件中进行配置:

Xml代码 复制代码  收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"   
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4. xmlns:jaxrs="http://cxf.apache.org/jaxrs"  
  5. xsi:schemaLocation="http://cxf.apache.org/jaxrs   
  6. http://cxf.apache.org/schemas/jaxrs.xsd   
  7. http://www.springframework.org/schema/beans   
  8. http://www.springframework.org/schema/beans/spring-beans-3.1.xsd"  
  9. default-lazy-init="true">  
  10. <description>Apache CXF的Restful Web Service配置</description>  
  11. <!-- jax-rs endpoint定义  -->  
  12. <jaxrs:server id="serviceContainer" address="/jaxrs">  
  13. <jaxrs:serviceBeans>  
  14.     <ref bean="userJaxRsService" />  
  15. </jaxrs:serviceBeans>  
  16. <jaxrs:providers>  
  17.     <bean class="com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider" />  
  18. </jaxrs:providers>  
  19. </jaxrs:server>  
  20. <!-- WebService的实现Bean定义 -->  
  21. <bean id="userJaxRsService"   
  22.       class="com.icsshs.dmis.webservice.jaxrs.UserJaxRsService" />  
  23. </beans>  

 

(5)启动web应用,测试webservice应用是否发布成功。
访问:http://localhost:8080/dmis/cxf/jaxrs?_wadl

 

五、基于JAX-RS的Restful客户端调用

(1)依赖服务端的接口,通过代理API调用 

Java代码 复制代码  收藏代码
  1. /** 
  2. * 依赖服务端的接口 
  3. * 代理API允许你使用RESTful服务的资源类和接口。 
  4. * 代理类是客户端直接调用接口方法,使用户不需要手工创建HTTP请求。 
  5. */  
  6. public static void testClientByProxy(){       
  7.     UserJaxRsService store = JAXRSClientFactory  
  8.             .create("http://localhost:8080/dmis/cxf/jaxrs",   
  9.                     UserJaxRsService.class);  
  10.     System.out.println(store.getAsXml("15811006"));  
  11. }  
/**
* 依赖服务端的接口
* 代理API允许你使用RESTful服务的资源类和接口。
* 代理类是客户端直接调用接口方法,使用户不需要手工创建HTTP请求。
*/
public static void testClientByProxy(){		
	UserJaxRsService store = JAXRSClientFactory
			.create("http://localhost:8080/dmis/cxf/jaxrs", 
					UserJaxRsService.class);
	System.out.println(store.getAsXml("15811006"));
}

 (2)通过HTTP客户端进行调用

Java代码 复制代码  收藏代码
  1. /** 
  2. * HTTP客户端 
  3. * 使用org.apache.cxf.jaxrs.client.WebClient调用RESTful服务 
  4. * 
  5. */  
  6. public static void testClientByHttp(){        
  7.     String format = MediaType.APPLICATION_XML;  
  8.     WebClient client = WebClient.create("http://localhost:8080/dmis/cxf/jaxrs");     
  9.     client.path("/user/15811006.xml").accept(format).type(format);     
  10.     UserDTO user = client.get(UserDTO.class);         
  11.     System.out.println("userName: " + user.getName());        
  12. }  
/**
* HTTP客户端
* 使用org.apache.cxf.jaxrs.client.WebClient调用RESTful服务
*
*/
public static void testClientByHttp(){		
	String format = MediaType.APPLICATION_XML;
	WebClient client = WebClient.create("http://localhost:8080/dmis/cxf/jaxrs");   
	client.path("/user/15811006.xml").accept(format).type(format);   
	UserDTO user = client.get(UserDTO.class); 	    
	System.out.println("userName: " + user.getName());      
}

 

3、通过HTTP客户端进行调用,并传递对象

Java代码 复制代码  收藏代码
  1. /** 
  2. * HTTP客户端(传递对象)   
  3. * 
  4. */  
  5. public static void testClientByObject(){          
  6.     String format = MediaType.APPLICATION_XML;  
  7.     System.out.println("testAddCategory called with format " );     
  8.     WebClient client = WebClient.create("http://localhost:8080/dmis/cxf/jaxrs");     
  9.     client.path("/user/addUser").accept(format).type(format);     
  10.     UserDTO userDTO = new UserDTO();  
  11.     userDTO.setName("userName");  
  12.     userDTO.setLoginName("loginName");  
  13.     UserDTO returnUser = client.post(userDTO,UserDTO.class);          
  14.     System.out.println("userName: " + returnUser.getName()  
  15.             +" lgoinName: "+returnUser.getLoginName());        
  16. }  
/**
* HTTP客户端(传递对象)	 
*
*/
public static void testClientByObject(){		
	String format = MediaType.APPLICATION_XML;
	System.out.println("testAddCategory called with format " );   
	WebClient client = WebClient.create("http://localhost:8080/dmis/cxf/jaxrs");   
	client.path("/user/addUser").accept(format).type(format);   
	UserDTO userDTO = new UserDTO();
	userDTO.setName("userName");
	userDTO.setLoginName("loginName");
	UserDTO returnUser = client.post(userDTO,UserDTO.class); 	    
	System.out.println("userName: " + returnUser.getName()
			+" lgoinName: "+returnUser.getLoginName());      
}

 

注:HTTP客户端调用时,如果不依赖于服务端接口,可通过wsdl2java或wadl2java生成客户端代码。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值