`

CXF开发Webservice客户端服务端

 
阅读更多

页面效果(还待完善)

 业务功能

用户下订单(客户端)(可能是多个)把订单重组后(服务端),供客户端调用并展示

1先搭建CXF 环境

<?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:jaxws="http://cxf.apache.org/jaxws"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
 http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
 http://www.springframework.org/schema/aop
 http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
 http://cxf.apache.org/jaxws
 http://cxf.apache.org/schemas/jaxws.xsd"
	default-autowire="byName">
	<!-- 导入CXF的内置Bean -->
	<import resource="classpath:META-INF/cxf/cxf.xml" />
	<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
	<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
	<!-- 服务终端 -->
	<jaxws:endpoint id="test"
		implementor="com.thd2000.coccrm.test.webservice.TestDemoImpl"
		address="/TestDemo" />
	<!-- 客户端登录 -->	
	<bean id="memberlogin"
		class="com.thd2000.coccrm.service.ws.MemberLoginImpl">
		<property name="tbMemberUsersDao" ref="tbMemberUsersDao"></property>
		<property name="tbMembermgtDao" ref="tbMembermgtDao"></property>
	</bean>
	<jaxws:endpoint id="memberloginService"
		implementor="#memberlogin" address="/MemberLogin"/>
	<!-- 客户端修改密码 -->	
	<bean id="modifypassword"
		class="com.thd2000.coccrm.service.ws.ModifyMemberPasswordImpl">
		<property name="tbMemberUsersDao" ref="tbMemberUsersDao"></property>
	</bean>
	<jaxws:endpoint id="modifypasswordService"
		implementor="#modifypassword" address="/ModifyPassword"/>
	<!-- 客户端订单信息展现 -->	
	<bean id="memberOrderList"
		class="com.thd2000.coccrm.service.ws.MemberOrderListImpl">
		<property name="tbMemberUsersDao" ref="tbMemberUsersDao"></property>
		<property name="tbMembermgtDao" ref="tbMembermgtDao"></property>
		<property name="tbMemberDao" ref="tbMemberDao"></property>
		<property name="tbOrderDao" ref="tbOrderDao"></property>
	</bean>
	<jaxws:endpoint id="memberOrderListService"
		implementor="#memberOrderList" address="/MemberOrderList"/>

</beans>

 

2服务端接口

 

package com.thd2000.coccrm.service.ws;

import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;

@WebService
public interface MemberOrderList {

	
	@WebResult(name="String")
	public String getMemberOrderList(@WebParam(name = "memberuserid")String memberuserid) throws Exception ;
}

3 服务端接口实现类
package com.thd2000.coccrm.service.ws;

import java.util.Set;

import javax.jws.WebService;
import com.thd2000.coccrm.dao.tbmember.TbMemberDao;
import com.thd2000.coccrm.dao.tbmembermgt.TbMembermgtDao;
import com.thd2000.coccrm.dao.tbmemberusers.TbMemberUsersDao;
import com.thd2000.coccrm.dao.tborder.TbOrderDao;
import com.thd2000.coccrm.model.TbMember;
import com.thd2000.coccrm.model.TbMemberUsers;
import com.thd2000.coccrm.model.TbMembermgt;
import com.thd2000.coccrm.model.TbOrder;
import com.thd2000.coccrm.util.DateUtil;


@WebService
public class MemberOrderListImpl implements MemberOrderList {
	
	private TbMemberUsersDao tbMemberUsersDao ;
	private TbMembermgtDao tbMembermgtDao;	
	private TbMemberDao tbMemberDao;	
	private TbOrderDao tbOrderDao ;


	public String getMemberOrderList(String memberuserid) throws Exception {
		//第一步  通过会员用户主键ID获得会员用户对象
		TbMemberUsers tbMemberUsers = (TbMemberUsers) tbMemberUsersDao.get(TbMemberUsers.class, memberuserid);
		//第二步 通过会员用户获得会员主表对象
		TbMembermgt tbMembermgt = tbMemberUsers.getTbMembermgt();
		//第三步 通过会员主表获得会员明细集合(Set)
		Set<TbMember> tbMemberSet = tbMembermgt.getTbMemberSet();
		//第四步 在会员明细集合中需要获得每个会员对应的订单集合 同时需要重新组装一个订单集合
		if (tbMemberSet != null && tbMemberSet.size() > 0) {
			for (TbMember tbMember : tbMemberSet) {
				if (tbMember != null) {
					//遍历会员中的订单集合
					Set<TbOrder> tbOrderSet = tbMember.getOrders();
					//遍历订单集合中的字段
					StringBuilder xmlResult=new StringBuilder("<?xml version='1.0' encoding='UTF-8'?>");
//增加<ORDERS>作为一级根节点,因为< ORDER >可能有多个,程序无法找到根节点 同时使用i 变量区分不同的节点,避免使用for循环 或迭代循环,引发的性能问题
					xmlResult.append("<ORDERS>");
					int i = 1;
					for(TbOrder tbOrder :tbOrderSet) {	
						String orderid = tbOrder.getOrderid();
						String ordercode = tbOrder.getOrdercode();
						String ordername = tbOrder.getOrderName();
						String placeorganplace = tbMember.getTsOrganizationplace().getOrganname();
						String createdate = DateUtil.format(tbOrder.getCreatedate(), "yyyy-MM-dd");
						String ispaymoney = tbOrder.getIspaymoney();//1已缴费0未缴费

						xmlResult.append("<ORDER"+ i +">");
						xmlResult.append("<Orderid>" + orderid + "</Orderid>");
						xmlResult.append("<Ordercode>" + ordercode + "</Ordercode>");
						xmlResult.append("<Ordername>" + ordername + "</Ordername>");
						xmlResult.append("<Placeorganplace>" + placeorganplace + "</Placeorganplace>");
						xmlResult.append("<Createdate>" + createdate + "</Createdate>");
						if ("1".equals(ispaymoney)) {
							xmlResult.append("<Ispaymoney>已缴费</Ispaymoney>");
						}else if ("0".equals(ispaymoney)) {
							xmlResult.append("<Ispaymoney>未缴费</Ispaymoney>");
						}
						xmlResult.append("</ORDER"+ i +">");
						i++;
					}
					xmlResult.append("</ORDERS>");
					return xmlResult.toString();
				}
			}
		}
		return "orderlist";
	}
		
	

	public TbMemberUsersDao getTbMemberUsersDao() {
		return tbMemberUsersDao;
	}

	public void setTbMemberUsersDao(TbMemberUsersDao tbMemberUsersDao) {
		this.tbMemberUsersDao = tbMemberUsersDao;
	}

	public TbMembermgtDao getTbMembermgtDao() {
		return tbMembermgtDao;
	}

	public void setTbMembermgtDao(TbMembermgtDao tbMembermgtDao) {
		this.tbMembermgtDao = tbMembermgtDao;
	}

	public TbMemberDao getTbMemberDao() {
		return tbMemberDao;
	}

	public void setTbMemberDao(TbMemberDao tbMemberDao) {
		this.tbMemberDao = tbMemberDao;
	}

	public TbOrderDao getTbOrderDao() {
		return tbOrderDao;
	}

	public void setTbOrderDao(TbOrderDao tbOrderDao) {
		this.tbOrderDao = tbOrderDao;
	}

}

 3服务端接口实现类

package com.thd2000.coccrm.service.ws;

import java.util.Set;

import javax.jws.WebService;
import com.thd2000.coccrm.dao.tbmember.TbMemberDao;
import com.thd2000.coccrm.dao.tbmembermgt.TbMembermgtDao;
import com.thd2000.coccrm.dao.tbmemberusers.TbMemberUsersDao;
import com.thd2000.coccrm.dao.tborder.TbOrderDao;
import com.thd2000.coccrm.model.TbMember;
import com.thd2000.coccrm.model.TbMemberUsers;
import com.thd2000.coccrm.model.TbMembermgt;
import com.thd2000.coccrm.model.TbOrder;
import com.thd2000.coccrm.util.DateUtil;


@WebService
public class MemberOrderListImpl implements MemberOrderList {
	
	private TbMemberUsersDao tbMemberUsersDao ;
	private TbMembermgtDao tbMembermgtDao;	
	private TbMemberDao tbMemberDao;	
	private TbOrderDao tbOrderDao ;


	public String getMemberOrderList(String memberuserid) throws Exception {
		//第一步  通过会员用户主键ID获得会员用户对象
		TbMemberUsers tbMemberUsers = (TbMemberUsers) tbMemberUsersDao.get(TbMemberUsers.class, memberuserid);
		//第二步 通过会员用户获得会员主表对象
		TbMembermgt tbMembermgt = tbMemberUsers.getTbMembermgt();
		//第三步 通过会员主表获得会员明细集合(Set)
		Set<TbMember> tbMemberSet = tbMembermgt.getTbMemberSet();
		//第四步 在会员明细集合中需要获得每个会员对应的订单集合 同时需要重新组装一个订单集合
		if (tbMemberSet != null && tbMemberSet.size() > 0) {
			for (TbMember tbMember : tbMemberSet) {
				if (tbMember != null) {
					//遍历会员中的订单集合
					Set<TbOrder> tbOrderSet = tbMember.getOrders();
					//遍历订单集合中的字段
					StringBuilder xmlResult=new StringBuilder("<?xml version='1.0' encoding='UTF-8'?>");
//增加<ORDERS>作为一级根节点,因为< ORDER >可能有多个,程序无法找到根节点 同时使用i 变量区分不同的节点,避免使用for循环 或迭代循环,引发的性能问题
					xmlResult.append("<ORDERS>");
					int i = 1;
					for(TbOrder tbOrder :tbOrderSet) {	
						String orderid = tbOrder.getOrderid();
						String ordercode = tbOrder.getOrdercode();
						String ordername = tbOrder.getOrderName();
						String placeorganplace = tbMember.getTsOrganizationplace().getOrganname();
						String createdate = DateUtil.format(tbOrder.getCreatedate(), "yyyy-MM-dd");
						String ispaymoney = tbOrder.getIspaymoney();//1已缴费0未缴费

						xmlResult.append("<ORDER"+ i +">");
						xmlResult.append("<Orderid>" + orderid + "</Orderid>");
						xmlResult.append("<Ordercode>" + ordercode + "</Ordercode>");
						xmlResult.append("<Ordername>" + ordername + "</Ordername>");
						xmlResult.append("<Placeorganplace>" + placeorganplace + "</Placeorganplace>");
						xmlResult.append("<Createdate>" + createdate + "</Createdate>");
						if ("1".equals(ispaymoney)) {
							xmlResult.append("<Ispaymoney>已缴费</Ispaymoney>");
						}else if ("0".equals(ispaymoney)) {
							xmlResult.append("<Ispaymoney>未缴费</Ispaymoney>");
						}
						xmlResult.append("</ORDER"+ i +">");
						i++;
					}
					xmlResult.append("</ORDERS>");
					return xmlResult.toString();
				}
			}
		}
		return "orderlist";
	}
		
	

	public TbMemberUsersDao getTbMemberUsersDao() {
		return tbMemberUsersDao;
	}

	public void setTbMemberUsersDao(TbMemberUsersDao tbMemberUsersDao) {
		this.tbMemberUsersDao = tbMemberUsersDao;
	}

	public TbMembermgtDao getTbMembermgtDao() {
		return tbMembermgtDao;
	}

	public void setTbMembermgtDao(TbMembermgtDao tbMembermgtDao) {
		this.tbMembermgtDao = tbMembermgtDao;
	}

	public TbMemberDao getTbMemberDao() {
		return tbMemberDao;
	}

	public void setTbMemberDao(TbMemberDao tbMemberDao) {
		this.tbMemberDao = tbMemberDao;
	}

	public TbOrderDao getTbOrderDao() {
		return tbOrderDao;
	}

	public void setTbOrderDao(TbOrderDao tbOrderDao) {
		this.tbOrderDao = tbOrderDao;
	}

}

 

4.客户端JavaBean (根据所需要的字段重组实体类) 之前还把服务端的JavaBean引到客户端写,完全没必要,客户端根据所需字段重组JavaBean,此时客户端JavaBean就是个临时的JavaBean容器

 

package com.hzfy.jtjyt.jtwz.pojo;


public class TbOrder implements java.io.Serializable {

	private static final long serialVersionUID = -6312605219384298844L;
	// Fields
	/** 订单主键ID */
	private String orderid;
	/** 订单编号 */
	private String ordercode;
	/** 订单名称 */
	private String ordername;
	

	/** 所属园所  */
	private String organplacename;
	/** 创建日期 */
	private String createdate;
	/** 是否缴费(1已缴费0未缴费) */
	private String ispaymoney;
	
	public String getOrderid() {
		return orderid;
	}
	
	public void setOrderid(String orderid) {
		this.orderid = orderid;
	}
	public String getOrdercode() {
		return ordercode;
	}
	public void setOrdercode(String ordercode) {
		this.ordercode = ordercode;
	}
	
	
	public String getOrdername() {
		return ordername;
	}

	public void setOrdername(String ordername) {
		this.ordername = ordername;
	}

	public String getOrganplacename() {
		return organplacename;
	}
	public void setOrganplacename(String organplacename) {
		this.organplacename = organplacename;
	}
	

	public String getCreatedate() {
		return createdate;
	}

	public void setCreatedate(String createdate) {
		this.createdate = createdate;
	}

	public String getIspaymoney() {
		return ispaymoney;
	}

	public void setIspaymoney(String ispaymoney) {
		this.ispaymoney = ispaymoney;
	}
	
}

 

5 客户端Action

 

 

public void showOrderList(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) throws Exception {
		String forwardPath = "";
		String memberuserid = request.getParameter("memberuserid");//
		//调用Webservice登陆验证
		
		JaxWsDynamicClientFactory dynamicClient = JaxWsDynamicClientFactory.newInstance();  
		Client client = dynamicClient.createClient("http://localhost:8281/cxf/MemberOrderList?wsdl");
	    Object[] o = client.invoke("getMemberOrderList", new Object[]{memberuserid});
	   
		ArrayList<Object> list=new ArrayList();
		if(!"orderlist".equalsIgnoreCase(o[0].toString())){
		   Document document = DocumentHelper.parseText(o[0].toString());//将string转成xml
		   Element root = document.getRootElement();  //获取文档的根元素
		   //定义个保存输出xml数据的缓冲字符串对象 
	        StringBuffer sb = new StringBuffer(); 
		    sb.append(o[0].toString() + "\n"); 
		    //遍历当前元素(在此是根元素)的子元素 
	        for (Iterator i_pe = root.elementIterator(); i_pe.hasNext();) { 
	        	
	            Element e_pe = (Element) i_pe.next(); 
	            //获取当前元素的名字 
	           
	            String orderid = e_pe.elementTextTrim("Orderid"); 
                String ordercode = e_pe.elementTextTrim("Ordercode");
                String ordername = e_pe.elementTextTrim("Ordername"); 
                String placeorganplace = e_pe.elementTextTrim("Placeorganplace");
                String createdate = e_pe.elementTextTrim("Createdate"); 
                String ispaymoney = e_pe.elementTextTrim("Ispaymoney"); 
                
                TbOrder order = new TbOrder();
                order.setOrderid(orderid);
                order.setOrdercode(ordercode);
                order.setOrdername(ordername);
                order.setOrganplacename(placeorganplace);
                order.setCreatedate(createdate);
                order.setIspaymoney(ispaymoney);
                
                list.add(order);
	            
	        }
			request.setAttribute("list", list);
			forwardPath = "/jtwz/jtwz_wzsj/coccrm/orderlist.jsp";
			
			request.getRequestDispatcher(forwardPath).forward(request, response);
			return ;
		}else{
			forwardPath = "/jtwz/jtwz_wzsj/coccrm/message/list_tishi.jsp";
			request.getRequestDispatcher(forwardPath).forward(request, response);
		    return;
		}
	}

 

 

 

  • 大小: 153.6 KB
分享到:
评论

相关推荐

    Java cxf开发webservice,分别有客户端和服务端

    2.用cxf开发webservice 3.这个服务端和客户端的小demo 在服务端 对外开放接口服务,然后在客户端 调用服务端的方法, 实现客户端(一个javaweb项目)对服务端(javaweb项目)方法的调用, 实际上就是发送和接收消息...

    CXF开发webservice服务端

    ### CXF 开发 WebService 服务端详解 #### 一、引言 随着企业级应用对服务化的不断追求,Web Service 成为了实现不同系统间通信的重要手段之一。Apache CXF 是一个高性能、易于使用的框架,它支持多种协议,如SOAP...

    CXF 一个完整的webService(整合客户端和服务端)

    CXF不仅简化了Web服务的开发,而且允许开发者无缝地在客户端和服务端之间切换,从而实现双向通信。 **1. CXF入门** 对于初学者,了解CXF的基本概念是至关重要的。CXF基于JAX-WS(Java API for XML Web Services)...

    cxf开发webservice客户端

    本篇文章将详细讲解如何利用CXF来开发一个Webservice客户端,我们将探讨CXF的核心概念、配置过程以及客户端的创建步骤。 1. **CXF概述** Apache CXF是一个强大的Web服务框架,它支持多种Web服务规范,如SOAP、...

    springboot整合CXF发布webservice和客户端调用

    它允许开发者以Java注解或XML方式定义服务接口,并提供了丰富的客户端和服务端工具。 3. **整合过程** - 首先,我们需要在`pom.xml`中添加CXF和SpringBoot的相关依赖。 - 创建一个服务接口,使用JAX-WS注解如`@...

    03.使用CXF开发WebService客户端

    在IT行业中,Web Service是一种基于网络的、松散耦合的软件组件交互方式,它允许不同的应用...使用CXF开发WebService客户端.wmv"会更深入地展示这一过程,提供实际操作的步骤和示例,帮助你更好地理解和掌握这项技术。

    cxf开发webservice服务端

    【标题】:“CXF开发Web服务端” 在Java世界中,Apache CXF是一个流行的开源框架,用于构建和部署Web服务。它支持多种Web服务规范,包括SOAP、RESTful API以及WS-*扩展。CXF允许开发者以Java SE或Java EE环境轻松...

    webservice cxf 服务端客户端传递参数的例子demo

    下面我们将深入探讨"webservice CXF 服务端客户端传递参数的例子demo"。 1. **CXF框架介绍** CXF是一个Java框架,它允许开发者通过简单的API来创建和使用Web服务。CXF支持多种Web服务标准,如WS-I Basic Profile、...

    cxf+spring开发webservice客户端与服务端实例

    本实例将详细阐述如何利用CXF和Spring来构建Web服务的客户端和服务端。 一、CXF简介 CXF是一个开源的Java框架,专门用于构建和消费Web服务。它支持SOAP、RESTful等多种服务模型,并且可以方便地与Spring框架集成,...

    CXF建立webservice服务端和客户端

    CXF(CXF: Composite eXtensible Services Framework)是一个开源的Java框架,主要用于构建和开发Web服务。它支持多种Web服务标准,如SOAP、RESTful API、WS-*规范等,使得开发者能够轻松地创建服务端和客户端应用...

    使用cxf和spring开发基于https的webservice服务端以及客户端样例

    在服务端开发中,首先,我们需要在Spring配置文件中定义CXF的Servlet,指定其监听的URL和处理的WS-DSL文件。接着,创建一个接口定义Web服务的合同,然后实现这个接口。服务端的实现类可以被Spring管理,利用注解如`@...

    使用CXF开发WebService服务器端和客户端

    开发WebService客户端** - **生成客户端代码**:CXF提供wsdl2java工具,可以从WSDL文件生成客户端所需的Java类和配置。 - **配置客户端**:配置客户端代理,设置服务地址等信息。 - **调用服务**:通过生成的客户端...

    java webservice 客户端、服务端生成工具

    总结,Java WebService客户端和服务端生成工具是开发Web服务不可或缺的辅助手段。理解并掌握这些工具的使用,能够大大提高开发效率,使开发者更加专注于业务功能的实现。通过批处理文件修改WSLD路径,可以灵活地适应...

    cxf webservice简单例子 服务端 客户端

    本教程将基于CXF构建一个简单的Web服务,包括服务端和客户端的实现。我们将使用CXF提供的工具和服务接口来创建服务,然后通过客户端调用来验证服务的正确性。 ### 1. CXF简介 CXF是Apache软件基金会的一个项目,它...

    搭建WebService服务端和客户端的jar报

    三、创建WebService客户端 1. 生成客户端代理类:CXF提供了wsdl2java工具,可以将服务端的WSDL文档转换为Java客户端代码,生成服务代理类和数据模型类。 2. 引入依赖:同样需要引入CXF客户端的相关jar包,如cxf-rt-...

    cXF实现webservice 服务端和客户端

    本教程将深入探讨如何使用CXF来实现WebService服务端和客户端,帮助开发者更好地理解和应用这一强大的工具。 一、CXF概述 CXF是一个全方位的Web服务框架,它集成了多种协议和技术,如SOAP、REST、WS-*规范等,提供...

    springboot+webservice搭建webservice服务端及使用java客户端两种方式进行调用webservice接口

    本教程将讲解如何使用Spring Boot集成Apache CXF(一个强大的Java Web Service框架)来构建服务端,并探讨两种Java客户端调用Web Service接口的方法。 首先,我们需要理解Spring Boot与CXF的整合。Spring Boot通过...

    WebService开发服务端的两种方式:jdk、cxf

    2. **服务端开发步骤**: - **定义服务接口**:首先,我们需要定义一个Java接口,该接口包含了服务的方法。 - **创建服务实现类**:实现上述接口,编写服务的具体逻辑。 - **创建WSDL文件**:JAX-WS会自动生成...

    ssm+cxf(基于Maven开发的ssm框架集成cxf发布web service服务)

    作为一个刚学java,被抓壮丁的写服务器端的妹子,我只想说,画了我3周才解决了所有的错误啊,真的要自己因为不懂乱写乱改的时候遇到的那些莫名其妙的错误,因此对android客户端的好感上升了不止一个Level啊....

Global site tag (gtag.js) - Google Analytics