⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 methodresponse.java

📁 1.配置java环境
💻 JAVA
字号:
/**
 * @(#)MethodResponse.java
 * 
 * @author  soda  E-mail:sujun10@21cn.com
 * @version  1.0
 * <br>Copyright (C), 2007 soda.C
 * <br>This program is protected by copyright laws.
 * <br>Program Name:JavaSyncServer
 * <br>Date:2007.1
 */
package org.blue.response;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.blue.xml.HandleXml;
import org.blue.xml.XMLFactory;
import org.blue.bean.SendBean;
import org.blue.remote.Client;
import org.blue.remote.FlashObject;
import org.blue.global.SystemCommon;

/**
 * 客户端调用服务端方法时,会响应该对象方法,服务器内执对象
 * @author soda
 *
 */
public class MethodResponse 
{
	private HandleXml handXml;
	private SendBean bean;
	private SystemCommon system;
	
	public MethodResponse()
	{
		handXml = XMLFactory.getHandleXml();
		bean = new SendBean();
		system = SystemCommon.getSystemCommon();
	}
	
	/**
	 * 
	 * @param client 客户端信息封装对象
	 * @param xml 客户端传过来的字符串信息
	 */
	public void response(Client client,String xml)
	{
		bean.clear();
		bean = handXml.parseCallXml(xml);
		try
		{
			//开始执行反射机制,调用对应对象的方法
			//System.out.println("bean.getServerName():" + bean.getServerName());
			Class objClass = system.getResponseClass(bean.getServerName());
			List params = bean.getParams();
			List paramsType = bean.getParamsTypes();
			int number = params.size();
			Class[] cses = null;
			Object[] objs = null;
			//如果有参数传过来
			if(number != 0)
			{
				cses = new Class[number];
				for(int i = 0; i < number; i++)
				{
					String temp = (String)paramsType.get(i);
					cses[i] = system.getDataClass(temp);
					//System.out.println("cses[i]==========" + cses[i]);
				}
				objs = new Object[number];
				for(int i = 0; i < number; i++)
				{
					objs[i] = params.get(i);
				}
			}
			//System.out.println("11111========================");
			//System.out.println("objClass:" + objClass);
			//System.out.println("bean.getMethod():" + bean.getMethod());
			Method method = objClass.getMethod(bean.getMethod(), cses);
			//System.out.println("22222========================");
			Object obj = objClass.newInstance();
			//System.out.println("333333========================");
			Object objss = method.invoke(obj, objs);
			//System.out.println("objss========================" + objss);
			//如果结果不为空,把结果发送给客户端
			if(objss != null)
			{
				//呼叫客户端,把结果返回给客户端对应的对象的方法
				client.call(bean.getReturnName(),"onResult");

				if(objss.getClass() == String.class)
				{
					client.setParam((String)objss);
				}
				else if(objss.getClass() == Double.class)
				{
					double temp = ((Double)objss).doubleValue();
					client.setParam(temp);
				}
				else if(objss.getClass() == Boolean.class)
				{
					boolean temp = ((Boolean)objss).booleanValue();
					client.setParam(temp);
				}
				else if(objss.getClass() == FlashObject.class)
				{
					FlashObject temp = (FlashObject)objss;
					client.setParam(temp);
				}
				else if(objss.getClass() == HashMap.class)
				{
					//System.out.println("进行封装map");
					Map temp = (Map)objss;
					client.setParam(temp);
				}
				client.send();
			}
		}
		catch(Exception e)
		{
			e.getStackTrace();
			//当远程调用方法异常时,呼叫客户端的异常响应方法
			client.call(bean.getReturnName(),"onFault");
			client.setParam(e.toString());
			client.send();
			System.out.println("出现业务异常!" + e);
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -