【问题标题】:WLST vs Jython Weblogic 10.3.3WLST 与 Jython Weblogic 10.3.3
【发布时间】:2012-08-09 10:45:38
【问题描述】:

我有几个关于 WLST 和 Jython 的问题:

操作系统:Unix/Linux

情况:
1) 无法自动包含使用writeIniFile 创建的wlst-file
2)使用org.python.util.jython而不缓存消息

信息:
1) wlst.py 在交互式java weblogic.WLST 会话中使用writeIniFile 生成
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 版本?

欢迎任何和所有帮助。

【问题讨论】:

    标签: jython weblogic-10.x wlst


    【解决方案1】:

    是的,您可以使用另一个 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 '"$@"'
    

    作为一种解决方法,你必须从 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: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 ...
    

    【讨论】:

      【解决方案2】:

      1) 包含的 jython 的公共模块应该放在哪里? 你可以放置通用模块,我没有测试过,但如果它在类路径中,它必须为 jython 选择新包。

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-12
        • 1970-01-01
        • 2012-12-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多