远程部署项目,修改catalina.bat文件 完美解决在代理服务器上HttpURLConnection 调接口超时的问题
远程给客户部署项目,运行时程序调外部接口时总是出不去,经过不懈努力,后来发现客户那边的网络走的是代理,于是在代码中加下面代码:
//设置代理
System.setProperty("http.proxySet", "true");
System.setProperty("http.proxyHost", "代理ip地址");
System.setProperty("http.proxyPort", "8080");
调试后,汗~~~不管用,又开始找资料,请教别人后才知道 只要在Tomcat的..\bin\catalina.bat文件里添加代理就可以了
找到set JAVA_OPTS加上如下代码即可:
set JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=128M -XX:MaxPermSize=512m -Dhttp.proxyHost=代理服务器ip -Dhttp.proxyPort=代理服务器端口 -Dhttps.proxyHost=代理服务器ip -Dhttps.proxyPort=代理服务器端口
心想这下应该可以正常运行了吧,结果还是超时,最后干脆用java的原始类HttpURLConnection替换掉第三方开源框架类HttpClient,运行后,OK ! ! ! ~
以下是部分代码:
package com.bwdz.fp.saas.util; import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.URL;
import java.net.URLEncoder;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.Map; import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager; import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost; public class HttpsFptClient {
private static Logger logger = Logger.getLogger(CYInterface.class);
private static TrustManager myX509TrustManager = new X509TrustManager() { public void checkClientTrusted(X509Certificate[] arg0, String arg1)
throws CertificateException { } public void checkServerTrusted(X509Certificate[] arg0, String arg1)
throws CertificateException { } public X509Certificate[] getAcceptedIssuers() {
return null;
} };
public static String doPost(String url,Map<String,String> map,String charset){
HttpClient httpClient = null;
HttpPost httpPost = null;
String result = null;
try{
/*httpClient = new SSLClient();
httpClient.getParams().setIntParameter("http.socket.timeout",120000);
httpPost = new HttpPost(url);
//设置参数
List<NameValuePair> list = new ArrayList<NameValuePair>();
Iterator iterator = map.entrySet().iterator();
while(iterator.hasNext()){
Entry<String,String> elem = (Entry<String, String>) iterator.next();
list.add(new BasicNameValuePair(elem.getKey(),elem.getValue()));
}
if(list.size() > 0){
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(list,charset);
httpPost.setEntity(entity);
}
HttpResponse response = httpClient.execute(httpPost);
if(response != null){
HttpEntity resEntity = response.getEntity();
if(resEntity != null){
result = EntityUtils.toString(resEntity,charset);
}
} */ SSLContext sslcontext = SSLContext.getInstance("TLS");
sslcontext.init(null, new TrustManager[]{myX509TrustManager},
null); URL console = new URL(url);
HttpsURLConnection conn = (HttpsURLConnection) console.openConnection(); int timeout = 30000;
conn.setConnectTimeout(timeout);
conn.setReadTimeout(timeout);
conn.setSSLSocketFactory(sslcontext.getSocketFactory());
//conn.setHostnameVerifier(new TrustAnyHostnameVerifier());
conn.setRequestMethod("POST");
conn.setDoOutput(true); conn.connect();
DataOutputStream out = new DataOutputStream(conn.getOutputStream());
String requestData = parseParams(map);
out.write(requestData.getBytes(charset));
// 刷新、关闭
out.flush();
out.close(); String responeStr = readStream(conn.getInputStream());
return responeStr;
} catch (Exception e) {
logger.error("https post error: " + e.getMessage()+",url:"+url);
return null;
}
} /**
* 将map转为字符串
*
* @param params
* @return
* @throws UnsupportedEncodingException
*/
private static String parseParams(Map<String, String> params) throws UnsupportedEncodingException {
StringBuilder stringBuilder = new StringBuilder();
for (Map.Entry<String, String> entry : params.entrySet()) {
stringBuilder.append(URLEncoder.encode(entry.getKey(), "utf-8"));
stringBuilder.append("=");
stringBuilder.append(URLEncoder.encode(entry.getValue() == null ? "" : entry.getValue(), "utf-8"));
stringBuilder.append("&");
}
String str = stringBuilder.toString();
if (str.length() > 0) {
str = str.substring(0, str.length() - 1);
}
return str;
} /**
* 读取流
*
* @param inputStream
* @return
* @throws IOException
*/
private static String readStream(InputStream inputStream) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "utf-8"));
String line = null;
StringBuffer sb = new StringBuffer();
while ((line = reader.readLine()) != null) {
sb.append(line);
}
reader.close();
return sb.toString();
}
}
远程部署项目,修改catalina.bat文件 完美解决在代理服务器上HttpURLConnection 调接口超时的问题的更多相关文章
- 详细解释 集成Maven Spring Mybatis项目包生成Bat文件
有时在项目必须Maven项目包生成bat文件,长官一人.本文将解释的具体使用方法maven-assembly-plugin插件实现bat文件包. 1.首先看一下项目结构 2.配置pom.xml文件,在 ...
- Eclipse+Maven远程部署项目到Tomcat中
使用maven的自动部署功能可以很方便的将maven工程自动打包并且部署到远程tomcat服务器,省去一些繁琐的操作,节省大量时间. 我使用的tomcat版本是8.5,tomcat7和tomcat8都 ...
- Linux 安装tomcat及tomcat自带远程部署项目与管理
准备: 1.Linux系统 2.已经安装好jdk 开始: 选择要安装的tomcat版本:https://archive.apache.org/dist/tomcat/ 我这里使用的是tomcat 8. ...
- IDEA远程部署项目到Docker
前言 最近在写东西部署到服务器,结构是springboot工程配合docker部署. 但是每次部署都3个步骤: 本地构建jar 复制jar到远程服务器 用DockerFile构建镜像 部署次数一多,我 ...
- Tomcat部署项目修改浏览器上猫咪头像
一.发现问题用tomcat部署项目,在浏览器标签也上发现了tomcat猫咪图.要把这个图修改掉. 二.解决问题apache-tomcat-5.5.28\webapps\ROOT下的ico文件,将需要替 ...
- Java swing 项目写成bat文件
java -Dfile.encoding=GBK -Xms512m -Xmx512m -cp .;.\lib\* com.bozhirui.show.TableIn 以上为bat 文件的所有内容 ...
- Eclipse下Maven新建Web项目index.jsp报错完美解决(war包)
Eclipse下Maven新建Web项目步骤 1. 2. 3. 4. 5. 问题描述 最近用eclipse新建了一个maven项目,结果刚新建完成index.jsp页面就报错了,先把错误信息贴出来看看 ...
- 切分 Tomcat 的 catalina.out 文件,解决日志文件过大的问题
原文:http://unmi.cc/split-tomcat-catalina-out-file Linux 下使用 cronolog 工具来切分 catalina.out 这里重点介绍这种方法,具体 ...
- Windows10系统运行bat文件 一闪而过 解决
1.在*.bat所在的文件夹按住shift 键然后鼠标右键,选择“在此处打开命令窗口”, 2.输入bat文件名称然后回车 这样就不会自动消失
随机推荐
- mysql: SOURCE error 2?
mysql: SOURCE error 2? mysql -uroot -p ****** # 路径输入错误,会抛出这个异常 mysql> source /var/lib/ambari-serv ...
- 02-Dockerfile的基本使用
1. FROM 作用:指定基础镜像 使用:FROM 镜像名 demo: FROM mysql FROM mysql:5.6 2. RUN 作用:指令是用来执行命令行命令的 使用: shell格式:RU ...
- vue在html使用
1.Vue: 定义:渐进式JavaScript框架 渐进式: 定义:声明渲染 组件系统 客户端路由 集中式状态管理 项目构建 2.MVVM 定义 M Model(服务器上的业务逻辑操作) V View ...
- [日常摸鱼]bzoj1083[SCOI2005]繁忙的都市-最小生成树
我也不知道为什么我要来写这个-怕是写水题写上瘾了(bu #include<cstdio> #include<algorithm> #define rep(i,n) for(re ...
- windows jupyter lab中.ipynb转中文PDF
在jupyter lab中,File-Export Notebook as-Export Notebook to PDF,可以导出成PDF格式的文档,但在操作前需要安装些程序.1. 安装pandocA ...
- EF并发问题,在提供程序连接上启动事务时出错。有关详细信息,请参阅内部异常。
1 Entities data=new Entities(); var list = from p in data.Record where p.CreateTime >= d &&am ...
- PIX
[开启]后,如图: [新建]:如图中设定: Program: 你要准备监测的应用程序路径 [点击]:Start Experiment 如图,会出现一个新窗口(你运行的应用程序窗口) [点击F12](确 ...
- Vue项目如何打包问题总结
当我们将 vue 项目完成后,面临的就是如何将项目进行打包上线,放到服务器中.我使用的是 vue-cli(simple) 脚手架,所以就讲一下如何将项目进行打包,并放到 tomcat 上. 先来描述一 ...
- Ajax 详解及CORS
Ajax 是什么? Ajax 即"Asynchronous Javascript And XML"(异步 JavaScript 和 XML)是指一种创建交互式网页应用的网页开发技术 ...
- jq 右键菜单在弹出菜单前如果需要显示与否的判断相关操作
菜单插件(ContextMenu)接收一个额外的参数对象来设置菜单项的样式和绑定鼠标事件. 菜单插件(ContextMenu)支持一下参数设置: bindings 包含id的对象:函数组. 当关联的菜 ...