使用 configureApplicationServer ANT 任务安装 WAR 文件在 Tomcat 上不起作用?

Posted

技术标签:

【中文标题】使用 configureApplicationServer ANT 任务安装 WAR 文件在 Tomcat 上不起作用?【英文标题】:Installing WAR file with configureApplicationServer ANT task not working on Tomcat? 【发布时间】:2015-05-05 16:03:01 【问题描述】:

背景: 我们在 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 files 会引发错误,指出所需的 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】:

这是一个随机猜测,但一个非常可能的错误是 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步

【讨论】:

以上是关于使用 configureApplicationServer ANT 任务安装 WAR 文件在 Tomcat 上不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?

今目标使用教程 今目标任务使用篇

Qt静态编译时使用OpenSSL有三种方式(不使用,动态使用,静态使用,默认是动态使用)

MySQL db 在按日期排序时使用“使用位置;使用临时;使用文件排序”

使用“使用严格”作为“使用强”的备份

Kettle java脚本组件的使用说明(简单使用升级使用)