包含db2java.jar的词条

博主:adminadmin 2023-01-08 01:42:07 1226

今天给各位分享db2java.jar的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

在tomcat中配置CAS

CAS 原理和协议

从结构上看,CAS 包含两个部分: CAS Server 和 CAS Client。CAS Server 需要独立部署,主要负责对用户的认证工作;CAS Client 负责处理对客户端受保护资源的访问请求,需要登录时,重定向到 CAS Server。图1 是 CAS 最基本的协议过程:

图 1. CAS 基础协议

CAS Client 与受保护的客户端应用部署在一起,以 Filter 方式保护受保护的资源。对于访问受保护资源的每个 Web 请求,CAS Client 会分析该请求的 Http 请求中是否包含 Service Ticket,如果没有,则说明当前用户尚未登录,于是将请求重定向到指定好的 CAS Server 登录地址,并传递 Service (也就是要访问的目的资源地址),以便登录成功过后转回该地址。用户在第 3 步中输入认证信息,如果登录成功,CAS Server 随机产生一个相当长度、唯一、不可伪造的 Service Ticket,并缓存以待将来验证,之后系统自动重定向到 Service 所在地址,并为客户端浏览器设置一个 Ticket Granted Cookie(TGC),CAS Client 在拿到 Service 和新产生的 Ticket 过后,在第 5,6 步中与 CAS Server 进行身份合适,以确保 Service Ticket 的合法性。

在该协议中,所有与 CAS 的交互均采用 SSL 协议,确保,ST 和 TGC 的安全性。协议工作过程中会有 2 次重定向的过程,但是 CAS Client 与 CAS Server 之间进行 Ticket 验证的过程对于用户是透明的。

另外,CAS 协议中还提供了 Proxy (代理)模式,以适应更加高级、复杂的应用场景,具体介绍可以参考 CAS 官方网站上的相关文档。

准备工作

本文中的例子以 tomcat5.5 为例进行讲解,下载地址:

;nbsp;

到 CAS 官方网站下载 CAS Server 和 Client,地址分别为:

;nbsp;

;nbsp;

部署 CAS Server

CAS Server 是一套基于 Java 实现的服务,该服务以一个 Java Web Application 单独部署在与 servlet2.3 兼容的 Web 服务器上,另外,由于 Client 与 CAS Server 之间的交互采用 Https 协议,因此部署 CAS Server 的服务器还需要支持 SSL 协议。当 SSL 配置成功过后,像普通 Web 应用一样将 CAS Server 部署在服务器上就能正常运行了,不过,在真正使用之前,还需要扩展验证用户的接口。

在 Tomcat 上部署一个完整的 CAS Server 主要按照以下几个步骤:

配置 Tomcat 使用 Https 协议

如果希望 Tomcat 支持 Https,主要的工作是配置 SSL 协议,其配置过程和配置方法可以参考 Tomcat 的相关文档。不过在生成证书的过程中,会有需要用到主机名的地方,CAS 建议不要使用 IP 地址,而要使用机器名或域名。

部署 CAS Server

CAS Server 是一个 Web 应用包,将前面下载的 cas-server-3.1.1-release.zip 解开,把其中的 cas-server-webapp-3.1.1.war 拷贝到 tomcat的 webapps 目录,并更名为 cas.war。由于前面已配置好 tomcat 的 https 协议,可以重新启动 tomcat,然后访问: ,如果能出现正常的 CAS 登录页面,则说明 CAS Server 已经部署成功。

虽然 CAS Server 已经部署成功,但这只是一个缺省的实现,在实际使用的时候,还需要根据实际概况做扩展和定制,最主要的是扩展认证 (Authentication) 接口和 CAS Server 的界面。

扩展认证接口

CAS Server 负责完成对用户的认证工作,它会处理登录时的用户凭证 (Credentials) 信息,用户名/密码对是最常见的凭证信息。CAS Server 可能需要到数据库检索一条用户帐号信息,也可能在 XML 文件中检索用户名/密码,还可能通过 LDAP Server 获取等,在这种情况下,CAS 提供了一种灵活但统一的接口和实现分离的方式,实际使用中 CAS 采用哪种方式认证是与 CAS 的基本协议分离开的,用户可以根据认证的接口去定制和扩展。

扩展 AuthenticationHandler

CAS 提供扩展认证的核心是 AuthenticationHandler 接口,该接口定义如清单 1 下:

清单 1. AuthenticationHandler定义

public interface AuthenticationHandler {

/**

* Method to determine if the credentials supplied are valid.

* @param credentials The credentials to validate.

* @return true if valid, return false otherwise.

* @throws AuthenticationException An AuthenticationException can contain

* details about why a particular authentication request failed.

*/

boolean authenticate(Credentials credentials) throws AuthenticationException;

/**

* Method to check if the handler knows how to handle the credentials

* provided. It may be a simple check of the Credentials class or something

* more complicated such as scanning the information contained in the

* Credentials object.

* @param credentials The credentials to check.

* @return true if the handler supports the Credentials, false othewrise.

*/

boolean supports(Credentials credentials);

}

该接口定义了 2 个需要实现的方法,supports ()方法用于检查所给的包含认证信息的Credentials 是否受当前 AuthenticationHandler 支持;而 authenticate() 方法则担当验证认证信息的任务,这也是需要扩展的主要方法,根据情况与存储合法认证信息的介质进行交互,返回 boolean 类型的值,true 表示验证通过,false 表示验证失败。

CAS3中还提供了对AuthenticationHandler 接口的一些抽象实现,比如,可能需要在执行authenticate() 方法前后执行某些其他操作,那么可以让自己的认证类扩展自清单 2 中的抽象类:

清单 2. AbstractPreAndPostProcessingAuthenticationHandler定义

public abstract class AbstractPreAndPostProcessingAuthenticationHandler

implements AuthenticateHandler{

protected Log log = LogFactory.getLog(this.getClass());

protected boolean preAuthenticate(final Credentials credentials) {

return true;

}

protected boolean postAuthenticate(final Credentials credentials,

final boolean authenticated) {

return authenticated;

}

public final boolean authenticate(final Credentials credentials)

throws AuthenticationException {

if (!preAuthenticate(credentials)) {

return false;

}

final boolean authenticated = doAuthentication(credentials);

return postAuthenticate(credentials, authenticated);

}

protected abstract boolean doAuthentication(final Credentials credentials)

throws AuthenticationException;

}

AbstractPreAndPostProcessingAuthenticationHandler 类新定义了 preAuthenticate() 方法和 postAuthenticate() 方法,而实际的认证工作交由 doAuthentication() 方法来执行。因此,如果需要在认证前后执行一些额外的操作,可以分别扩展 preAuthenticate()和 ppstAuthenticate() 方法,而 doAuthentication() 取代 authenticate() 成为了子类必须要实现的方法。

由于实际运用中,最常用的是用户名和密码方式的认证,CAS3 提供了针对该方式的实现,如清单 3 所示:

清单 3. AbstractUsernamePasswordAuthenticationHandler 定义

public abstract class AbstractUsernamePasswordAuthenticationHandler extends

AbstractPreAndPostProcessingAuthenticationHandler{

...

protected final boolean doAuthentication(final Credentials credentials)

throws AuthenticationException {

return authenticateUsernamePasswordInternal((UsernamePasswordCredentials) credentials);

}

protected abstract boolean authenticateUsernamePasswordInternal(

final UsernamePasswordCredentials credentials) throws AuthenticationException;

protected final PasswordEncoder getPasswordEncoder() {

return this.passwordEncoder;

}

public final void setPasswordEncoder(final PasswordEncoder passwordEncoder) {

this.passwordEncoder = passwordEncoder;

}

...

}

基于用户名密码的认证方式可直接扩展自 AbstractUsernamePasswordAuthenticationHandler,验证用户名密码的具体操作通过实现 authenticateUsernamePasswordInternal() 方法达到,另外,通常情况下密码会是加密过的,setPasswordEncoder() 方法就是用于指定适当的加密器。

从以上清单中可以看到,doAuthentication() 方法的参数是 Credentials 类型,这是包含用户认证信息的一个接口,对于用户名密码类型的认证信息,可以直接使用 UsernamePasswordCredentials,如果需要扩展其他类型的认证信息,需要实现Credentials接口,并且实现相应的 CredentialsToPrincipalResolver 接口,其具体方法可以借鉴 UsernamePasswordCredentials 和 UsernamePasswordCredentialsToPrincipalResolver。

JDBC 认证方法

用户的认证信息通常保存在数据库中,因此本文就选用这种情况来介绍。将前面下载的 cas-server-3.1.1-release.zip 包解开后,在 modules 目录下可以找到包 cas-server-support-jdbc-3.1.1.jar,其提供了通过 JDBC 连接数据库进行验证的缺省实现,基于该包的支持,我们只需要做一些配置工作即可实现 JDBC 认证。

JDBC 认证方法支持多种数据库,DB2, Oracle, MySql, Microsoft SQL Server 等均可,这里以 DB2 作为例子介绍。并且假设DB2数据库名: CASTest,数据库登录用户名: db2user,数据库登录密码: db2password,用户信息表为: userTable,该表包含用户名和密码的两个数据项分别为 userName 和 password。

1. 配置 DataStore

打开文件 %CATALINA_HOME%/webapps/cas/WEB-INF/deployerConfigContext.xml,添加一个新的 bean 标签,对于 DB2,内容如清单 4 所示:

清单 4. 配置 DataStore

bean id="casDataSource" class="org.apache.commons.dbcp.BasicDataSource"

property name="driverClassName"

valuecom.ibm.db2.jcc.DB2Driver/value

/property

property name="url"

valuejdbc:db2://9.125.65.134:50000/CASTest/value

/property

property name="username"

valuedb2user/value

/property

property name="password"

valuedb2password/value

/property

/bean

其中 id 属性为该 DataStore 的标识,在后面配置 AuthenticationHandler 会被引用,另外,需要提供 DataStore 所必需的数据库驱动程序、连接地址、数据库登录用户名以及登录密码。

2. 配置 AuthenticationHandler

在 cas-server-support-jdbc-3.1.1.jar 包中,提供了 3 个基于 JDBC 的 AuthenticationHandler,分别为 BindModeSearchDatabaseAuthenticationHandler, QueryDatabaseAuthenticationHandler, SearchModeSearchDatabaseAuthenticationHandler。其中 BindModeSearchDatabaseAuthenticationHandler 是用所给的用户名和密码去建立数据库连接,根据连接建立是否成功来判断验证成功与否;QueryDatabaseAuthenticationHandler 通过配置一个 SQL 语句查出密码,与所给密码匹配;SearchModeSearchDatabaseAuthenticationHandler 通过配置存放用户验证信息的表、用户名字段和密码字段,构造查询语句来验证。

使用哪个 AuthenticationHandler,需要在 deployerConfigContext.xml 中设置,默认情况下,CAS 使用一个简单的 username=password 的 AuthenticationHandler,在文件中可以找到如下一行:bean class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePassword

AuthenticationHandler" /,我们可以将其注释掉,换成我们希望的一个 AuthenticationHandler,比如,使用QueryDatabaseAuthenticationHandler 或 SearchModeSearchDatabaseAuthenticationHandler 可以分别选取清单 5 或清单 6 的配置。

清单 5. 使用 QueryDatabaseAuthenticationHandler

bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler"

property name="dataSource" ref=" casDataSource " /

property name="sql"

value="select password from userTable where lower(userName) = lower(?)" /

/bean

清单 6. 使用 SearchModeSearchDatabaseAuthenticationHandler

bean id="SearchModeSearchDatabaseAuthenticationHandler"

class="org.jasig.cas.adaptors.jdbc.SearchModeSearchDatabaseAuthenticationHandler"

abstract="false" singleton="true" lazy-init="default"

autowire="default" dependency-check="default"

property  name="tableUsers"

valueuserTable/value

/property

property name="fieldUser"

valueuserName/value

/property

property name="fieldPassword"

valuepassword/value

/property

property name="dataSource" ref=" casDataSource " /

/bean

另外,由于存放在数据库中的密码通常是加密过的,所以 AuthenticationHandler 在匹配时需要知道使用的加密方法,在 deployerConfigContext.xml 文件中我们可以为具体的 AuthenticationHandler 类配置一个 property,指定加密器类,比如对于 QueryDatabaseAuthenticationHandler,可以修改如清单7所示:

清单 7. 添加 passwordEncoder

bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler"

property name="dataSource" ref=" casDataSource " /

property name="sql"

value="select password from userTable where lower(userName) = lower(?)" /

property  name="passwordEncoder"  ref="myPasswordEncoder"/

/bean

其中 myPasswordEncoder 是对清单 8 中设置的实际加密器类的引用:

清单 8. 指定具体加密器类

bean id="passwordEncoder"

class="org.jasig.cas.authentication.handler.MyPasswordEncoder"/

这里 MyPasswordEncoder 是根据实际情况自己定义的加密器,实现 PasswordEncoder 接口及其 encode() 方法。

3. 部署依赖包

在以上配置完成以后,需要拷贝几个依赖的包到 cas 应用下,包括:

将 cas-server-support-jdbc-3.1.1.jar 拷贝到 %CATALINA_HOME%/webapps/cas/ WEB-INF/lib 目录。

数据库驱动,由于这里使用 DB2,将 %DB2_HOME%/java 目录下的 db2java.zip (更名为 db2java.jar), db2jcc.jar, db2jcc_license_cu.jar 拷贝到 %CATALINA_HOME%/webapps/cas/WEB-INF/lib 目录。对于其他数据库,同样将相应数据库驱动程序拷贝到该目录。

DataStore 依赖于 commons-collections-3.2.jar, commons-dbcp-1.2.1.jar, commons-pool-1.3.jar,需要到 apache 网站的 Commons 项目下载以上 3 个包放进 %CATALINA_HOME%/webapps/cas/WEB-INF/lib 目录。

扩展 CAS Server 界面

CAS 提供了 2 套默认的页面,分别为“ default ”和“ simple ”,分别在目录“ cas/WEB-INF/view/jsp/default ”和“ cas/WEB-INF/view/jsp/simple ”下。其中 default 是一个稍微复杂一些的页面,使用 CSS,而 simple 则是能让 CAS 正常工作的最简化的页面。

在部署 CAS 之前,我们可能需要定制一套新的 CAS Server 页面,添加一些个性化的内容。最简单的方法就是拷贝一份 default 或 simple 文件到“ cas/WEB-INF/view/jsp ”目录下,比如命名为 newUI,接下来是实现和修改必要的页面,有 4 个页面是必须的:

casConfirmView.jsp: 当用户选择了“ warn ”时会看到的确认界面

casGenericSuccess.jsp: 在用户成功通过认证而没有目的Service时会看到的界面

casLoginView.jsp: 当需要用户提供认证信息时会出现的界面

casLogoutView.jsp: 当用户结束 CAS 单点登录系统会话时出现的界面

CAS 的页面采用 Spring 框架编写,对于不熟悉 Spring 的使用者,在修改之前需要熟悉该框架。

页面定制完过后,还需要做一些配置从而让 CAS 找到新的页面,拷贝“ cas/WEB-INF/classes/default_views.properties ”,重命名为“ cas/WEB-INF/classes/ newUI_views.properties ”,并修改其中所有的值到相应新页面。最后是更新“ cas/WEB-INF/cas-servlet.xml ”文件中的 viewResolver,将其修改为如清单 9 中的内容。

清单 9. 指定 CAS 页面

bean id="viewResolver"

class="org.springframework.web.servlet.view.ResourceBundleViewResolver" p:order="0"

property name="basenames"

list

value${cas.viewResolver.basename}/value

value newUI_views/value

/list

/property

/bean

部署客户端应用

单点登录的目的是为了让多个相关联的应用使用相同的登录过程,本文在讲解过程中构造 2个简单的应用,分别以 casTest1 和 casTest2 来作为示例,它们均只有一个页面,显示欢迎信息和当前登录用户名。这 2 个应用使用同一套登录信息,并且只有登录过的用户才能访问,通过本文的配置,实现单点登录,即只需登录一次就可以访问这两个应用。

与 CAS Server 建立信任关系

假设 CAS Server 单独部署在一台机器 A,而客户端应用部署在机器 B 上,由于客户端应用与 CAS Server 的通信采用 SSL,因此,需要在 A 与 B 的 JRE 之间建立信任关系。

首先与 A 机器一样,要生成 B 机器上的证书,配置 Tomcat 的 SSL 协议。其次,下载;nbsp;的 InstallCert.java,运行“ java InstallCert compA:8443 ”命令,并且在接下来出现的询问中输入 1。这样,就将 A 添加到了 B 的 trust store 中。如果多个客户端应用分别部署在不同机器上,那么每个机器都需要与 CAS Server 所在机器建立信任关系。

配置 CAS Filter

准备好应用 casTest1 和 casTest2 过后,分别部署在 B 和 C 机器上,由于 casTest1 和casTest2,B 和 C 完全等同,我们以 casTest1 在 B 机器上的配置做介绍,假设 A 和 B 的域名分别为 domainA 和 domainB。

将 cas-client-java-2.1.1.zip 改名为 cas-client-java-2.1.1.jar 并拷贝到 casTest1/WEB-INF/lib目录下,修改 web.xml 文件,添加 CAS Filter,如清单 10 所示:

清单 10. 添加 CAS Filter

web-app

...

filter

filter-nameCAS Filter/filter-name

filter-classedu.yale.its.tp.cas.client.filter.CASFilter/filter-class

init-param

param-nameedu.yale.its.tp.cas.client.filter.loginUrl/param-name

param-value;/param-value

/init-param

init-param

param-nameedu.yale.its.tp.cas.client.filter.validateUrl/param-name

param-value;/param-value

/init-param

init-param

param-nameedu.yale.its.tp.cas.client.filter.serverName/param-name

param-valuedomainB:8080/param-value

/init-param

/filter

filter-mapping

filter-nameCAS Filter/filter-name

url-pattern/protected-pattern/*/url-pattern

/filter-mapping

...

/web-app

对于所有访问满足 casTest1/protected-pattern/ 路径的资源时,都要求到 CAS Server 登录,如果需要整个 casTest1 均受保护,可以将 url-pattern 指定为“/*”。

从清单 10 可以看到,我们可以为 CASFilter 指定一些参数,并且有些是必须的,表格 1 和表格 2 中分别是必需和可选的参数:

表格 1. CASFilter 必需的参数

参数名  作用

edu.yale.its.tp.cas.client.filter.loginUrl  指定 CAS 提供登录页面的 URL

edu.yale.its.tp.cas.client.filter.validateUrl  指定 CAS 提供 service ticket 或 proxy ticket 验证服务的 URL

edu.yale.its.tp.cas.client.filter.serverName  指定客户端的域名和端口,是指客户端应用所在机器而不是 CAS Server 所在机器,该参数或 serviceUrl 至少有一个必须指定

edu.yale.its.tp.cas.client.filter.serviceUrl  该参数指定过后将覆盖 serverName 参数,成为登录成功过后重定向的目的地址

表格 2. CASFilter 可选参数

参数名  作用

edu.yale.its.tp.cas.client.filter.proxyCallbackUrl  用于当前应用需要作为其他服务的代理(proxy)时获取 Proxy Granting Ticket 的地址

edu.yale.its.tp.cas.client.filter.authorizedProxy  用于允许当前应用从代理处获取 proxy tickets,该参数接受以空格分隔开的多个 proxy URLs,但实际使用只需要一个成功即可。当指定该参数过后,需要修改 validateUrl 到 proxyValidate,而不再是 serviceValidate

edu.yale.its.tp.cas.client.filter.renew  如果指定为 true,那么受保护的资源每次被访问时均要求用户重新进行验证,而不管之前是否已经通过

edu.yale.its.tp.cas.client.filter.wrapRequest  如果指定为 true,那么 CASFilter 将重新包装 HttpRequest,并且使 getRemoteUser() 方法返回当前登录用户的用户名

edu.yale.its.tp.cas.client.filter.gateway  指定 gateway 属性

传递登录用户名

CAS 在登录成功过后,会给浏览器回传 Cookie,设置新的到的 Service Ticket。但客户端应用拥有各自的 Session,我们要怎么在各个应用中获取当前登录用户的用户名呢?CAS Client 的 Filter 已经做好了处理,在登录成功后,就可以直接从 Session 的属性中获取,如清单 11 所示:

清单 11. 在 Java 中通过 Session 获取登录用户名

// 以下两者都可以

session.getAttribute(CASFilter.CAS_FILTER_USER);

session.getAttribute("edu.yale.its.tp.cas.client.filter.user");

在 JSTL 中获取用户名的方法如清单 12 所示:

清单 12. 通过 JSTL 获取登录用户名

c:out value="${sessionScope[CAS:'edu.yale.its.tp.cas.client.filter.user']}"/

另外,CAS 提供了一个 CASFilterRequestWrapper 类,该类继承自HttpServletRequestWrapper,主要是重写了 getRemoteUser() 方法,只要在前面配置 CASFilter 的时候为其设置“ edu.yale.its.tp.cas.client.filter.wrapRequest ”参数为 true,就可以通过 getRemoteUser() 方法来获取登录用户名,具体方法如清单 13 所示:

清单 13. 通过 CASFilterRequestWrapper 获取登录用户名

CASFilterRequestWrapper  reqWrapper=new CASFilterRequestWrapper(request);

out.println("The logon user:" + reqWrapper.getRemoteUser());

java 连接 db2

DB2有两个驱动方式, 一个是纯Java的JDBC;一个是调用DB2命令行的JDBC驱动.

db2java.zip中的COM.ibm.db2.jdbc.app.DB2Driver是后种. 你在命令行下能够运行是因为环境变量(db2profile)已经设置好了.Eclipse带起来的Java程序没有这些环境变量. COM.ibm.db2.jdbc.app.DB2Driver仅仅是DB2命令的一层封装,没有环境变量,自然找不到命令,自然连接不成功.

换成type4的JDBC driver,或者在eclipse里面设置好db2profile就可以了.

如何读取Excel数据并导入DB2数据库

下面附的代码是一个Demo,功能有两个:一是POI读取Excel,二是DB2数据库的连接和SQL执行。

import Java.io.FileInputStream;

import java.io.IOException;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;

import java.sql.Statement;

import org.apache.poi.hssf.usermodel.HSSFCell;

import org.apache.poi.hssf.usermodel.HSSFRow;

import org.apache.poi.hssf.usermodel.HSSFSheet;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import org.apache.poi.poifs.filesystem.POIFSFileSystem;

public class POITest {

private static Connection conn = null;

private static Statement stmt = null;

private static boolean connectDB2() {

String url = "";

String username = "username";

String password = "password";

//加载驱动程序以连接数据库

try {

//添加类库驱动包db2jcc.jar和db2jcc_license_cu.jar

Class.forName("com.ibm.db2.jcc.DB2Driver");

url = "JDBC:db2://192.168.0.1:50000/dbname";

//添加类库驱动包db2java.jar

//Class.forName("com.ibm.db2.jdbc.app.DB2Driver").newInstance();

//url = "jdbc:db2:njtcdata";

conn = DriverManager.getConnection(url, username, password);

stmt = conn.createStatement();

}

//捕获加载驱动程序异常

catch (ClassNotFoundException cnfex) {

System.err.println("装载JDBC驱动程序失败。");

cnfex.printStackTrace();

return false;

}

//捕获连接数据库异常

catch (SQLException sqlex) {

System.err.println("无法连接数据库");

sqlex.printStackTrace();

//System.exit(1); // terminate program

return false;

}

return true;

}

private static boolean readExcelToDB2() {

POIFSFileSystem fs = null;

HSSFWorkbook wb = null;

try {

fs = new POIFSFileSystem(new FileInputStream("c:\\test.xls"));

wb = new HSSFWorkbook(fs);

} catch (IOException e) {

e.printStackTrace();

return false;

}

HSSFSheet sheet = wb.getSheetAt(0);

HSSFRow row = null;

HSSFCell cell = null;

String name = "";

int id = 0;

int rowNum, cellNum;

int i;

rowNum = sheet.getLastRowNum();

for (i = 0; i = rowNum; i++) {

row = sheet.getRow(i);

//cellNum = row.getLastCellNum();

cell = row.getCell((short) 0);

name = cell.getStringCellValue();

cell = row.getCell((short) 1);

id = (int) cell.getNumericCellValue();

String sql = "insert into TEST(ID, NAME) values(" + id + ",'" + name + "')";

try {

stmt.executeUpdate(sql);

} catch (SQLException e1) {

e1.printStackTrace();

return false;

}

}

return true;

}

public static void main(String[] args) {

if (connectDB2()==true){

if (readExcelToDB2()==true)

System.out.println("数据导入成功");

else

System.out.println("数据导入失败");

}

else{

System.out.println("数据库连接失败");

}

}

}

JAVA JDBC连接DB2数据库问题

JAVA连接DB2

/**了解基础情况**/ 对于Java程序员而言,DB2 提供了两种应用程序编程接口(API):JDBC 和 SQLJ。

JDBC:

JDBC 驱动程序分为旧的/CLI 驱动程序db2java.zip和新的通用 JDBC 驱动程序(Universal JDBC Driver)db2jcc.jar。

JDBC 是一个与供应商无关的动态 SQL 接口,该接口通过标准化的 Java 方法向您的应用程序提供数据访问。

JDBC 类似于 DB2 CLI,因为您无须预编译应用程序代码,也无须将软件包绑定到 DB2 数据库。

作为一个与供应商无关的标准,JDBC 应用程序提供了更多的可移植性—这是当今异构业务基础设施所必需的优点。

在执行 JDBC 应用程序期间,驱动程序将针对当前连接的 DB2 数据库服务器验证 SQL 语句。

访问期间的任何问题都会作为 Java 异常与相应的 SQLSTATE 和 SQLCODE 一起报告给应用程序。

SQLJ:

SQLJ 是一个用于从 Java 应用程序进行数据访问的标准开发模型。

SQLJ API 是在 SQL 1999 规范中定义的。

新的通用 JDBC 驱动程序在一个实现中同时为 JDBC 和 SQLJ API 提供了支持。

JDBC 和 SQLJ 可以在同一个应用程序中互操作。

SQLJ 提供了独特的使用静态 SQL 语句进行开发以及在 DB2 包级别控制访问的能力。

/**JDBC连接方式分析**/

JDBC 驱动程序体系结构分为四种类型:Type1,Type2,Type3,Type4。

Type1:

驱动程序基于 JDBC-ODBC 桥。

因此 ODBC 驱动程序可以与此类 JDBC 驱动程序(由 Sun 提供)结合起来使用。

IBM 不支持 Type 1 驱动程序,因此它不是推荐的环境。

Type2:

驱动程序依靠特定于操作系统的库(共享库)来与 RDBMS 通信。

应用程序将装入这种 JDBC 驱动程序,而驱动程序将使用共享库来与 DB2 服务器通信。

DB2 UDB for Linux, UNIX和 WindowsV8.1 提供了两种不同的 Type 2 驱动程序:

1 旧的/CLI JDBC 驱动程序在文件db2java.zip中提供。

其实现包名称为COM.ibm.db2.jdbc.app.DB2Driver。

该驱动程序目前已被用于进行 J2EE 认证。

其别名“app 驱动程序”源自于一种观念及其包名称,

这种观念就是:此驱动程序将通过远程数据库的本地 DB2 UDB 客户机执行本地连接。

2 通用 JDBC 驱动程序在文件db2jcc.jar中提供。

其实现包名称为com.ibm.db2.jcc.DB2Driver。

此驱动程序是 DB2 UDB for Linux, UNIX 和 Windows V8.1 中的新功能。

在最初的实现(V8.1)中,此驱动程序用于使用 Type 4 驱动程序体系结构与 DB2 服务器进行直接的 Java 连接。

在 DB2 V8.1.2 中,您可以在 Type 2 体系结构中使用此驱动程序。

在 Type 2 体系结构中使用此驱动程序的一个主要原因是为了本地应用程序性能和分布式事务支持。

通用 JDBC Type 2 驱动程序分别使用com.ibm.db2.jcc.DB2XADataSource和com.ibm.db2.jcc.DB2ConnectionPoolDataSource来支持分布式事务和连接池。 注:在将来的版本中不会对旧的/CLI Type 2 驱动程序进行增强。

Type3:

驱动程序是一种纯 Java 实现,它必须与 DB2 JDBC Applet 服务器(DB2 JDBC Applet Server)通信才能访问 DB2 数据。

此类驱动程序旨在使 Java applet 能访问 DB2 数据源。

常被称作“网络(net)驱动程序”,它是根据其包名COM.ibm.db2.jdbc.net命名的。DB2 V8.1 支持网络驱动程序,可以将其用于 JDBC 应用程序。

要求db2java.zip驱动程序总是处于与 DB2 Applet 服务器相同的维护级别。

如果驱动程序在 applet 内使用,这就不是一个问题,因为浏览器会在应用程序执行期间下载相应的db2java.zip文件。

许多客户使用 Type3 驱动程序而不是 Type2 驱动程序,以避免必需的 DB2 客户机安装和必需的DB2 CATALOG DATABASE命令,后者用于创建使用旧的/CLI 驱动程序进行 Type 2 连接所必需的数据库目录信息。

目前,WebSphere Application Server 和其它 J2EE 服务器不支持 IBM Type 3 驱动程序,因为该驱动程序不支持分布式事务(JTA)。

将来的版本不会对 Type 3 驱动程序进行增强。

鼓励使用通用 JDBC Type 4 驱动程序来替代 Type 3 驱动程序。

Type4:

驱动程序是仅用于 Java 的 JDBC 驱动程序,它直接连接到数据库服务器。

DB2 UDB for Linux, UNIX 和 Windows V8.1 引入了称为“通用 JDBC 驱动程序(Universal JDBC driver)”的 Type 4 驱动程序。

通用 JDBC 驱动程序在文件db2jcc.jar中提供。

其实现包名为com.ibm.db2.jcc.DB2Driver。

请注意,通用 Type 2 和通用 Type 4 驱动程序具有相同的实现类名称。

有两种方法可以区别 DB2 在内部将实例化哪个驱动程序:

使用连接特性来确定连接是否使用共享库(Type2),或者驱动程序是否会启动来自 Java 应用程序的直接连接(Type4)。

重要:就 DB2 UDB V8.1.2 而言,通用 JDBC 驱动程序要求 CLASSPATH 中有许可证 JAR 文件和db2jcc.jar文件。

以下是所需的许可证 JAR 文件:

Cloudscape Network Server V5.1:db2jcc_license_c.jar

DB2 UDB V8 for Linux, UNIX 和 Windows 服务器:db2jcc_license_su.jar

DB2 UDB for iSeries and z/OS 服务器(与 DB2 Connect 和 DB2 Enterprise Server Edition 一起提供):db2jcc_license_cisuz.jar ****************************************************************驱动程序类型:db2java.zip, db2jcc.jar

注意:假如你使用db2java.zip,且web服务器使用Tomcat的话,请将db2java.zip改名为db2java.jar,最好将zip解压再用jar命令打包,直接改文件类型也行(呵呵,按照jar文件严格意义上来讲这是不符合文法的少了描述性文件:MANIFEST.MF,能用就行)

还有一般情况下:就是使用 db2java.zip的话需要安装db2客户端, 使用db2jcc.jar是通过网络直接来连接的无需安装db2客户端(假如用在type2上还是要装客户端的)type2:

使用db2java.zip:

jdbc.driverClassName=COM.ibm.db2.jdbc.app.DB2Driver

jdbc.url=jdbc:db2:dataBaseName

假如你的工具使用的是myeclipse且使用的是tomcat plugin的话,请将db2jdbc.dll 拷贝到 %JAVA_HOME%/bin下,否则不行地啦

是不是其他类型的使用db2java.zip驱动也有这个问题呢,不知道,没试过,有空试一下

使用db2jcc.jar:

jdbc.driverClassName=com.ibm.db2.jcc.DB2Driver

jdbc.url=jdbc:db2:dataBaseName

type3:

驱动:db2java.zip

jdbc.driverClassName=COM.ibm.db2.jdbc.net.DB2Driver

jdbc.url=jdbc:db2://ip:6789/DBNAME

注意:要在数据库上执行 db2jstrt 6789 (这句启动了db2jd进程,6789是默认的服务器侦听jdbc2连接的端口,也可以设置成另外的任意不冲突的端口。)

type4:

驱动:db2jcc.jar

数据库字符集必须设置为utf-8

jdbc.driverClassName=com.ibm.db2.jcc.DB2Driver

jdbc.url=jdbc:db2://ip:port/DBNAME

水晶报表JAVA调用报错求助

我的解决方案:

一:下载crystal reports 10 for BEA weblogic workshop

二:安装crystal reports 10 for BEA weblogic workshop;

三:如果安装成功,则在C:\Program Files\Common Files\Crystal Decisions\2.5\bin目录下,可以找到CRDB_JavaServer.ini文件.该文件很重要,里面的内容关系到水晶报表如何访问数据库.我的水晶报表采用jdbc的方式访问oracle数据库,配置如下: [Common] PATH = C:\bea\jdk141_05\bin CLASSPATH = C:\Projects\Drivers\jdbc\classes12.jar;

C:\Projects\Drivers\jdbc\msbase.jar;

C:\Projects\Drivers\jdbc\mssqlserver.jar;

C:\Projects\Drivers\jdbc\msutil.jar;

C:\Projects\Drivers\jdbc\common.jar;

C:\Projects\Drivers\jdbc\db2fs.jar;

C:\Projects\Drivers\jdbc\db2java.zip;

C:\Projects\Drivers\jdbc\db2jcc.jar;

C:\Projects\Drivers\jdbc\weblogic.jar;

D:/Progra~1/IBM/WebSph~1/Applic~1\v5.1.1\runtimes\base_v51\lib\naming.jar;

D:/Progra~1/IBM/WebSph~1/Applic~1\v5.1.1\runtimes\base_v51\lib\naming

client.jar;

D:/Progra~1/IBM/WebSph~1/Applic~1\v5.1.1\runtimes\base_v51\lib\naming

server.jar;

D:/Progra~1/IBM/WebSph~1/Applic~1\v5.1.1\runtimes\base_v51\lib\cmImpl

.jar;

D:/Progra~1/IBM/WebSph~1/Applic~1\v5.1.1\runtimes\base_v51\lib\j2cImp

l.jar;

C:/projects/drivers/jdbc/weblogic.jar;

C:\Program Files\Common Files\Crystal

Decisions\2.5\bin\CRDBJavaServer.jar;

C:\bea\weblogic81\server\lib\ojdbc14.jar

IORFileLocation = ${TEMP}

JavaServerTimeout = 1800

JVMMaxHeap = 64000000

JVMMinHeap = 32000000

[CRDB_JDBC]

CacheRowSetSize = 100

JDBCURL = jdbc:oracle:thin:@192.168.1.99:1521:pwsc

JNDIURL =

JDBCUserName = testuser

JDBCDriverName = oracle.jdbc.driver.OracleDriver

JNDIUserName = weblogic

JNDIConnectionFactory =

JNDIInitContext = /

GenericJDBCDriverBehavior = DB2

[CRDB_XML]

PREREADNBYTE = 5000

CacheRowSetSize = 100

XMLLOCALURL =

SCHEMALOCALURL =

XMLHTTPURL =

SCHEMAHTTPURL =

USETEMPFile = TRUE

java的扩展jar包有哪些

jar包 用途

axis.jar SOAP引擎包

commons-discovery-0.2.jar 用来发现、查找和实现可插入式接口,提供一些一般类实例化、单件的生命周期管理的常用方法.

jaxrpc.jar Axis运行所需要的组件包

saaj.jar 创建到端点的点到点连接的方法、创建并处理SOAP消息和附件的方法,以及接收和处理SOAP错误的方法.

wsdl4j-1.5.1.jar Axis运行所需要的组件包

activation.jar JAF框架的jar包

annotations-api.jar 使用注解所需jar

ant.jar 用于自动化调用程序完成项目的编译,打包,测试等

aopalliance-1.0.jar 支持Spring AOP

asm-2.2.3.jar ASM字节码库

asm-commons-2.2.3.jar ASM字节码库

asm-util-2.2.3.jar Java字节码操纵和分析框架

aspectjrt.jar 处理事务和AOP所需的包

aspectjweaver.jar 处理事务和AOP所需的包

axiom-api-1.2.7.jar Axis 对象模型

axiom-impl-1.2.7.jar Axis 对象模型

bcprov-jdk15-140.jar 基于java1.5 的加密算法实现

bfmclientmodel.jar 使用WebSphere所需jar包

bpcclientcore.jar 使用WebSphere所需jar包

bpe137650.jar 提供远程访问BPE容器的实现。

bsh-2.0b4.jar 解决负载逻辑运算

c3p0-0.9.0.jar 开放源代码的JDBC连接池

cglib-nodep-2.1_3.jar Spring中自动代理所需jar包

cobertura.jar 测量测试覆盖率

commons-beanutils-1.7.0.jar 动态的获取/设值Java Bean的属性

commons-chain-1.1.jar 实现责任链设计模式的Java 类库

commons-codec-1.3.jar 用来处理常用的编码方法的工具类包,例如DES、SHA1、MD5、Base64等等

commons-collections-3.1.jar 对标准java Collection的扩展

commons-collections.jar 对标准java Collection的扩展

commons-digester-1.8.jar 用于处理struts-config.xml配置文件

commons-fileupload-1.1.1.jar struts上传文件

commons-httpclient-3.1.jar 用来简化HTTP客户端与服务器端进行各种通信编程实现

commons-io-1.1.jar 针对java.io.InputStream和Reader进行了扩展

commons-lang-2.4.jar 对java.lang.*的扩展

commons-logging-1.1.1.jar 日志包

commons-pool-1.3.jar 实现对象池化框架

commons-validator-1.3.1.jar 用来把验证规则程序提取出来,以供重复使用

db2jcc.jar java连接DB2所需jar

db2jcc_license_cu.jar java连接DB2所需jar

dom4j-1.6.1.jar 解析XML

ehcache-1.2.4.jar hibernate的二级缓存如果用ehcache的时候需要此jar包

emf.jar 基于Eclipse的模型框架

ezmorph-1.0.6.jar 使用JSON所需的jar包

FastInfoset-1.2.2.jar 使用WebService所需的jar包

freemarker-2.3.8.jar Strus2支持的一种表现层框架

geronimo-activation_1.1_spec-1.0.2.jar Apache Geronimo所带jar包,

geronimo-annotation_1.0_spec-1.1.1.jar Apache Geronimo所带jar包

geronimo-javamail_1.4_spec-1.3.jar Apache Geronimo所带jar包

geronimo-jaxws_2.1_spec-1.0.jar Apache Geronimo所带jar包

geronimo-jms_1.1_spec-1.1.1.jar Apache Geronimo所带jar包

geronimo-servlet_2.5_spec-1.2.jar Apache Geronimo所带jar包

geronimo-stax-api_1.0_spec-1.0.1.jar Apache Geronimo所带jar包

hibernate3.jar Hibernate3的核心jar包

htmclientmodel.jar 使用WebSphere所需jar包

jakarta-oro.jar 一套文本处理工具,提供per15.0兼容的表达式,AWK-like表达式,Glob表达式。

javassist.jar Javassist 字节码解释器

jaxb-api-2.1.jar 使用WebService所需的jar包

jaxb-impl-2.1.7.jar 使用CXF所需jar包

jaxb-xjc-2.1.7.jar 使用CXF所需jar包

jaxen-1.1.1.jar 解析XML

jcifs-1.2.22.jar 实现单点登陆

jdom2-1.0.jar 解析XML

jdom-1.0.jar 解析XML

jettison-1.0.1.jar 使用CXF所需jar包

jetty-6.1.9.jar Jetty Http服务器jar

jetty-util-6.1.9.jar Jetty Http服务器jar

jra-1.0-alpha-4.jar 使用CXF所需jar包

js-1.6R7.jar 使用CXF所需jar包

json-lib-2.2.3-jdk13.jar 使用JSON所需的jar包

jsonplugin-0.25.jar strus2的JSON插件

jsr311-api-0.8.jar 使用CXF所需jar包

jstl.jar JSTL标签库

jta.jar 标准的 JAVA 事务处理接口

junit.jar 用于单元测试

jxl.jar 通过java操作excel表格的工具类库

ldap.jar JNDI目录服务和LDAO服务器所需的jar

ldapbp.jar JNDI目录服务和LDAO服务器所需的jar

log4j-1.2.15.jar 提供日志功能

mail.jar java发送邮件jar包

neethi-2.0.4.jar 使用CXF所需jar包

odmg-3.0.jar ODMG是一个ORM的规范,Hibernate实现了ODMG规范,这是一个核心的库

ognl-2.6.11.jar struts2中OGNL语言

ojdbc14.jar Oracle数据库驱动包

opensaml-1.1.jar 使用CXF所需jar包

oro-2.0.8.jar Validator框架所需的jar包

oscache-2.1.jar Java 对象的缓存工具

poi-3.1-FINAL-20080629.jar 操作exce所需jar包

poi-contrib-3.1-FINAL-20080629.jar 操作exce所需jar包

poi-ooxml-3.6-20091214.jar 提供对office的word、excel、visio及ppt的操作

poi-ooxml-schemas-3.6-20091214.jar 提供对office的word、excel、visio及ppt的操作

poi-scratchpad-3.1-FINAL-20080629.jar 提供对office的word、excel、visio及ppt的操作

processCommon.jar IBM WebSphere 运行所需jar

ProcessCommonLibrary.jar IBM WebSphere 运行所需jar

processIdentity.jar IBM WebSphere 运行所需jar

ProcessInformation.jar 进程监视软件包

proxool-0.9.1.jar 数据库连接池

proxool-cglib.jar 数据库连接池

quartz-1.6.0.jar 开源作业调度框架

saaj-api-1.3.jar 使用axis所需的jar

saaj-impl-1.3.2.jar 使用axis所需的jar

serializer-2.7.1.jar XML序列化

slf4j-jdk14-1.5.6.jar 整合各种日志框架的工具

spring208.jar spring核心框架

spring-ldap-1.2-RC1.jar spring下LDAP

spring-mock.jar spring的测试框架

standard.jar 使用JSTL标签库所需的jar

stax-api-1.0.1.jar 解析XML

struts2-core-2.0.14.jar struts2核心jar

struts2-spring-plugin-2.0.6.jar struts2整合Spring所需jar

taglibs-datetime.jar Apache开源组织提供标签库,用于格式化日期。

taglibs-mailer.jar 用于发送邮件

taglibs-string.jar Apache开源组织提供标签库,用于对String的操作。

task137650.jar Portal技术在SOA系统集成应用中实现所需的jar

utility.jar Apache开源组织提供标签库

velocity-1.5.jar 一个免费的开源模板框架

wsdl4j-1.6.2.jar 用来解析服务的WSDl文件

wss4j-1.5.4.jar 创建CXF所需jar

wstx-asl-3.2.6.jar 创建CXF所需jar

xbean-spring-2.8.jar 使用xfire所需jar

xerces-2.6.2.jar XML解析器

xfire-all-1.2.6.jar 用于实现WebService

XmlSchema-1.1.jar 使用xfire所需jar

xwork-2.0.7.jar WebWork核心jar

这只是一部分,还有很多。

db2java.jar的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、db2java.jar的信息别忘了在本站进行查找喔。