webservice的axis2客户端调用方式和xfire调用方式
1、axis2调用方式: package com.shine.fund; import javax.xml.namespace.QName; import org.apache.axis2.AxisFault; import org.apache.axis2.addressing.EndpointReference; import org.apache.axis2.client.Options; import org.apache.axis2.rpc.client.RPCServiceClient; import com.shine.eframe.webapp.bean.BaseBean; public class TestWS extends BaseBean { ?? ?/** ?? ? * @param args ?? ? * @throws AxisFault ?? ? */ ?? ?public static void main(String[] args)? { ?? ??? ?// TODO Auto-generated method stub ?? ??? ?try{ ?? ??? ?String serviceUrl = "http://127.0.0.1:8080/eospexService/ws/eospexService_UtilFundNavCtrl?wsdl"; ??????? // 调用发送 ??????? Object[] result; ?????? ? ??????? //使用RPC方式调用WebService ??????? RPCServiceClient serviceClient = new RPCServiceClient(); ??????? Options options = serviceClient.getOptions(); ??????? EndpointReference targetEPR = new EndpointReference(serviceUrl); ??????? options.setTo(targetEPR); ??????? String sessionId = "22f92a5ff3bf8f45dab6a9190c7bc5a9"; ??????? //String sessionId = currentServiceSessionId(); ??????? // 指定要调用的method方法及WSDL文件的命名空间 ??????? //WSDL文件的命名空间<wsdl:definitions>元素的targetNamespace属性值 ??????? QName opAddEntry = new QName("http://ctrl.fund.shine.com/","getWSResultList"); ??????? String date = "20150501"; ??????? Object[] params = new Object[] {sessionId,date? }; ??????? Class[] returnClass = new Class[] { String.class}; ??????? // 调用method方法并输出该方法的返回值 ??????? result = serviceClient.invokeBlocking(opAddEntry,params,returnClass); ??????? System.out.println("111"); ??????? System.out.println(result[0]); ?? ??? ?} ?? ??? ?catch(Exception e){ ?? ??? ??? ? ?? ??? ?} ?? ?} } 2、xfire调用方式: package com.shine.eframe.test; import java.net.MalformedURLException; import java.net.URL; import java.util.List; import javax.xml.namespace.QName; import org.apache.axis2.AxisFault; import org.apache.axis2.addressing.EndpointReference; import org.apache.axis2.client.Options; import org.apache.axis2.rpc.client.RPCServiceClient; import org.codehaus.xfire.client.Client; import org.codehaus.xfire.client.XFireProxyFactory; import org.codehaus.xfire.service.Service; import org.codehaus.xfire.service.binding.ObjectServiceFactory; import com.shine.eframe.app.right.model.BaseAppInfoDTO; import com.shine.eframe.esm.dto.LoginResultDTO; import com.shine.eframe.rightmanage.ctrl.AppInfoCtrl; import com.shine.eframe.rightmanage.dto.AppInfoDTO; import com.shine.eframe.rightmanage.dto.ParamInfoDTO; import com.shine.pub.query.ShineQueryInfo; import com.shine.pub.query.ShineRowSet; import com.shine.pub.query.ShineRowSetHelper; import com.shine.pub.test.BaseSpringTest; public class XFireTest extends BaseSpringTest { ??? public String getPackageMsg() { ??????? return "<?xml version="1.0" encoding="GB2312"?><ipmp><head><busiCode>20001</busiCode></head><body><settleCode>1</settleCode><timestamp>20141521 03:15:45</timestamp><instructionId>ZLSnull20140121null</instructionId><busiType>40203</busiType><orderingAccount>11001007200059507029</orderingAccount><orderingAccountName>宏源证券股份有限公司</orderingAccountName><orderingOpenBank>建行北京西四支行营业部(支付系统行号:105100003023)</orderingOpenBank><orderingElecBankCode>对方资金开户行联行行号</orderingElecBankCode><orderingCurrency>CNY</orderingCurrency><beneficiaryAccountName>本方账户名称</beneficiaryAccountName><beneficiaryAccount>BFZH0001</beneficiaryAccount><beneficiaryOpenBank>本方开户行</beneficiaryOpenBank><beneficiaryPaySystemId>1234</beneficiaryPaySystemId><beneficiaryElecBankCode>5678</beneficiaryElecBankCode><beneficiaryCurrency>CNY</beneficiaryCurrency><payAmount>150032.88</payAmount><payDate>20120406</payDate><payUsage>卖券080025A100000001</payUsage><remark>卖券080025A100000001</remark></body></ipmp>"; ??? } ??? public void testCallWs() throws Exception { ??????? try { ? ??????????? // 获取properties中的配置url地址 ? ??????????? String serviceUrl = "http://10.168.2.114:8080/EFrameCoreService/ws/EFrameCore_AppInfoCtrl";// 新增 ? ??????????? Service serviceModel = new ObjectServiceFactory().create( ? ??????????????????? AppInfoCtrl.class,null,serviceUrl + "?wsdl",null); ? ??????????? AppInfoCtrl service = (AppInfoCtrl) new XFireProxyFactory() ? ??????????????????? .create(serviceModel,serviceUrl); ? ?????????? // AppInfoCtrl ??????????? AppInfoDTO appInfo = (AppInfoDTO)service.getAppInfo("44faafb34ca91cf4f4a933de6c20942c",1); ??????????? /*XFireProxy proxy = (XFireProxy) Proxy.getInvocationHandler(service); ? ??????????? Client client = proxy.getClient(); ? ??????????? // 发送授权信息 ? ??????????? client.addOutHandler(new ClientAuthenticationHandler("admin",? ??????????????????? "admin"));? */ ??????????? // 输出调用web services方法的返回信息 ? ??????????? System.out.println(appInfo); ? ??????? } catch (MalformedURLException e) { ? ??????????? e.printStackTrace(); ? ??????? } catch (IllegalArgumentException e) { ? ??????????? e.printStackTrace(); ? ??????? } ? ??? } ?? ? ??? public void testWs() throws Exception { ??????? try { ? ??????????? // 获取properties中的配置url地址 ? ??????????? String serviceUrl = "http://10.168.3.125:8080/EsmService/ws/Esm_ServiceManagerCtrl?wsdl"; ??????????? Client c = new Client(new URL(serviceUrl)); ??????????? //OperationInfo op = new OperationInfo; ??????????? //c.invoke(op,params) ?????????? // AppInfoCtrl ??????????? Object[] results = c.invoke("login",new Object[] {null,"TestHost","11974d21ede5455869e039e14814ff22",null }); ??????????? /*XFireProxy proxy = (XFireProxy) Proxy.getInvocationHandler(service); ? ??????????? Client client = proxy.getClient(); ? ??????????? // 发送授权信息 ? ??????????? client.addOutHandler(new ClientAuthenticationHandler("admin",? ??????????????????? "admin"));? */ ??????????? // 输出调用web services方法的返回信息 ? ??????? } catch (MalformedURLException e) { ? ??????????? e.printStackTrace(); ? ??????? } catch (IllegalArgumentException e) { ? ??????????? e.printStackTrace(); ? ??????? } ? ??? } ?? ? ?? ? ??? public void testWebservice1() { ??????? /*String userCode = "TestHost"; ??????? String password = "11974d21ede5455869e039e14814ff22"; ??????? Client client = new Client(new URL("http://127.0.0.1:8123/EsmService/ws/Esm_ServiceManagerCtrl?wsdl")); ??????? Object[] loginParam = { null,userCode,password,null }; ??????? Object[] results = client.invoke("login",loginParam); ??????? System.out.println(results);*/ ??? } ?? ? ?? ? ?? ? ??? public void testCallAppInfo() throws Exception { ??????? // 登录 ?????????? String sessionId = "e1440c8a9030138d2f44cf60174d9f76"; ?????????? // 调用 ?????????? String serviceUrl = "http://10.168.2.56:8123/EFrameCoreService/ws/EFrameCore_AppInfoCtrl?wsdl"; ?????????? // 调用发送 ?????????? Object[] result; ?????????? result = invokeWsService(sessionId,serviceUrl,"getAppInfo","http://app.shine.com/eframecore/services",? new Object[] { ?????????????????? sessionId,1 },new Class[] { String.class }); ?????????? System.out.print(result[0]); ?????? } ?? ? ?? ? ?? ? ??? /** ???? * 调用服务方法,根据自己的需求进行修改 ???? * ???? * @param domain 服务域 ???? * @param serviceName 服务名 ???? * @return 方法调用返回值 ???? * @throws Exception ???? * ???? *???????????? <pre> ???? * 修改日期??????? 修改人??? 修改原因 ???? * 2013-3-17?? wuhanchu??? 新建 ???? * </pre> ???? */ ??? private Object[] invokeWsService(String sessionId,String serviceUrl,String mothodName,String namespace,??????????? Object[] param,Class[] returnValueClass) throws Exception { ??????? // 使用RPC方式调用WebService ??????? RPCServiceClient serviceClient = new RPCServiceClient(); ??????? Options options = serviceClient.getOptions(); ??????? // 指定调用WebService的URL //??????? EndpointReference targetEPR = new EndpointReference("http://" + jbossIp + ":" + jbossPort + "/" + domain //??????????????? + "/ws/" + serviceName + "?wsdl"); ??????? EndpointReference targetEPR = new EndpointReference(serviceUrl); ??????? options.setTo(targetEPR); ??????? // 指定要调用的method方法及WSDL文件的命名空间 ??????? QName opAddEntry = new QName("http://ctrl.eipmp.shine.com/",mothodName); ??????? // 调用method方法并输出该方法的返回值 ??????? return serviceClient.invokeBlocking(opAddEntry,param,returnValueClass); ??? } ?? ? ?? ? ??? public void testInvokeWs() throws AxisFault,InterruptedException { ??????? while(true) { ?????????? ? ??????????? String serviceUrl = "http://10.168.3.126:8080/EsmService/ws/Esm_ServiceManagerCtrl?wsdl"; ??????????? // 调用发送 ??????????? Object[] result; ?????????? ? ??????????? //使用RPC方式调用WebService ??????????? RPCServiceClient serviceClient = new RPCServiceClient(); ??????????? Options options = serviceClient.getOptions(); ??????????? EndpointReference targetEPR = new EndpointReference(serviceUrl); ??????????? options.setTo(targetEPR); ?? ? ??????????? // 指定要调用的method方法及WSDL文件的命名空间 ??????????? QName opAddEntry = new QName("http://app.shine.com/","login"); ??????????? Object[] params = new Object[] {null,null }; ??????????? Class[] returnClass = new Class[] { LoginResultDTO.class}; ??????????? // 调用method方法并输出该方法的返回值 ??????????? result = serviceClient.invokeBlocking(opAddEntry,returnClass); ??????????? System.out.println(result[0]); ??????????? Thread.sleep(200); ??????? } ????? ? ??? } ?? ? ?? ? ??? public void testInvokeWs1() throws AxisFault { ??????? String serviceUrl = "http://127.0.0.1:8080/EFrameCoreService/ws/EFrameCore_ParamInfoCtrl?wsdl"; ??????? // 调用发送 ??????? Object[] result; ?????? ? ??????? //使用RPC方式调用WebService ??????? RPCServiceClient serviceClient = new RPCServiceClient(); ??????? Options options = serviceClient.getOptions(); ??????? EndpointReference targetEPR = new EndpointReference(serviceUrl); ??????? options.setTo(targetEPR); ??????? String sessionId = "c9fe9905cec15d81278c74639da42636"; ??????? // 指定要调用的method方法及WSDL文件的命名空间 ??????? QName opAddEntry = new QName("http://app.shine.com/","getParamValueByParamCode"); ??????? Object[] params = new Object[] {sessionId,"CAS_FRAME_DEF" }; ??????? Class[] returnClass = new Class[] { String.class}; ??????? // 调用method方法并输出该方法的返回值 ??????? result = serviceClient.invokeBlocking(opAddEntry,returnClass); ??????? System.out.println(result[0]); ????? ? ??? } ?? ? ?? ? ?? ? ??? public void testA() { ??????? String serviceUrl = "http://10.168.2.114:8080/EFrameCoreService/ws/EFrameCore_AppInfoCtrl"; ??????? Service serviceModel = new ObjectServiceFactory().create(AppInfoCtrl.class,"http://10.168.2.114:8080/EFrameCoreService/ws/EFrameCore_AppInfoCtrl?wsdl",null); ??????? XFireProxyFactory serviceFactory = new XFireProxyFactory(); ??????? try{ ??????????? String sessionId = "262b73aacb60eb973e9598552bcd5f5b"; ??????????? AppInfoCtrl service = (AppInfoCtrl)serviceFactory.create(serviceModel,serviceUrl); ??????????? BaseAppInfoDTO appInfo = service.getAppInfo(sessionId,1); ??????????? System.out.println(appInfo.getAppName()); ??????? } catch(Exception e){ ??????????? e.printStackTrace(); ??????? } ?????? ? ??? } ?? ? ??? public void testAB() { ??????? List<ParamInfoDTO> etParamInfoList = null; ??????? String serviceUrl = "http://127.0.0.1:8080/EFrameCoreService/ws/EFrameCore_ParamInfoCtrl?wsdl"; ??????? // 调用发送 ??????? Object[] result; ??????? try{ ??????????? //使用RPC方式调用WebService ??????????? RPCServiceClient serviceClient = new RPCServiceClient(); ??????????? Options options = serviceClient.getOptions(); ?????????? ? ??????????? EndpointReference targetEPR = new EndpointReference(serviceUrl); ??????????? options.setTo(targetEPR); ??????????? String sessionId = "262b73aacb60eb973e9598552bcd5f5b"; ?????????? ? ??????????? // 指定要调用的method方法及WSDL文件的命名空间 ??????????? QName opAddEntry = new QName("http://pub.shine.com/","queryParamInfo"); ??????????? ShineQueryInfo queryInfo = new ShineQueryInfo(10); ??????????? Object[] params = new Object[] {sessionId,"","01","1",queryInfo}; ??????????? Class[] returnClass = new Class[] { String.class,Integer.class,String.class,ShineQueryInfo.class}; ??????????? // 调用method方法并输出该方法的返回值 ??????????? result = serviceClient.invokeBlocking(opAddEntry,returnClass); ??????????? System.out.println(result[0]); ?????????? // etParamInfoList = (List<ParamInfoDTO>)result[0]; ??????? } catch (AxisFault e) { ??????????? e.printStackTrace(); ??????? } ??? } ?? ? } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 地理位置 – 使用Ionic Framework,AngularJS和Google API
- angular – Renderer multiple selectRootElement Issue(提
- angularjs – 使用没有值的ng-app
- scala – 无法使用案例类从RDD的Row创建数据框
- 如何在Scala 2.10中实现延迟val类变量?
- bootstrap - 为什么bootstrap的布局等分采用12列?
- 详解Linux中查看jdk安装目录、Linux卸载jdk、rpm命令、rm命
- webservice快速入门-使用spring整合apache-cxf(五)
- SOAP webserivce 和 RESTful webservice 对比及区别
- angularjs select 自定义指令