WLST与Jython在Weblogic 10.3.3中的区别

3
我有几个关于WLST和Jython的问题:
操作系统:Unix/Linux
情况: 1)无法自动包含使用writeIniFile创建的wlst-file 2)在不缓存消息的情况下使用org.python.util.jython
信息: 1)通过在交互式java weblogic.WLST会话中使用writeIniFile生成的wlst.py 2)使用java org.python.util.jython启动jython时显示sys-package-mgr: can't create package cache dir, '/opt/oracle/fmw/fmw11gR1PS2/wlserver_10.3/server/lib/weblogic.jar/cachedir/packages'消息。 3)常用模块的位置未知。对于weblogic.WLST,这是/wlserver_10.3/common/wlst/modules
问题: 1)应将常见模块放在哪里,以包含Jython? 2)如何更改Jython缓存位置? 3)是否能够升级到另一个Jython版本?
欢迎任何帮助。
2个回答

4

是的,您可以使用其他Jython版本,但这不受支持,并且您必须忍受一些缺陷。我们使用的是jython 2.7a2。

以下是我们用来启动jyton的脚本。 它将更改缓存位置并将FKUTILS目录添加到类路径中(这是我们存储自己模块的地方)

#!env sh
# Script to run jython with wlst as a module
# set up WL_HOME, the root directory of your WebLogic installation
WL_HOME="/produkter/oracle/weblogic/wlserver"
WLST_OFFLINE_LOG=/tmp/wlstblaj.$$.log
WLST_CACHEDIR=~/.jythoncachedir
FKUTILS="/program/fkuitls/"
JYTHON="/program/jython"

killed () {
   echo ""
   echo Cleaning up tempfile: $WLST_OFFLINE_LOG
   rm -rf $WLST_OFFLINE_LOG
   trap - 0
}


umask 027
touch $WLST_OFFLINE_LOG
chmod 777 $WLST_OFFLINE_LOG
if [ ! -d $WLST_CACHEDIR ] ; then
    mdkir -p $WLST_CACHEDIR
fi

trap killed 0 1 2 15
# set up common environment
. "${WL_HOME}/server/bin/setWLSEnv.sh" 2>&1 > /dev/null

CLASSPATH="${CLASSPATH}${CLASSPATHSEP}${FMWLAUNCH_CLASSPATH}${CLASSPATHSEP}${DERBY_CLASSPATH}${CLASSPATHSEP}${DERBY_TOOLS}${CLASSPATHSEP}${POINTBASE_CLASSPATH}${CLASSPATHSEP}${POINTBASE_TOOLS}:${FKUTILS}"

#echo CLASSPATH=${CLASSPATH}

JVM_ARGS="-classpath ${JYTHON}/jython.jar:${CLASSPATH}  -Dpython.path=${CLASSPATH}:${HOME} ${WLST_PROPERTIES} ${JVM_D64} ${MEM_ARGS} ${CONFIG_JVM_ARGS} -Dpython.cachedir=$WLST_CACHEDIR -Dwlst.offline.log=$WLST_OFFLINE_LOG -Dweblogic.management.confirmKeyfileCreation=true -Djava.security.egd=file:///dev/urandom"

eval '"${JAVA_HOME}/bin/java"' ${JVM_ARGS} org.python.util.jython '"$@"'

作为一种解决方法,你需要修改wlst文件来自writeInitfile函数处理(可能仍然会出现堆栈跟踪,但它可以正常工作)。

from weblogic.management.scripting.utils import WLSTUtil
import sys

origPrompt = sys.ps1
# Workaround start..    
try:
    theInterpreter = WLSTUtil.ensureInterpreter()
except:
    pass

theInterpreter = WLSTUtil.ensureInterpreter()

# End workaround.

WLSTUtil.ensureWLCtx(theInterpreter)
execfile(WLSTUtil.getWLSTScriptPath())
execfile(WLSTUtil.getOfflineWLSTScriptPath())
exec(WLSTUtil.getOfflineWLSTScriptForModule())
execfile(WLSTUtil.getWLSTCommonModulePath())
theInterpreter = None
sys.ps1 = origPrompt
modules = WLSTUtil.getWLSTModules()
for mods in modules:
  execfile(mods.getAbsolutePath())
wlstPrompt = "false"

接下来,您只需启动Jython第一个脚本,并导入您的WLST文件。

例如:

 Jython 2.7a2 (default:9c148a201233, May 24 2012, 15:49:00) [Java
 HotSpot(TM) 64-Bit Server VM (Sun Microsystems Inc.)] on java1.6.0_34
 Type "help", "copyright", "credits" or "license" for more information.
 >>> import fkwl as wl
 >>> wl.connect('user','password','t3://server') 
 Connecting to t3://server with userid user ...

1

1) 包含Jython的常用模块应该放在哪里? 您可以将常用模块放置在类路径中,我尚未测试过,但如果它在类路径中,则必须选择Jython的新包。

2) 如何更改Jython缓存位置? 临时目录必须对所有用户可访问。检查/var/或/tmp强制执行的权限,其中WLSTTemp文件夹为参考进行包缓存 修复缓存问题

3) 是否可以更新到另一个Jython版本? 它可以通过Jython进行扩展,WLST包括jython.jar。要使用所有其他Jython模块,您应安装Jython并将sys.path指向Jython安装目录。提示在讨论线程中提供。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接