使用configureApplicationServer安装WAR文件ANT任务无法在Tomcat上运行?

时间:2015-05-05 16:03:01

标签: ant war ibm-mobilefirst mobilefirst-server devops

上下文 我们在运行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."
}

1 个答案:

答案 0 :(得分:0)

这是一个随机的猜测,但是一个非常可能的错误可能是MobileFirst Administration已经部署了'environmentID'(默认情况下服务器配置工具使用和environmentID),并且你不在你的蚂蚁中使用它参数。

参见https://www-01.ibm.com/support/knowledgecenter/SSHS8R_7.0.0/com.ibm.worklight.deploy.doc/devref/t_ant_tasks_configure_appserver.html

的第1步