2012-08-09 94 views
3

我有一个关于WLST和Jython几个问题:WLST VS的Jython的Weblogic 10.3.3

操作系统:Unix/Linux操作系统

现状:
1)无法通过包括使用writeIniFile自动
创建wlst-file 2)采用org.python.util.jython没有缓存消息

信息:
1)通过在使用writeIniFile产生wlst.py交互java weblogic.WLST会话
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这是<WL-Home>/wlserver_10.3/common/wlst/modules

问题:
1)其中,应该通用模块被放置在包含的jython?
2)如何更改jython缓存位置?
3)是否有可能更新到另一个jython版本?

任何和所有的帮助欢迎。

回答

1

1)应该在哪里为通用模块放置包含的jython? 您可以放置​​通用模块,我没有测试它,但是如果它在classpath中,它必须为jython选择新的包。

2)如何更改jython缓存位置? 临时目录必须可供所有用户访问。检查/ var /或/ tmp的权限,其中WLSTTemp文件夹使包缓存供参考 Caching issue fix

3)是否可以更新到另一个jython版本? 它可以用jython扩展,WLST包含jython.jar。要使用所有其他jython模块,您应该安装jython并将sys.path指向jython安装目录。提示可在discussion thread

4

是的,你可以使用另一个jython,但它不被支持,并有一些你必须忍受的deffects。我们使用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 '"[email protected]"' 

而且作为一种变通方法,你必须修改从writeInitfile的WLST文件,(你可能仍然得到一个堆栈跟踪,但它会工作)

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:9c148a2, 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 ... 
相关问题