为什么在weblogic中beanshell可以执行一般的脚本语句,但是不能引用其他包里面的类的问题.其实这不是beanshell的问题而是weblogic本身已经内置了beanshell类,只不过版本比较老一点.
我们知道系统在引用类的时候是按照在先找到先用的原理调用的,也就是说假如我们在weblogic调用它自己内置的beanshell类之前找到我们设置的beanshell包即可
另外我们在开发web程序的时候需要引用很多的包文件,每次在发布的时候包含这些包文件,程序会变得很大,发布起来很慢.可以按照下面的解决方法解决这类问题,大家假如有更好的方法可以贴出来共同分享.
解决方法如下(以Linux为例)
1.建立一个放置常用包的文件夹
比如:/home/web/lib
2.把常用的包放到这个目录中,比如
mail.jar(可以在Jbuilder8_home/lib/下找到)
jdom.jar(可以在Jbuilder8_home/lib/下找到)
xercesImpl.jar(可以在Jbuilder8_home/lib/下找到 jdom需要使用这个包)
xmlParserAPIs.jar(可以在Jbuilder8_home/lib/下找到 jdom需要使用这个包)
junit.jar(可以在Jbuilder8_home/thirdparty/junit3.8/找到)
rowset.jar(可以到http://developer.Java.sun.com/developer/earlyAccess/index.Html下载)
bsh-1.2b7.jar(可以到http://www.beanshell.org下载)
3.建立一个sh脚本(比如setLib)
#!/bin/sh
#****************************************************
# defined the extends lib jar
#****************************************************
EXT_LIB_JAR="/home/web/lib/mail.jar:/home/web/lib/bsh-1.2b7.jar:home/web/lib/junit.jar:/home/web/lib/jdom.jar:/home/web/lib/exercesImpl.jar:/home/web/lib/xmlParserAPIs.jar:/home/web/lib/rowset.jar"
echo ******************************************
echo EXT_LIB_JAR=${EXT_LIB_JAR}
echo ******************************************
4.修改startWeblogic.sh文件
一般最后一行为. "/home/web/bea/weblogic700/server/bin/startWLS.sh"
在这句话之前加入引用setLib.sh文件的命令如下
. "/home/web/lib/setLib.sh"
修改后的内容如下
……
. "/home/web/lib/setLib.sh"
. "/home/web/bea/weblogic700/server/bin/startWLS.sh"
5.修改startWLS.sh文件
在home/web/bea/weblogic700/server/bin/startWLS.sh文件中找到
CLASSPATH="${JAVA_HOME}/lib/tools.jar${CLASSPATHSEP}${WL_HOME}/server${CLASSPATHSEP}${WL_HOME}/server/lib/weblogic_sp.jar${CLASSPATHSEP}${WL_HOME}/server/lib/weblogic.jar${CLASSPATHSEP}${CLASSPATH}"
改成
CLASSPATH="${EXT_LIB_JAR}${CLASSPATHSEP}${JAVA_HOME}/lib/tools.jar${CLASSPATHSEP}${WL_HOME}/server${CLASSPATHSEP}${WL_HOME}/server/lib/weblogic_sp.jar${CLASSPATHSEP}${WL_HOME}/server/lib/weblogic.jar${CLASSPATHSEP}${CLASSPATH}"