问题1:
配置Javabeans时,出现错误信息"没有找到本地方法库:java.lang.UnsatisfiedLinkError"。
错误原因:
trsbean.jar对应的本地方法库trsbean.dll或libtrsbean.so配置不正确。
解决方法:
1.确认安装介质在传输过程中没有损坏,如ftp传输需要使用二进制模式。
2.确认操作系统的版本和JDK的位数。
JavaBeans的位数必须和JDK的位数保持一致,如32位JDK必须使用32位JavaBeans。
JavaBeans的平台必须和JDK的平台保持一致。如AIX5.1平台的JavaBeans只支持AIX5.1/5.2/5.3,不支持AIX4.3或其它厂商的Unix。
3.注意libtrsbean.so的文件属性。
如HP平台,必须设置libtrsbean.sl的可执行权限。
4.注意trsbean.dll/libtrsbean.so的存放路径,应该包含在JAVA本地方法库的搜索路径。
Windows平台:
JAVA本地方法库的搜索路径包含环境变量PATH和%JAVA_HOME%/jre/bin;
Linux/Solaris平台:
JAVA本地方法库的搜索路径包含环境变量LD_LIBRARY_PATH;
AIX平台:
JAVA本地方法库的搜索路径包含环境变量LIBPATH;
HPUX平台:
JAVA本地方法库的搜索路径包含环境变量SHLIB_PATH;
JDK1.4以上版本,也可以在java启动参数中设置系统属性java.library.path, 指向libtrsbean.so所在的目录,如java -Djava.library.path="/home/trs/trsbean"
通常情况下,在应用服务器的启动脚本中指定本地方法库的搜索路径。
问题2:
多套应用同时使用javabean,出现错误信息"java.lang.UnsatisfiedLinkError: Native Library trsbean.dll already loaded in another classloader"。
错误原因:
一个JAVA进程,JAVA本地方法库只能被加载一次,如果被多次加载就会出现该错误。
解决方法:
保证在一个JAVA虚拟机中,TRS Javabeans的本地方法库只被加载一次。
如果应用服务器上的多个应用使用TRS JavaBeans,不能将trsbean.jar部署到每个应用下。
建议只保留一套TRS JavaBeans,在应用服务器中配置全局的trsbean.jar。
以Tomcat4.1.36, Windows系统为例:
将trsbean.jar放在%TOMCAT_HOME%/common/lib,或修改启动脚本中的CLASSPATH变量。
将trsbean.dll放在系统动态库的搜索路径。
问题3:
为什么TRSConnection和TRSResultSet需要close? 能否将TRS对象放在WEB应用的Session中?
答案3:
TRSConnection对应TRS连接, TRSResultSet对应TRS结果集,占用少量的Native内存。
如果程序不调用close方法关闭,会造成Native内存泄露,严重时导致java进程出现OutOfMemory错误。
如果将TRS对象放在Session中,WEB客户端快速翻页时会导致记录内容的不一致。