-
java 调用esb服务_java跨系统调用esb接口,json形式,rest接口分析
2021-02-13 00:49:40java跨系统调用esb接口,json形式,rest接口分析访客阅读:5222020-07-05 13:01:51评论:0package com.ekingwin.bas.cloud.mobileErp.utils;import java.util.HashMap;import java.util.Map;import org.spring...java跨系统调用esb接口,json形式,rest接口分析
访客
阅读:522
2020-07-05 13:01:51
评论:0
package com.ekingwin.bas.cloud.mobileErp.utils;
import java.util.HashMap;
import java.util.Map;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.client.RestTemplate;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
/**
* 向esb发送post请求工具类
* @author yang
*
*/
public class HttpRestUtil {
public static JSONObject sendPost(Map map1,Map map2,String url) {
//设置头信息
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.set("Content-Type", "application/json;charset=UTF-8");
headers.set("Accept", "application/json");
//封装请求参数
Map map=new HashMap();
map.put("commonHeader", map1);
map.put("LIST", map2);
String mapJsonStr = JSON.toJSONString(map,true);
JSONObject mapJson = JSONObject.parseObject((String) JSON.toJSON(mapJsonStr));
System.out.println("请求报文--------->>>>>>"+mapJson.toString());
//发送请求
HttpEntity> he = new HttpEntity>(map, headers);
RestTemplate restTemplate = new RestTemplate();
JSONObject responseJson=new JSONObject();
try {
ResponseEntity result = restTemplate.exchange(url,
HttpMethod.POST, he, JSONObject.class);
JSONObject body = result.getBody();
Object object = body.get("LIST");
JSONObject jsonObject=(JSONObject)JSON.toJSON(object);
responseJson= (JSONObject)JSON.toJSON(jsonObject.get("o"));
/*if(url.contains("Pipeline/querySaleTotalBySaler_PS")) {
responseJson= (JSONObject)JSON.toJSON(jsonObject.get("o"));
}else {
responseJson= (JSONObject)JSON.toJSON(jsonObject.get("DATA"));
}*/
System.out.println("响应报文***********************" + body.toString());
String code =responseJson.getString("code");
if ("1".equals(code)) {
System.out.println("接口调用成功" + responseJson.toString());
} else {
System.out.println("数据操作异常" + result.toString());
}
} catch (Exception e) {
e.printStackTrace();
System.out.println("接口调用失败"+e);
}
return responseJson;
}
/**
* CONSUMER这个参数还没有赋值
* @param BIZTRANSACTIONID 接口系统唯一标识
* @return
*/
public static Map setCommonHeaderMap(String BIZTRANSACTIONID) {
Map map =new HashMap();
map.put("BIZTRANSACTIONID", BIZTRANSACTIONID);
map.put("COUNT", "1");
map.put("SRVLEVEL", "");
map.put("ACCOUNT", "");
map.put("PASSWORD", "");
map.put("CONSUMER", "");
return map;
}
}
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。
发表评论
提交评论
-
如何用JAVA调用服务器系统指令
2020-05-13 18:07:29java在企业级项目开发中,无论是强制性的功能需要,还是为了简便java的实现,需要调用服务器命令脚本来执行。在java中,RunTime.getRuntime().exec()就实现了这个功能。 用法: public Process exec(String ...java在企业级项目开发中,无论是强制性的功能需要,还是为了简便java的实现,需要调用服务器命令脚本来执行。在java中,RunTime.getRuntime() .exec() 就实现了这个功能。
用法:
public Process exec(String command)//在单独的进程中执行指定的字符串命令。 public Process exec(String [] cmdArray)//在单独的进程中执行指定命令和变量 public Process exec(String command, String [] envp)//在指定环境的独立进程中执行指定命令和变量 public Process exec(String [] cmdArray, String [] envp)//在指定环境的独立进程中执行指定的命令和变量
Linux下:
String[] envp = { "LANG=UTF-8" }; String[] comands = new String[] { "/bin/sh", "-c", args}; Process process = Runtime.getRuntime().exec(comands, envp);
Windows下:
String[] envp = { "LANG=UTF-8" }; String[] comands = new String[] { "cmd", "/c", args}; Process process = Runtime.getRuntime().exec(comands, envp);
进阶:
Process的几种方法:
destroy():杀掉子进程 exitValue():返回子进程的出口值,值 0 表示正常终止 getErrorStream():获取子进程的错误流 getInputStream():获取子进程的输入流 getOutputStream():获取子进程的输出流 waitFor():导致当前线程等待,如有必要,一直要等到由该 Process 对象表示的进程终止。如果子进程结束,此方法立即返回。如果该子进程没结束,调用的线程将被阻塞,直到子进程退出,
笔者在用mysql和mysqldump指令进行智能和服时,遇到主键冲突没法正常返回,后来发现是因为没有读取错误流导致。
根据惯例,0 表示正常终止(即使比如mysql指令的主键冲突,只要是指令的返回也算是正常终止),
注意:在java中,调用runtime线程执行脚本是非常消耗资源的,所以切忌不要频繁使用!
在调用runtime去执行脚本的时候,其实就是JVM开了一个子线程去调用JVM所在系统的命令,其中开了三个通道: 输入流、输出流、错误流,其中输出流就是子线程走调用的通道。
process的阻塞:
在runtime执行大点的命令中,输入流和错误流会不断有流进入存储在JVM的缓冲区中,如果缓冲区的流不被读取被填满时,就会造成runtime的阻塞。所以在进行比如:大文件复制等的操作时,我们还需要不断的去读取JVM中的缓冲区的流,来防止Runtime的死锁阻塞。
最后附上在linux 上封装的方法供参考:
/** * @param daemon true,后台执行,false,直接执行 * @param args 指令行 */ public static Result sendCommand(boolean daemon,String args) { logger.info("args={}", args); StringBuilder builder = new StringBuilder(); // InputStreamReader ir = null; // LineNumberReader input = null; try { String[] envp = { "LANG=UTF-8" }; Process process=null; if(daemon) { String[] comands = new String[] { "/bin/sh", "-c", args}; process = Runtime.getRuntime().exec(comands, envp); process.waitFor(); }else { process = Runtime.getRuntime().exec(args, envp); process.waitFor(60,TimeUnit.SECONDS); } try (InputStreamReader ir = new InputStreamReader(process.getInputStream(), Charset.forName("UTF-8"));LineNumberReader input = new LineNumberReader(ir)) { String tmp = ""; while ((tmp = input.readLine()) != null) { builder.append(tmp).append("\n"); } }catch (Exception e) { logger.error(e.getMessage(), e); return new Result(ErrorCode.EC_FAILED, e.getMessage()); } try (InputStreamReader ir = new InputStreamReader(process.getErrorStream(), Charset.forName("UTF-8"));LineNumberReader input = new LineNumberReader(ir)) { String tmp = ""; while ((tmp = input.readLine()) != null) { builder.append(tmp).append("\n"); } }catch (Exception e) { logger.error(e.getMessage(), e); return new Result(ErrorCode.EC_FAILED, e.getMessage()); } } catch (Exception e) { logger.error(e.getMessage(), e); return new Result(ErrorCode.EC_FAILED, e.getMessage()); } String result = builder.toString(); if (StringUtils.isNotEmpty(result)&&StringUtils.containsIgnoreCase(result, "ERROR")) { logger.info("result={}", result); return new Result(ErrorCode.EC_FAILED, result); } else { return new Result(ErrorCode.EC_OK); } }
-
java 调用esb服务_java跨系统调用esb接口,json形式,rest接口详解
2021-02-13 00:49:41package ...import java.util.HashMap;import java.util.Map;import org.springframework.http.HttpEntity;import org.springframework.http.HttpHeaders;import org.springfra...package com.ekingwin.bas.cloud.mobileErp.utils;
import java.util.HashMap;
import java.util.Map;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.client.RestTemplate;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
/**
* 向esb发送post请求工具类
* @author yang
*
*/
public class HttpRestUtil {
public static JSONObject sendPost(Map map1,Map map2,String url) {
//设置头信息
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.set("Content-Type", "application/json;charset=UTF-8");
headers.set("Accept", "application/json");
//封装请求参数
Map map=new HashMap();
map.put("commonHeader", map1);
map.put("LIST", map2);
String mapJsonStr = JSON.toJSONString(map,true);
JSONObject mapJson = JSONObject.parseObject((String) JSON.toJSON(mapJsonStr));
System.out.println("请求报文--------->>>>>>"+mapJson.toString());
//发送请求
HttpEntity> he = new HttpEntity>(map, headers);
RestTemplate restTemplate = new RestTemplate();
JSONObject responseJson=new JSONObject();
try {
ResponseEntity result = restTemplate.exchange(url,
HttpMethod.POST, he, JSONObject.class);
JSONObject body = result.getBody();
Object object = body.get("LIST");
JSONObject jsonObject=(JSONObject)JSON.toJSON(object);
responseJson= (JSONObject)JSON.toJSON(jsonObject.get("o"));
/*if(url.contains("Pipeline/querySaleTotalBySaler_PS")) {
responseJson= (JSONObject)JSON.toJSON(jsonObject.get("o"));
}else {
responseJson= (JSONObject)JSON.toJSON(jsonObject.get("DATA"));
}*/
System.out.println("响应报文***********************" + body.toString());
String code =responseJson.getString("code");
if ("1".equals(code)) {
System.out.println("接口调用成功" + responseJson.toString());
} else {
System.out.println("数据操作异常" + result.toString());
}
} catch (Exception e) {
e.printStackTrace();
System.out.println("接口调用失败"+e);
}
return responseJson;
}
/**
* CONSUMER这个参数还没有赋值
* @param BIZTRANSACTIONID 接口系统唯一标识
* @return
*/
public static Map setCommonHeaderMap(String BIZTRANSACTIONID) {
Map map =new HashMap();
map.put("BIZTRANSACTIONID", BIZTRANSACTIONID);
map.put("COUNT", "1");
map.put("SRVLEVEL", "");
map.put("ACCOUNT", "");
map.put("PASSWORD", "");
map.put("CONSUMER", "");
return map;
}
}
分享到:
-
Java调用Tuxedo服务
2016-11-03 10:49:23Java调用Tuxedo服务,有三种方式: 1.JNI 发布Tuxedo服务无需做额外限制,无需借助于任何J2EE容器。会影响系统移植和带来性能问题。 2.WTC Weglogic为Tuxedo定制,存在一套和Tuxedo API相对应的Java API,发布...Java调用Tuxedo服务,有三种方式:
1.JNI
发布Tuxedo服务无需做额外限制,无需借助于任何J2EE容器。会影响系统移植和带来性能问题。
2.WTC
Weglogic为Tuxedo定制,存在一套和Tuxedo API相对应的Java API,发布Tuxedo服务无需做额外限制,双向调用。需要购买License,依赖于Weblogic容器,不能移植到其它J2EE容器。
3.Jolt
可用于但不依赖于J2EE容器,提供的API用WTC类似但不同。需要购买License,发布Tuxed服务有些额外的要求,不提供集成的Weblogic-server-tuxedo事务机制。
最后欢迎大家访问我的个人网站:1024s
-
Java 调用第3方系统服务
2019-03-04 07:29:00/**java调用windows本地命令*/ public class DosOperation { public static void main(String[] args) { InputStream is=null; BufferedInputStream bis=null; Process process=null; /**命令参数*/ ... -
java mysql备份_java调用mysql服务做备份与恢复
2021-01-18 20:13:18(cmd中生效但java中调用没有生效,这是我遇到的情况)java调用mysql备份命令用到:1,隐形调用cmd;2,调用第三方可执行程序;cmd参数的说明:(详细参考地址:http://blog.csdn.net/xys_777/art... -
java RMI客户端调用远程服务器系统命令
2019-04-06 01:20:14NULL 博文链接:https://skyandcity.iteye.com/blog/1547028 -
java调用mysql服务做备份与恢复
2016-08-10 10:07:00首先添加mysql的bin到环境变量,这样可以简写部分命令,并且做到不依赖系统...java调用mysql备份命令用到:1,隐形调用cmd;2,调用第三方可执行程序; cmd参数的说明:(详细参考地址:http://blog.csdn.net/xys_7... -
c svchost 服务 dll_JAVA调用Tuxedo服务使用JNI封装Tuxedo客户端实例
2021-01-16 05:36:39》》》推荐阅读《《《1、性能测试学习笔记-场景设计2、性能测试的重要意义3、性能分析流程及方法4、应用系统性能调优之性能分析目前java调用tuxedo服务只有通过jolt而且必须使用weblogic,大家因此比较郁闷。... -
java tcp wcf_【实战】使用Java调用WCF服务
2021-02-28 09:59:56WCF是微软提供的数据通讯框架,比较好用,可以使用webservice,也可以使用TCP/IP通讯,当前大部分的分布式系统基本都采用webservice,还是一个实战的项目,网络矿工数据采集服务引擎采用的就是wcf,对外提供任务操作... -
java调用r_Java调用R语言
2021-02-12 10:38:54R是统计计算的强大工具,JAVA是做应用系统的主流语言。JAVA负责系统的构建,R用来做运算引擎,从而实现应用型和分析性相结合的系统。一、Rserve(远程通信模式)Rserve是一个基于TCP/IP的服务器,通过二进制协议传输... -
java调用r语言例子_Java调用R语言
2021-02-26 12:46:04R是统计计算的强大工具,JAVA是做应用系统的主流语言。JAVA负责系统的构建,R用来做运算引擎,从而实现应用型和分析性相结合的系统。一、Rserve(远程通信模式)Rserve是一个基于TCP/IP的服务器,通过二进制协议传输... -
Java调用R
2019-10-09 02:47:10Java和R语言各有侧重,Java作为主流开发语言,擅长系统开发,R语言则擅长统计分析,将二者整合,Java负责系统的构建,R用来做分析引擎,从而实现具有分析功能的应用系统。 在Java代码中调用R,可以通过两种方式:... -
.net 多个dll 封装成一个dll_JAVA调用Tuxedo服务使用JNI封装Tuxedo客户端实例
2020-11-25 18:03:52》》》推荐阅读《《《1、性能测试学习笔记-场景设计2、性能测试的重要意义3、性能分析流程及方法4、应用系统性能调优之性能分析目前java调用tuxedo服务只有通过jolt而且必须使用weblogic,大家因此比较郁闷。... -
java调用域控服务实现部门用户增删改查
2019-06-11 18:34:00公司做大后,用到的系统就会越来越多,来个新员工,需要在HR系统...后来公司引入总线系统,来个新员工只需要在HR系统添加账号,HR系统把员工信息下发到总线系统,总线系统再下发到其他各个系统,这样能保证数据的一... -
java中使用HttpClient实现服务端跨域HttpClient调用其他系统服务
2018-02-28 16:58:09java中使用HttpClient实现服务端跨域HttpClient调用其他系统服务 一、 准备jar包 1、httpclient-4.5.3.jar 2、httpcore-4.4.8.jar 3、commons-logging-1.0.4.jar 二、HttpClient 执行 get 请求 ... -
java调用hbase_[已解决]java调用 Hbase报错
2021-02-12 11:16:01伪分布式hbase服务搭建,系统操作都很正常,也可以查询所有的表的列表,但是查询表的详情,调用的时候就会报错java.net.connectexception: call to localhost/127.0.0.1:16020 failed on connection exception从报错... -
java实现远程服务调用
2018-12-22 14:11:52主要使用HttpClient进行多系统数据交互的demo,使用文档和jar -
Java http请求调用服务
2017-11-01 14:44:32最近一直在做算法模型等等,好久不碰系统开发这套东西,顶多自己做个ETL写个spark,正巧自己准备数据的过程中需要调用服务获得一批数据,难得的非常有趣,代码极其基础简单,记录下来也不错import org.codehaus.... -
java服务端开发 php_Java系统和PHP系统相互调用
2020-12-22 12:41:20一种是偏重服务治理,另一种侧重跨语言调用2.1 服务治理型特点功能丰富,提供高性能的远程调用、服务发现及服务治理能力,适用于大型服务的服务解耦及服务治理,对于特定语言(Java)的项目可以实现透明化接入。... -
java 调用远程脚本_JAVA执行远端服务器的脚本
2021-02-12 17:15:01问题描述工作中遇到这样一个问题,我们的应用为了实现高可用会采取双机部署,拓扑图大致如下:这种方案可以简单的保证高可用,即便应用服务器或者数据库服务器其中一台宕机,整个系统的功能还是不会受到影响,但是这里会... -
java 调用 oracle存储过程_java基础---->java调用oracle存储过程(转)
2021-02-28 17:11:40存储过程是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在...java中调用oracle的存储过程项目结构如下:一、 在数据库创建存储过程的脚本,如果使用的是本地的oracle数据库,则需要开启服务:Orac... -
java 接口调用_java调用接口小结
2021-02-28 15:11:37最近因为系统需要,需要采用 http 调用对方的服务器接口,GET,POST 都有,记录一下GET 请求:/*** 功能描述: get 请求* @param: [url]* @return: JSONObject* @auther: lsr* @date: 2018/11/14 16:59*/public ... -
关于Android 添加系统级(java)服务和调用的编写实现
2015-01-04 14:55:21关于Android 添加系统级(java)服务和调用的编写实现说明: 本文当主要描述Android添加java 系统级服务的编写实现。 一.添加java 系统级服务: 目前网站上介绍的比较多,但是没有很详细的步骤和流程。现总结如下... -
java 调用foxmail_JavaMail(JAVA邮件服务) API详解
2021-02-28 17:11:255.回复邮件回复邮件的方法很简单:使用Message类的reply()方法,通过配置回复邮件的收件人地址和主题(如果没有提供主题的话,系统将默认将“Re:”作为邮件的主体),这里不需要设置任何的邮件内容,只要复制发信人... -
java调用第三方dll文件 源码_java调用ftp数据同步,java调用ftp数据同步源码分享...
2020-11-29 09:36:29FTP是File Transfer Protocol的简称,又被称为文件传输协议,是一种将数据上传和下载到Internet的方式。FTP是一套公认的且简单的协议,是传输单个...IIS7服务器管理工具适用于Windows操作系统和liunx操作系统;支... -
关于Android 添加系统级(java)服务和调用的编写实现说明
2016-05-26 18:08:02关于Android 添加系统级(java)服务和调用的编写实现说明:本文当主要描述Android添加java 系统级服务的编写实现。一.添加java 系统级服务: 目前网站上介绍的比较多,但是没有很详细的步骤和流程。现总结如下:以 Al -
Java调用oracle存储过程
2020-12-22 18:22:50存储过程是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。...
-
UCLA-GE:我在UCLA的GE课程的课程设置-源码
-
Galera 高可用 MySQL 集群(PXC v5.7+Hapro)
-
微服务化之无状态化与容器化(转载)
-
C++多态动态强制转换
-
定制合成淀粉-聚甲基丙烯酸甲酯-聚乙二醇丙烯酰胺包覆Fe3O4磁性纳米粒子载药阿霉素(DOX)
-
刷脸智慧化的生活正在一步步地向我们靠近
-
Histrivia-源码
-
精通编译Makefile,Nina, 从底层uboot到Android
-
钙钛矿量子点异质CdSe/CdS/核-壳结构和MAPbI3/PbS晶体结构
-
C语言零基础入门(详细讲解)
-
MySQL 四类管理日志(详解及高阶配置)
-
PPT大神之路高清教程
-
nginx代理静态文件文件加载出错修复方案
-
VMware vSphere ESXi 7 精讲/VCSA/VSAN
-
聊天室APP源码,聊天APP源码开发的实时性与互动性
-
libFuzzer视频教程
-
零基础极简以太坊智能合约开发环境搭建并开发部署
-
ES2015+学习笔记系列(七)—— Class类
-
node-practice:练习Node JS。 此仓库中提供了一些有用的代码片段-源码
-
图片格式与设计那点事