0

我们基于 J2EE 的应用程序在 Websphere Applicaiton Server-AIX 服务器上运行,并安装了 2 个版本的 DB2 客户端(Db2v9.5、Db2v9.7)。

我有一个 db SAMPLE,它在两个具有相同别名 SAMPLE 的 DB2 客户端版本中远程编目。

如果我从 DB2v9.5 取消编目数据库,则应用程序将关闭。但是,如果我从 DB2v9.7 客户端删除它,则应用程序不会受到影响。

从上面的这个测试中,我们了解到一些默认情况下是如何使用 DB2v9.5 的。

我现在的目标是使 SAMPLE 仅指向 DB2v9.7,并且应用程序必须在没有 DB2v9.5 中的示例数据库的情况下工作。

关于如何做的任何建议?

使用的 JDBC 字符串是“jdbc:db2:sample”(注意:DB2 客户端没有端口)

我已经尝试将 $LIBPATH 和 $LD_LIBRARY_PATH 指向 DB2v9.7 本机 lib32 路径,并将 AIX 用户 ID 的 .profile 指向 DB2v9.7/sqllib/db2profile ,但没​​有运气。

问候,钱德鲁

4

3 回答 3

1

You have to check the default environment where Java is running, you will detect which Client is using. You could do that by executing "env" via Runtime, and see the defaults.

For example, with a small app like this:

import java.lang.*;
import java.io.*;

public class Test {
 public static void main (String[] args) throws Exception {
  Process p = Runtime.getRuntime().exec("env");
  String line;
  BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
  while ((line = input.readLine()) != null) {
    System.out.println(line);
  }
  input.close();
  System.out.println("library " + System.getProperty("java.library.path"));
 }
}

You call it with the same parameters you call your other application (JDBC driver included), and then check the output.

java <your params, classpath to db2java.zip> Test

Check the parameters like DB2INSTANCE, PATH, CLASSPATH.

More information in http://www.ibm.com/developerworks/data/library/techarticle/dm-0512kokkat/

于 2013-12-10T14:50:00.083 回答
0

列出 /usr/lib 和 /usr/include 中的文件。您是否看到任何指向 DB2 的文件?

ls -l /usr/lib
ls -l /usr/include

很可能,您执行了一个 db2ln,它创建了到特定 DB2 Client (9.5) 的链接。每次执行 Java 应用程序时,LIBPATH 优先于 /usr/lib,而不是指定的 DB2 版本

LIBPATH=/usr/lib:/lib:/opt/IBM/db2/V9.7/lib32

您可以运行 db2rmln 命令来删除链接。

看看这个页面:http: //publib.boulder.ibm.com/infocenter/db2luw/v9r5/topic/com.ibm.db2.luw.qb.server.doc/doc/t0006747.html

于 2013-12-10T15:23:23.393 回答
0

此问题已通过完全杀死从相同版本和 java 路径运行的所有 JVM 并重新启动它们来解决。(在我们的例子中,即使在关闭 Dmgr、Node 和 CL 之后,AIX JVM pConsole 仍在运行。pConsole 和 WAS 都使用相同的 java)

这就是更新的共享本机库没有反映在 WAS 中的原因。但是在杀死并重新启动每个 java 实例之后,包括除 WAS 之外的那些本地库都反映在日志中。

很抱歉这么久才更新答案。

于 2015-01-01T11:34:40.790 回答