【问题标题】:How to extract Deployed OSB Source code from Environment or SB Console or Weblogic如何从环境或 SB 控制台或 Weblogic 中提取已部署的 OSB 源代码
【发布时间】:2018-06-18 02:21:21
【问题描述】:

任何人都可以帮助我从 Environment 或 SB Console 或 Weblogic 获取源代码。

我创建了导出 JAR 的 python 脚本,但我需要源代码。因为如果我解压 jar,我不会得到确切的源代码,因为文件名会缩短,并且一些代码是在 wsdls、xqueries 等中自行添加的。我不希望这样。

这是我的 wlst Python/Jython 脚本:

    from java.io import FileInputStream
    from java.io import FileOutputStream
    from java.util import ArrayList
    from java.util import Collections
    from com.bea.wli.sb.util import EnvValueTypes
    from com.bea.wli.config.env import EnvValueQuery;
    from com.bea.wli.config import Ref
    from com.bea.wli.config.customization import Customization
    from com.bea.wli.config.customization import FindAndReplaceCustomization
  import sys

#=======================================================================================
# Utility function to load properties from a config file
#=======================================================================================
def exportAll(exportConfigFile):


def exportAll(exportConfigFile):
        try:
            print "Loading export config from :", exportConfigFile
            exportConfigProp = loadProps(exportConfigFile)
            adminUrl = exportConfigProp.get("adminUrl")
            exportUser = exportConfigProp.get("exportUser")
            exportPasswd = exportConfigProp.get("exportPassword")

            exportJar = exportConfigProp.get("exportJar")
            customFile = exportConfigProp.get("customizationFile")

            passphrase = exportConfigProp.get("passphrase")
            project = sys.argv[2]
            if project == None :
               project = exportConfigProp.get("project")

            connectToServer(exportUser, exportPasswd, adminUrl)

            ALSBConfigurationMBean = findService("ALSBConfiguration", "com.bea.wli.sb.management.configuration.ALSBConfigurationMBean")
            print "ALSBConfiguration MBean found"

            print "Input project: ", project
            if project == None :
                ref = Ref.DOMAIN
                collection = Collections.singleton(ref)
                if passphrase == None :
                    print "Export the config"
                    theBytes = ALSBConfigurationMBean.exportProjects(collection, None)
                else :
                    print "Export and encrypt the config"
                    theBytes = ALSBConfigurationMBean.export(collection, true, passphrase)
            else :
                ref = Ref.makeProjectRef(project);
                print "Export the project", project
                collection = Collections.singleton(ref)
                theBytes = ALSBConfigurationMBean.export(collection, false, None)

            aFile = File(exportJar)
            out = FileOutputStream(aFile)
            out.write(theBytes)
            out.close()
            print "ALSB Configuration file: "+ exportJar + " has been exported"
            if customFile != None:
                print collection
                query = EnvValueQuery(None, Collections.singleton(EnvValueTypes.WORK_MANAGER), collection, false, None, false)
                customEnv = FindAndReplaceCustomization('Set the right Work Manager', query, 'Production System Work Manager')
                print 'EnvValueCustomization created'
                customList = ArrayList()
                customList.add(customEnv)
                print customList
                aFile = File(customFile)
                out = FileOutputStream(aFile)
                Customization.toXML(customList, out)
                out.close()

            print "ALSB Dummy Customization file: "+ customFile + " has been created"
        except:
            raise

    #=======================================================================================
    # Utility function to load properties from a config file
    #=======================================================================================

    def loadProps(configPropFile):
        propInputStream = FileInputStream(configPropFile)
        configProps = Properties()
        configProps.load(propInputStream)
        return configProps

    #=======================================================================================
    # Connect to the Admin Server
    #=======================================================================================

    def connectToServer(username, password, url):
        connect(username, password, url)
        domainRuntime()


    # EXPORT script init
    try:
        exportAll(sys.argv[1])

    except:
        print "Unexpected error: ", sys.exc_info()[0]
        dumpStack()
        raise

任何帮助将不胜感激。

【问题讨论】:

    标签: python unix scripting weblogic osb


    【解决方案1】:

    导出后得到的是已部署的单元。是的,由于在 OSB 运行时上的部署而添加/修改了一些元数据(部署也可能意味着直接在服务总线控制台上创建/编辑组件)。

    要从导出的 jar 中将其作为“源代码”取回,您只需将其导入 JDeveloper (12c) 或带有 OEPE (11g) 的 Eclipse

    【讨论】:

    • 基本上我不能在我的要求中使用 Jdeveloper。我想使用脚本自动化一个过程。无论如何我可以在不使用 JDev 的情况下从这个 Jar 中提取源代码。
    • 导出的文件确实有大部分原件的内容。只是它们还包含其他元数据(例如,来自 WSDL 和 XSD 的原始内容可能位于 CDATA 部分中)。如果这对您来说不可用,可能值得寻找什么库或 API 的 JDeveloper 本身用于“导入”内容......某处必须隐藏一些东西。尽管此类库可能不是公开的,或者对于脚本使用而言可能太不可用,但值得一看
    猜你喜欢
    • 2021-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-10
    • 2020-09-29
    • 1970-01-01
    • 2020-05-02
    相关资源
    最近更新 更多