0

上下文: 我们在 Linux 系统上运行的 Tomcat (v7.0.57) 上使用 MFP v6.3。我们想使用 MFP ANT 任务将 MFP 工件自动部署到我们的开发和暂存 MFP 服务器。具体来说,我们希望为 MFP 应用程序自动部署 WAR 文件。

在安装 WAR 文件之前,我们使用 unconfigureApplicationServer ANT 任务来删除之前可能存在于 WAR 文件的 Tomcat 服务器上的任何安装。然后我们使用 configureDatabase ANT 任务来创建两个所需的数据库。最后,我们使用 configureApplicationServer ANT 任务来安装/部署 WAR 文件。

问题: 我们可以执行上述所有的 ANT 任务(即 unconfigureApplicationServer、configureDatabase、configureApplicationServer)而不会出现任何错误。我们还可以在Tomcat webapps文件夹下的文件系统上看到WAR文件。但是,在此之后,尝试部署任何适配器或 wlapp 文件会引发错误,指出所需的 WAR 文件不存在。我们还重新启动了 Tomcat 服务器,但这并没有什么不同。访问 MFP 控制台不会显示 MFP 应用程序的条目。此外,如果我们启动 configurationTool.sh 工具,我们也看不到运行时条目。

为了验证 WAR 文件没有问题,我们使用了 configurationTool.sh 工具来部署它。使用 configurationTool.sh 工具部署 WAR 文件可以正常工作(尽管需要重新启动 Tomcat……)。

在阅读了 KnowledgeCenter 上的 MFP 文档后,我们了解到我们可以使用 ANT 任务来自动化 MFP 服务器 (tomcat) 上 MFP WAR 文件的部署(卸载和安装),只需将正确的参数传递给它们。我们还期望在安装或更新 WAR 文件时不需要重新启动服务器 (tomcat)。

关于什么可能是错误的任何想法?谢谢。

代码: 我们使用 Gradle 来调用不同的 ANT 任务:

task uninstallMFPArtifacts << {
    ant.unconfigureApplicationServer(contextRoot: contextRoot) {
        "project"(warfile: warFile)
        "applicationserver"() {
            "tomcat"(installdir: installDir)
        }
        "database"(kind: "Worklight") {
            "mysql"(database: dbPrefix + '_MFP',
                server: "localhost",
                user: dbUser,
                password: dbUser)
            "driverclasspath"() {
                "pathelement"(location : mySQLJarPath)
            }
        }        
        "database"(kind: "WorklightReports") {
            "mysql"(database: dbPrefix + '_MFP_RPT',
                server: "localhost",
                user: dbUser,
                password: dbUser)
            "driverclasspath"() {
                "pathelement"(location : mySQLJarPath)
            }
        }
    }
    println "Uninstalled: $appShortName"
}

task setupMFPDBs << {
    // Create databases
    ant.configureDatabase(kind: "Worklight") {
        "mysql"(database: dbPrefix + '_MFP',
            server: "localhost",
            user: dbUser,
            password: dbUser) {
            "dba"(user: dbaUser,
                password: dbaPassword)
            "client"(hostname: 'localhost')
            "client"(hostname: '127.0.0.1')
           }
        "driverclasspath"() {
            "pathelement"(location : mySQLJarPath)
        }
    }    
    println "Created $dbPrefix" + '_MFP database.'

    ant.configureDatabase(kind: "WorklightReports") {
        "mysql"(database: dbPrefix + '_MFP_RPT',
            server: "localhost",
            user: dbUser,
            password: dbUser) {
            "dba"(user: dbaUser,
                password: dbaPassword)
            "client"(hostname: 'localhost')
            "client"(hostname: '127.0.0.1')
        }
        "driverclasspath"() {
            "pathelement"(location : mySQLJarPath)
        }
    }
    println "Created $dbPrefix" + '_MFP_RPT database.'
}

task deployMFPArtifacts << {

    // Install WAR file
    ant.configureApplicationServer(contextRoot: contextRoot) {
        "project"(warfile: warFile)
        "applicationserver"() {
            "tomcat"(installdir: installDir)
        }
        "database"(kind: "Worklight") {
            "mysql"(database: dbPrefix + '_MFP',
                server: "localhost",
                user: dbUser,
                password: dbUser)
            "driverclasspath"() {
                "pathelement"(location : mySQLJarPath)
            }
        }        
        "database"(kind: "WorklightReports") {
            "mysql"(database: dbPrefix + '_MFP_RPT',
                server: "localhost",
                user: dbUser,
                password: dbUser)
            "driverclasspath"() {
                "pathelement"(location : mySQLJarPath)
            }
        }
    }
    println "Installed $warFile file."
}
4

1 回答 1

0

这是一个随机猜测,但一个非常可能的错误可能是 MobileFirst Administration 已经部署了一个“environmentID”(服务器配置工具默认使用和 environmentID),而您没有在 ant 参数中使用它。

请参阅https://www-01.ibm.com/support/knowledgecenter/SSHS8R_7.0.0/com.ibm.worklight.deploy.doc/devref/t_ant_tasks_configure_appserver.html的步骤 1

于 2015-05-05T19:16:40.480 回答