Spring 作为WAR文件运行时Sybase JDBC连接登录失败;但在Eclipse中运行时登录成功
我正在尝试从Spring Boot应用程序连接到Sybase数据库 我正在使用jconnectjconn4jdbc驱动程序Spring 作为WAR文件运行时Sybase JDBC连接登录失败;但在Eclipse中运行时登录成功,spring,jdbc,sybase,bouncycastle,sap-ase,Spring,Jdbc,Sybase,Bouncycastle,Sap Ase,我正在尝试从Spring Boot应用程序连接到Sybase数据库 我正在使用jconnectjconn4jdbc驱动程序 Class clazz = null; try { clazz = Class.forName("org.bouncycastle.jce.provider.BouncyCastleProvider"); logger.info("BouncyCastleProvider is ... " + clazz.toString()); if (claz
Class clazz = null;
try {
clazz = Class.forName("org.bouncycastle.jce.provider.BouncyCastleProvider");
logger.info("BouncyCastleProvider is ... " + clazz.toString());
if (clazz != null && clazz.getProtectionDomain() != null
&& clazz.getProtectionDomain().getCodeSource() != null) {
URL codeLocation = clazz.getProtectionDomain().getCodeSource().getLocation();
logger.info("BouncyCastleProvider jar is ... " + codeLocation.toString());
}
} catch (ClassNotFoundException e) {
logger.info(e.getMessage());
}
登录密码在Sybase server上是加密的,因此我使用bouncycastle加密API来加密密码
下面是代码的块:
此代码使用普通JDBC来测试连接,稍后我计划修改此代码以使用Spring的JDBC模板
Connection con = null;
try {
Class.forName("com.sybase.jdbc4.jdbc.SybDriver");
logger.info("Loaded Sybase driver successfully.....");
} catch (ClassNotFoundException cnfe) {
cnfe.printStackTrace();
}
及
成功登录Sybase服务器时:
jconn4-7.07.jar
(sybase jdbc驱动程序)
bcprov-jdk16-1.43.ja
r(bouncycastle加密API)
我使用下面的代码块查找应用程序在运行时使用的jar
Class clazz = null;
try {
clazz = Class.forName("org.bouncycastle.jce.provider.BouncyCastleProvider");
logger.info("BouncyCastleProvider is ... " + clazz.toString());
if (clazz != null && clazz.getProtectionDomain() != null
&& clazz.getProtectionDomain().getCodeSource() != null) {
URL codeLocation = clazz.getProtectionDomain().getCodeSource().getLocation();
logger.info("BouncyCastleProvider jar is ... " + codeLocation.toString());
}
} catch (ClassNotFoundException e) {
logger.info(e.getMessage());
}
2.通过eclipse中pom.xml的依赖关系层次结构窗口找到了bcprov-jdk1x-x.xx.jar文件的4个版本,并在pom中“排除”了其中三个文件。这是为了避免jar文件的版本冲突
但它不起作用:-(
为什么它能够在Eclispe中连接,而不能作为WAR运行
任何帮助/指导都会非常有用。经过大量的研究并花费了将近10个小时的努力,我能够通过在连接属性中添加“字符集”来解决这个问题
props.put("CHARSET", "iso_1");
这个故事的寓意是:问题可能更大,但解决方案不是:-)
props.put("CHARSET", "iso_1");