uat环境和生产环境的区别_angular 生产环境 相对路径无效

2022-11-11 20:40:10 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。

本人研发小白一名,时间:2017年12月21(周四),坐标:上海。项目上线,测试环境正常,上UAT环境后访问不到数据,于是开始步步分析,细细琢磨,最终成功上UAT,但影响了上生产环境的时间,造成项目延时发布,第一次遇到这么奇怪的事情,之后就是2017年12月26(周二)的上生产环境,不过可怕的事情还是发生了:本地、测试、UAT环境都正常,生产环境有访问不到数据,直到12月27号2:00才解决,以上是问题情景。

这边也想了很长时间:为什么UAT环境代码好好的,正式环境就不行了,拉的是一套代码,不同的地方就是Disconf配置文件了(这里我前后核对了不下六遍,前两遍确实有问题及时做了修改,最后一遍我是一个一个字核对的

)。无奈只好各种打Logger看日志,最后抓取到问题点是httpClient工具类的问题,前后重新写了三次httpClient工具类,最终皇天不负有心人。。。以下是我这边出现访问不到数据的三个情况:

1、Disconf环境配置文件的配置(本地、测试、UAT及生产环境都会有所差别),具体看各个环境的访问地址;

2、系统中访问的子系统接口是否同步上了相应的环境,在相应环境上直接访问接口验证是否部署成功;

3、httpClient工具类中http和https是有区别的,线上环境和UAT环境一定要是https://开头的(从发现这个问题和解决花了我不少时间),https是要有安全协议的,下面是我最后成功的httpClient工具类:

代码语言:javascript复制
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.Map;

import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.conn.ClientConnectionManager;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.scheme.SchemeRegistry;
import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;

public class HttpsUtils{
	
	public String doGetForHttps(String url, Map<String, String> map, String charset) {
		  HttpClient httpClient = null;
		  String result = null;
		  try {
		   httpClient = new SSLClient();
		   HttpGet httpGet = new HttpGet(url);

		   HttpResponse response = httpClient.execute(httpGet);
		   if (response != null) {
		    HttpEntity resEntity = response.getEntity();
		    if (resEntity != null) {
		     result = EntityUtils.toString(resEntity, charset);
		    }
		   }
		  } catch (Exception ex) {
		   ex.printStackTrace();
		  }
		  return result;
		 }

		 class SSLClient extends DefaultHttpClient {
		  public SSLClient() throws Exception {
		   super();
		   SSLContext ctx = SSLContext.getInstance("TLS");
		   X509TrustManager tm = new X509TrustManager() {
		    @Override
		    public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
		    }

		    @Override
		    public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
		    }

		    @Override
		    public X509Certificate[] getAcceptedIssuers() {
		     return null;
		    }
		   };
		   ctx.init(null, new TrustManager[] { tm }, null);
		   SSLSocketFactory ssf = new SSLSocketFactory(ctx, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
		   ClientConnectionManager ccm = this.getConnectionManager();
		   SchemeRegistry sr = ccm.getSchemeRegistry();
		   sr.register(new Scheme("https", 443, ssf));
		  }
		 }

这边都是用Get方式访问的,做的BI报表。。。当然对大牛来是比较简单(不喜勿喷),个人觉得问题确实不复杂,但是要足够耐心去解决,希望能对我们这些初学者有一定的帮助,代码人生~~~共同成长,加油!!!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/187615.html原文链接:https://javaforall.cn

0 人点赞