Tomcat 9.0.34 的 Gradle 插件

4

我正在尝试使用https://github.com/bmuschko/gradle-tomcat-plugin启动我的应用程序。

我的Gradle配置如下:

apply plugin: 'com.bmuschko.tomcat'

ext.tomcatVersion = '9.0.30'

dependencies {
    // some dependencies

    tomcat "org.apache.tomcat.embed:tomcat-embed-core:$tomcatVersion",
            "org.apache.tomcat.embed:tomcat-embed-logging-juli:9.0.0.M6",
            "org.apache.tomcat.embed:tomcat-embed-jasper:$tomcatVersion",
            "org.apache.tomcat:tomcat-jdbc:$tomcatVersion",
            "org.apache.tomcat:tomcat-dbcp:$tomcatVersion"
}

tomcat {
    httpProtocol = 'org.apache.coyote.http11.Http11Nio2Protocol'
    ajpProtocol  = 'org.apache.coyote.ajp.AjpNio2Protocol'
    httpPort = 8088
}

使用Tomcat版本9.0.30及以下版本可以正常运行,但是在最新的9.0.31+版本中将抛出以下异常(为了简洁起见已被截断):

org.apache.catalina.LifecycleException: Protocol handler start failed
        at org.apache.catalina.connector.Connector.startInternal(Connector.java:1066)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
        at org.apache.catalina.core.StandardService.startInternal(StandardService.java:438)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
        at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:930)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
        at org.apache.catalina.startup.Tomcat.start(Tomcat.java:468)
        at org.apache.catalina.startup.Tomcat$start$1.call(Unknown Source)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:115)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:119)
        at com.bmuschko.gradle.tomcat.embedded.BaseTomcatServerImpl.start(BaseTomcatServerImpl.groovy:53)
        at com.bmuschko.gradle.tomcat.embedded.TomcatServer$start$7.call(Unknown Source)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:115)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:119)
        at com.bmuschko.gradle.tomcat.tasks.AbstractTomcatRun.startTomcat(AbstractTomcatRun.groovy:365)
        ...
        at com.bmuschko.gradle.tomcat.tasks.AbstractTomcatRun.validateConfigurationAndStartTomcat(AbstractTomcatRun.groovy:233)
        ...
        at com.bmuschko.gradle.tomcat.tasks.AbstractTomcatRun$_start_closure2.doCall(AbstractTomcatRun.groovy:226)
        at com.bmuschko.gradle.tomcat.tasks.AbstractTomcatRun$_start_closure2.doCall(AbstractTomcatRun.groovy)
        ...
        at com.bmuschko.gradle.tomcat.internal.utils.TomcatThreadContextClassLoader.withClasspath(TomcatThreadContextClassLoader.groovy:30)
        at com.bmuschko.gradle.tomcat.internal.utils.ThreadContextClassLoader$withClasspath.call(Unknown Source)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:115)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:135)
        at com.bmuschko.gradle.tomcat.tasks.AbstractTomcatRun.start(AbstractTomcatRun.groovy:225)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        ...
Caused by: java.lang.IllegalArgumentException: The AJP Connector is configured with secretRequired="true" but the secret attribute is either null or "". This combination is not valid.
        at org.apache.coyote.ajp.AbstractAjpProtocol.start(AbstractAjpProtocol.java:264)
        at org.apache.catalina.connector.Connector.startInternal(Connector.java:1063)

如何摆脱它?这个问题可以通过配置更改来解决吗?是否有能够良好处理它的Tomcat插件分支或者另一个Tomcat的Gradle插件?

1个回答

0

尝试替换

ajpProtocol  = 'org.apache.coyote.ajp.AjpNio2Protocol'

使用

ajpProtocol = 'org.apache.coyote.http11.Http11Nio2Protocol'

这将允许bmuschko绕过AJP连接器协议。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接