1

GlassFish V3 + TimesTen 有一个非常奇怪的问题。我的配置是:

  1. GlassFish Server 开源版 3.1.2.2(内部版本 5)
  2. TimesTen 发布 11.2.2.2.0
  3. Java(TM) SE 运行时环境(内部版本 1.6.0_31-b04) Java HotSpot(TM) 64 位服务器 VM(内部版本 20.6-b01,混合模式)。
  4. Linux 2.6.32-131.0.15.el6.x86_64
  5. 两台机器具有相同的硬件(第二台服务器是第一台的克隆)。

GlassFish、TimesTen、Java 和 Linux 在两台服务器上都是相同的。

我在服务器一上有 GlassFish DAS。使用一个实例(在本地主机上)成功创建节点代理,部署我的应用程序,它与 TimesTen 数据库通信,在 GlassFish 中配置 JVM 选项,我的应用程序运行完美。我已经用 Soap UI 对其进行了测试,并得到了正确的响应。

但是当我在远程服务器 2 上创建节点 + 实例时,应用程序将无法在这台机器上运行。glassfish 实例的配置是相同的,因为实例在同一个集群中。

我在 server.log 中有这些错误:

无法分配连接,因为:加载本机库/缺少方法时出现问题:/opt/TimesTen/tt1122/lib/libttJdbc.so:libtten.so:无法打开共享对象文件:没有这样的文件或目录

两个文件的权限:

-rwxr-x---. 1 esb esb 444K Dec 23  2011 /opt/TimesTen/tt1122/lib/libttJdbc.so 

-rwxrwxrwx. 1 esb esb 18M Apr 10  2012 /opt/TimesTen/tt1122/lib/libtten.so

环境。两台机器上的变量 LD_LIBRARY_PATH 相同:

LD_LIBRARY_PATH=/opt/TimesTen/tt1122/lib

实例根文件夹中的库在两台服务器上是相同的。我会尝试添加 JVM 选项:

-Djava.library.path=/opt/TimesTen/tt1122/lib 

但它没有效果,server.log中的错误是一样的。我还能如何解决这个问题?

PS:刚才试过这个:在第二台机器上安装相同的 glassfish,在 domain1/libs 目录中复制库,在服务器上配置 JDBC 资源,部署我的应用程序,它的工作完美!但它不适用于集群配置......

PPS:在 glassfish v 2.1.1 上一切正常。我在具有相同应用程序的 4 台服务器上有 7 个实例。

4

1 回答 1

0

好的,我发现了。像这样编写简单的脚本:

export LD_LIBRARY_PATH="/opt/TimesTen/tt1122/lib" /glassfish3/glassfish/bin/asadmin start-local-instance --user admin --passwordfile /glassfish3/passwd --node YOURNODE --sync normal YOURINSTANCE

然后使用此脚本启动实例。然后我的应用程序工作正常:)

于 2013-04-23T20:35:37.010 回答