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语言读取类unix风格配置文件
/*************************************************** * * C语言读取配置文件 * 陈志中 2010-1-17 * che
cxf配置http:conduit
本次项目要通过https方式,调用外部的web service,所以在cxf的配置文件里进行配置如下: <http:tlsClientParameters disableCNCheck="true" secureSocketProtocol="SSL"> <sec:keyStore type="JKS" password="changeit
在C#类中读取配置文件的完整指南
在C#类中读取配置文件的完整指南
Cxf跳过Https安全认证
自定义类实现:ClientLifeCycleListener public class SkipSecurityAuthenticationListener implements ClientLifeCycleListener { @Override public void clientCreated(Client client) { if (client.getConduit()...
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...
基于32nm CMOS工艺的传输门D触发器设计及HSPICE仿真分析
根据半导体集成电路、利用Hspice软件以及数字电路等课程的知识,使用集成电路CMOS工艺完成触发器的设计,帮助初学者熟悉和掌握集成电路芯片电路设计及模拟方法和技巧
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实战之...
我想自己组装一台服务器,微调大模型通义千问2.5 Omni 72B,但是我是个人购买,资金非常有限,最省的方案
阶段动作✅ 推理用 GGUF + llama.cpp + 4090 加载 14B INT4✅ 微调训练 Qwen2.5-7B-Chat,使用 LoRA / QLoRA❌ 放弃Qwen2.5-Omni-72B 全量微调(显存需求 >160G,不现实)
使用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。
如何让cxf客户端简单支持ssl
首先生成自我签名的证书,关于如何使用keytool生成证书网上文章很多,这里不做介绍。 假如我们生成好了mas3server.jks和mas3Trust.jks 先是服务器端tomcat的配置,这里clientAuth默认为false表示不需要双向验证,即服务器端不需要知道客户端的身份,故这里不用配置truststoreFile和truststorePass:
【即插即用模块】Mamba篇 | CVPR 2025 | MaIR:新型Mamba扫描方式+通道混洗注意力,全任务涨点!
MaIR是一种新型图像恢复模型,通过嵌套S形扫描策略(NSS)和序列混洗注意力(SSA)改进传统Mamba方法。NSS采用条纹区域划分和S形扫描路径,既保留图像局部性又维持空间连续性;SSA通过通道洗牌和门控机制增强特征聚合。该模块创新性地融合多路径选择性扫描、深度卷积和注意力机制,在保持O(N)计算复杂度的同时,显著提升超分辨率和去噪等任务的性能表现(PSNR提升0.2-0.5dB)。代码实现包含特征洗牌、组卷积等关键操作,适用于高分辨率视觉任务,可作为即插即用组件替代传统自注意力模块。
Java中读取properties配置文件的八种方式总结
一、前言 在做Java项目开发过程中,涉及到一些数据库服务连接配置、缓存服务器连接配置等,通常情况下我们会将这些不太变动的配置信息存储在以 .properties 结尾的配置文件中。当对应的服务器地址或者账号密码信息有所变动时,我们只需要修改一下配置文件中的信息即可。同时为了让Java程序可以读取 .properties配置文件中的值,Java的JDK中提供了java.util.Properties类可以实现读取配置文件。 二、Properties类 Properties 类位于 java.util.Pro
C#企业级工作流管理:从优化到重构的实战指南——代码深度解析与性能调优策略
本文通过Workflow Core与Elsa引擎实现企业审批流程优化,将处理时间从72小时缩短至2小时,效率提升200%。文章包含12个代码示例,涵盖流程梳理、引擎选型(对比Workflow Core与Elsa特性)、模块化重构(策略模式应用)及异常处理机制。关键实现包括:可视化流程建模、Serilog性能监控、Elsa集成配置、策略模式消除重复代码,以及补偿事务设计。最终方案支持高并发,通过数据库连接池优化性能,为企业级工作流系统提供完整技术方案。
MDF和DHF、DMR、DHR三者差异?注册与备案文件?医疗器械产品技术要求编写指导原则
定义:设计历史文档(DHF ) 指的是描述某医疗器械成品设计过程的有关记录。内容:DHF包括设计开发活动的所有记录。从最初的策划、客户需求、设计输入,设计输出、设计验证、设计确认、所有的设计评审,设计转换,以及设计变更相关的所有记录。均属于DHF的一部分。要求:各制造商应为每个类型的器械建立并保持设计历史文件。设计历史文件应包含或引用必要的记录,以证实设计符合经批准的设计计划和法规的要求。
编写一个读取类,来读取配置文件的配置
项目中我们可以通过@Value()来将配置文件中的配置数值加载到我们的变量中,我们也可以编写一个配置文件读取类,专门用来读取我们配置文件中的配置,进行代码的统一管理和规划。
【RH850/U2A】:功能安全
功能安全相关
Java编程基础之Properties类读取配置文件参数
需求:当不想修改代码中的参数时,该如何处理?读取本地文件?读取程序的可配置文件?直接上代码,看注释说明: 1、先在工程名新建file文件夹,再新增file文件,扩展名必须是properties结尾的文件,其他文件格式或许会报错: 配置文件的内容是key=value的格式 # key=value name=udemy course=java+python 2、再新建一个读取配置文件的类:...
华为的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
最新的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,您可以轻松管理和存储应用程序的配置信息,提高应用程序的灵活性和可维护性。
efm32 入门.pdf
本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。
通过Properties类读取配置文件
Properties类简介
Java Properties 类读取配置文件信息
Java Properties 类读取配置文件信息在我们平时写程序的时候,有些参数是经常改变的,而这种改变不是我们预知的。比如说我们开发了一个操作数据库的模块,在开发的时候我们连接本地的数据库那么 IP ,数据库名称,表名称,数据库主机等信息是我们本地的,要使得这个操作数据的模块具有通用性,那么以上信息就不能写死在程序里。通常我们的做法是用配置文件来解决。 各种语言都有自己所支持的配
利用Java的Properties类读取配置文件信息
利用Java的Properties类读取配置文件信息 在我们平时写程序的时候,有些参数是经常改变的,而这种改变不是我们预知的。比如说我们开发了一个操作数据库的模块,在开发的时候我们连接本地的数据库那么IP,数据库名称,表名称,数据库主机等信息是我们本地的,要使得这个操作数据的模块具有通用性,那么以上信息就不能写死在程序里。通常我们的做法是用配置文件来解决。 各种语言都有自己所支持的
一个用于读取应用程序配置文件(*.ini)的类
应用程序往往都有一个配置文件,在windows下,一般采用*.ini文件的方式,我们需要调用windows api来读取配置文件,api使用起来繁琐,笔者自己开发了一个读配置文件的类,使用十分方便,在使用的时候只需要实现具体的一个虚函数即可。 #pragma once #include "string" #include "iostream" using namespace std
2744



被折叠的 条评论
为什么被折叠?



