一个常用工具类,读取配置文件

【JAVA开发小技巧】Properties类读取properties、yml配置文件中的内容 当我们将项目部署到服务器上之后,我们不能专门地对代码中的常量进行修改,除非更新部署新的项目,但是我们的项目在上次更新之后,很有可能在其它方面也做了更新升级,这些更新的内容只有在通过测试之后才有资格部署到生产环境下。所以我们要想办法,解除常量与项目代码的耦合度,解决办法就是,当我们将项目部署到生产环境之后,能将项目中的常量进行配置化的管理。也就是说,项目中的常量最好是来源于配置文件的读取,这样我们只要修改配置文件即可修改项目中的常量。 阅读详情
package com.yinhai.webservice.bridge;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.security.KeyStore;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.logging.Logger;

import javax.net.ssl.KeyManager;
import javax.net.ssl.KeyManagerFactory;
import javax.net.ssl.TrustManager;
import javax.net.ssl.TrustManagerFactory;

import com.yinhai.webservice.app.aa.action.YAA01WCAction;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.cxf.configuration.jsse.TLSClientParameters;
import org.apache.cxf.configuration.security.FiltersType;
import org.apache.cxf.frontend.ClientProxy;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
import org.apache.cxf.transport.http.HTTPConduit;

public class BridgeWebserviceUtil {
//	private final static String WebServiceIp = BridgeWebserviceUtil.getInstance().getPropValue("WebServiceIp");

	private  static Logger logger = Logger.getLogger(BridgeWebserviceUtil.class.getName());
	
	public static final BridgeWebserviceUtil instance;

	private Properties initProp = new Properties();

	public BridgeWebserviceUtil() {
	}

	public static String getWebserviceIp(String webserviceIp) {
		return BridgeWebserviceUtil.instance.getPropValue(webserviceIp);
	}
	static{
		instance = new BridgeWebserviceUtil();
		instance.init();
	}

	private void init() {
		InputStream in = null;
		try {
			in = getClass().getResourceAsStream("/bs/cxf/bridge/bridgeconfig.properties");
			initProp.load(in);

		} catch (IOException e) {
			logger.info(e+"");
		}finally {
			try {
				if(in!=null)
                    in.close();
			} catch (IOException e) {
				logger.info(e+"");
			}
		}
	}

	public String getPropValue(String name) {
		String retStrt = null;
		retStrt = initProp.getProperty(name);
		return retStrt;
	} 
	
	/**
	 * 根据对应的serviceName获取对应的wsdl
	 * @param webserviceIpFlag
	 * @param serviceName
	 * @param c
	 * @return
	 */
	public static Object getWebService(String webserviceIpFlag, Object serviceName ,Class c){
		String webServiceIp = getWebserviceIp(webserviceIpFlag); //获取对应的webserviceIp;
//		String address = "http://" + webServiceIp + "/xz/services/" + serviceName + "?wsdl";
//		String address = "https://" + webServiceIp + "/xz/services/" + serviceName + "?wsdl";
		String address = webServiceIp + "/xz/services/" + serviceName + "?wsdl";
		JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();// 获取webservice代理
        factory.setAddress(address);//添加服务器webservice地址
        Map<String, Object> props = new HashMap<String, Object>();
        props.put("mtom-enabled", Boolean.TRUE);//设置上传文件的传输方式(“mtom-enabled”,是否允许使用mtom)
        factory.setProperties(props);
        Object service  = null;
        factory.setServiceClass(c); 
        service = factory.create();//获取婚姻webservice接口,IYAR03WC为客户端接口
        factory = null;
        return service;
	}
	
	
	/**
	 * 
	 * @param c
	 * @param dir_truststore 信任store所处的位置
	 * @param dir_keystore   私钥store所处的位置
	 */
	public static void configureSSLOnTheClient(Object c,String dir_truststore,String dir_keystore) {
        org.apache.cxf.endpoint.Client client = ClientProxy.getClient(c);
        HTTPConduit httpConduit = (HTTPConduit) client.getConduit();
        TLSClientParameters tlsParams = new TLSClientParameters();
		tlsParams.setDisableCNCheck(true);

		TrustManager[] tm = getTrustManagers(dir_truststore);
		tlsParams.setTrustManagers(tm);

		KeyManager[] km = getKeyManagers(dir_keystore);
		tlsParams.setKeyManagers(km);

		FiltersType filter = new FiltersType();
		filter.getInclude().add(".*_EXPORT_.*");
		filter.getInclude().add(".*_EXPORT1024_.*");
		filter.getInclude().add(".*_WITH_DES_.*");
		filter.getInclude().add(".*_WITH_NULL_.*");
		filter.getExclude().add(".*_DH_anon_.*");
		tlsParams.setCipherSuitesFilter(filter);

		httpConduit.setTlsClientParameters(tlsParams);
    }
	
	private static TrustManager[] getTrustManagers(String dir_truststore) {
		TrustManager[] trustManager = null;
		InputStream fp = null;
		try {
            String trustpass = "123456";
			String alg = TrustManagerFactory.getDefaultAlgorithm();
			TrustManagerFactory factory = TrustManagerFactory.getInstance(alg);
			fp = new FileInputStream(getWebserviceIp(dir_truststore));
			KeyStore ks = KeyStore.getInstance("JKS");
			ks.load(fp, trustpass.toCharArray());
			factory.init(ks);
			trustManager = factory.getTrustManagers();
		} catch (Exception e) {
			logger.info(e+"");
		} finally {
			if (fp != null) {
				try {
					fp.close();
					fp = null;
				} catch (IOException e) {
					logger.info(e+"");
				}
			}
		}
		return trustManager;
	}

	public static KeyManager[] getKeyManagers(String dir_keystore) {
		InputStream is = null;
		KeyManager[] keyManager = null;
		try {
			// 获取默认的 X509算法
			String alg = KeyManagerFactory.getDefaultAlgorithm();
			// 创建密钥管理工厂
			KeyManagerFactory factory = KeyManagerFactory.getInstance(alg);
			is = new FileInputStream(getWebserviceIp(dir_keystore));
			// 构建以证书相应格式的证书仓库
			KeyStore ks = KeyStore.getInstance("pkcs12");
			// 加载证书
            String keypass = "123456";
			ks.load(is, keypass.toCharArray());
			factory.init(ks, keypass.toCharArray());
			keyManager = factory.getKeyManagers();
		} catch (Exception e) {
			logger.info(e+"");
		} finally {
			if (is != null) {
				try {
					is.close();
					is = null;
				} catch (IOException e) {
					logger.info(e+"");
				}
			}

		}
		return keyManager;
	}
	
}

C++ 读取配置文件的Config类 目录目的Config类代码调用 目的 读取配置文件中的参数及参数值到全局变量中, 我的配置文件示例如下 [MapModel-sim] resolution = 0.1 free_acc_val = 50 obstacle_acc_val = 100 time_diff_threshold = 0.01 ground_lower_threshold = -0.2 ground_upper_threshold = 0.2 obstacle_lower_threshold = -0.05 obstacle_upp 阅读详情

相关推荐

C语言读取类unix风格配置文件

/*************************************************** * * C语言读取配置文件 * 陈志中 2010-1-17 * che

yorloo的专栏 2744

cxf配置http:conduit

本次项目要通过https方式,调用外部的web service,所以在cxf的配置文件里进行配置如下: <http:tlsClientParameters disableCNCheck="true" secureSocketProtocol="SSL"> <sec:keyStore type="JKS" password="changeit

kyfxbl 4040

在C#类中读取配置文件的完整指南

在C#类中读取配置文件的完整指南

qq_44206824的博客 1577

Cxf跳过Https安全认证

自定义类实现:ClientLifeCycleListener public class SkipSecurityAuthenticationListener implements ClientLifeCycleListener { @Override public void clientCreated(Client client) { if (client.getConduit()...

Clare Tung 6110

Java读写Yaml文件的工具类-snakeyaml

java通过snakeyaml类能非常方便的操作,读写yaml文件。

Java读取yml配置文件 YamlUtils.rar

在web项目中读取yml配置文件的工具类.可以实现将 server : port : portnumber : 8081 转换为 key为"server.port.portnumber",值为"8081"的Map集合

RestTemplate访问https请求

方法1.用java生成证书,不建议,移植性差 方法2.将RestTemplate改为https请求 step1.编写一个工具类 import org.springframework.http.client.SimpleClientHttpRequestFactory; import javax.net.ssl.*; import java.io.IOException; import j...

qqnbsp的博客 1974

基于32nm CMOS工艺的传输门D触发器设计及HSPICE仿真分析

根据半导体集成电路、利用Hspice软件以及数字电路等课程的知识,使用集成电路CMOS工艺完成触发器的设计,帮助初学者熟悉和掌握集成电路芯片电路设计及模拟方法和技巧

2302_81301620的博客 2452

Apache CXF实战之九 发布使用SSL的Web Service

本文链接:http://blog.csdn.net/kongxx/article/details/7738717 Apache CXF实战之一 Hello World Web Service Apache CXF实战之二 集成Sping与Web容器 Apache CXF实战之三 传输Java对象 Apache CXF实战之四 构建RESTful Web Service Apache CXF实战之...

我是传奇 286

我想自己组装一台服务器,微调大模型通义千问2.5 Omni 72B,但是我是个人购买,资金非常有限,最省的方案

阶段动作✅ 推理用 GGUF + llama.cpp + 4090 加载 14B INT4✅ 微调训练 Qwen2.5-7B-Chat,使用 LoRA / QLoRA❌ 放弃Qwen2.5-Omni-72B 全量微调(显存需求 >160G,不现实)

AngelCryToo的专栏 2822

使用Jacob实现将Word文件转换为Pdf文件

如果是首次使用 jacob,建议先直接从 github上下载 zip包,因为在实现Word转Pdf的时候,不仅需要用到 jacob.jar,还需要 jacob.dll 库,而zip包中都有。官方使用文档可以参考:https://github.com/freemansoft/jacob-project/blob/main/docs/UsingJacob.md。// 如果安装的是微软的 Office,需要使用 Word.Application。

qq_41672950的博客 750

如何让cxf客户端简单支持ssl

首先生成自我签名的证书,关于如何使用keytool生成证书网上文章很多,这里不做介绍。 假如我们生成好了mas3server.jks和mas3Trust.jks 先是服务器端tomcat的配置,这里clientAuth默认为false表示不需要双向验证,即服务器端不需要知道客户端的身份,故这里不用配置truststoreFile和truststorePass:

ppby2002的专栏 6692

【即插即用模块】Mamba篇 | CVPR 2025 | MaIR:新型Mamba扫描方式+通道混洗注意力,全任务涨点!

MaIR是一种新型图像恢复模型,通过嵌套S形扫描策略(NSS)和序列混洗注意力(SSA)改进传统Mamba方法。NSS采用条纹区域划分和S形扫描路径,既保留图像局部性又维持空间连续性;SSA通过通道洗牌和门控机制增强特征聚合。该模块创新性地融合多路径选择性扫描、深度卷积和注意力机制,在保持O(N)计算复杂度的同时,显著提升超分辨率和去噪等任务的性能表现(PSNR提升0.2-0.5dB)。代码实现包含特征洗牌、组卷积等关键操作,适用于高分辨率视觉任务,可作为即插即用组件替代传统自注意力模块。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 1162

Java中读取properties配置文件的八种方式总结

一、前言 在做Java项目开发过程中,涉及到一些数据库服务连接配置、缓存服务器连接配置等,通常情况下我们会将这些不太变动的配置信息存储在以 .properties 结尾的配置文件中。当对应的服务器地址或者账号密码信息有所变动时,我们只需要修改一下配置文件中的信息即可。同时为了让Java程序可以读取 .properties配置文件中的值,Java的JDK中提供了java.util.Properties类可以实现读取配置文件。 二、Properties类 Properties 类位于 java.util.Pro

Thinkingcao的专栏 5万+

C#企业级工作流管理:从优化到重构的实战指南——代码深度解析与性能调优策略

本文通过Workflow Core与Elsa引擎实现企业审批流程优化,将处理时间从72小时缩短至2小时,效率提升200%。文章包含12个代码示例,涵盖流程梳理、引擎选型(对比Workflow Core与Elsa特性)、模块化重构(策略模式应用)及异常处理机制。关键实现包括:可视化流程建模、Serilog性能监控、Elsa集成配置、策略模式消除重复代码,以及补偿事务设计。最终方案支持高并发,通过数据库连接池优化性能,为企业级工作流系统提供完整技术方案。

墨夶的博客 896

MDF和DHF、DMR、DHR三者差异?注册与备案文件?医疗器械产品技术要求编写指导原则

定义:设计历史文档(DHF ) 指的是描述某医疗器械成品设计过程的有关记录。内容:DHF包括设计开发活动的所有记录。从最初的策划、客户需求、设计输入,设计输出、设计验证、设计确认、所有的设计评审,设计转换,以及设计变更相关的所有记录。均属于DHF的一部分。要求:各制造商应为每个类型的器械建立并保持设计历史文件。设计历史文件应包含或引用必要的记录,以证实设计符合经批准的设计计划和法规的要求。

学海无涯的专栏 9109

编写一个读取类,来读取配置文件的配置

项目中我们可以通过@Value()来将配置文件中的配置数值加载到我们的变量中,我们也可以编写一个配置文件读取类,专门用来读取我们配置文件中的配置,进行代码的统一管理和规划。

weixin_45866737的博客 812

【RH850/U2A】:功能安全

功能安全相关

3130

Java编程基础之Properties类读取配置文件参数

需求:当不想修改代码中的参数时,该如何处理?读取本地文件?读取程序的可配置文件?直接上代码,看注释说明: 1、先在工程名新建file文件夹,再新增file文件,扩展名必须是properties结尾的文件,其他文件格式或许会报错: 配置文件的内容是key=value的格式 # key=value name=udemy course=java+python 2、再新建一个读取配置文件的类:...

我先测了 3934

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

读取properties配置文件的几种方法

我们常常需要将一些配置参数放置在XML 配置文件或者 properties 配置文件中,增强程序灵活性。我总结下读取 properties 配置文件的几种方法,供需要时使用。 假设我有一个config.properties文件:(键值对形式),现在需要读取出来 className=demo.Teacher methodName=teach 方式一:properties类 public class propertiesTest{ public static void main(String[] arg

这知识不进我脑袋呀 5289

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Qt读取ini格式配置文件的类设计

本文详细介绍了 Qt 中的 QSettings 类,包括初始化、读取、写入和删除配置信息的操作。还讲解了在整个系统中怎么去设计系统配置文件读取类 我们还介绍了 QSettings 的应用场景。通过合理使用类CShortWaveConfig,您可以轻松管理和存储应用程序的配置信息,提高应用程序的灵活性和可维护性。

红军不怕远征难,万水千山只等闲 1974

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

通过Properties类读取配置文件

Properties类简介

wjzh2008的博客 1670

Java Properties 类读取配置文件信息

 Java Properties 类读取配置文件信息在我们平时写程序的时候,有些参数是经常改变的,而这种改变不是我们预知的。比如说我们开发了一个操作数据库的模块,在开发的时候我们连接本地的数据库那么 IP ,数据库名称,表名称,数据库主机等信息是我们本地的,要使得这个操作数据的模块具有通用性,那么以上信息就不能写死在程序里。通常我们的做法是用配置文件来解决。 各种语言都有自己所支持的配

零-专栏 1703

利用Java的Properties类读取配置文件信息

利用Java的Properties类读取配置文件信息 在我们平时写程序的时候,有些参数是经常改变的,而这种改变不是我们预知的。比如说我们开发了一个操作数据库的模块,在开发的时候我们连接本地的数据库那么IP,数据库名称,表名称,数据库主机等信息是我们本地的,要使得这个操作数据的模块具有通用性,那么以上信息就不能写死在程序里。通常我们的做法是用配置文件来解决。 各种语言都有自己所支持的

Day day up! 1539

一个用于读取应用程序配置文件(*.ini)的类

应用程序往往都有一个配置文件,在windows下,一般采用*.ini文件的方式,我们需要调用windows api来读取配置文件,api使用起来繁琐,笔者自己开发了一个读配置文件的类,使用十分方便,在使用的时候只需要实现具体的一个虚函数即可。 #pragma once #include "string" #include "iostream" using namespace std

点点滴滴 1242
上一篇: spring boot + webSocket 实现简单会话与在线人数统计的demo
下一篇: 分页
波比小金刚
博客等级 码龄11年 41粉丝 67原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值