我有一个在Google App Engine的标准实例上运行的Java Spring应用程序。我们最近从自动缩放切换到手动缩放,以适应更长的cronjobs。
尝试在本地运行服务器./gradlew startServer
时,我们遇到了问题。这是由于我们在* appengine-web.xml"中的手动扩展配置:
<instance-class>B8</instance-class>
<manual-scaling>
<instances>1</instances>
</manual-scaling>
即使我们尝试将实例编号设置为1. Gradle尝试启动应用程序的次数超过1次,从而导致错误。只有当我将设置切换回自动缩放时才能解决问题:
<instance-class>@server.instance.class@</instance-class>
<automatic-scaling>
<min-idle-instances>@min.idle.instances@</min-idle-instances>
<max-idle-instances>@max.idle.instances@</max-idle-instances>
<min-pending-latency>@min.pending.latency@</min-pending-latency>
<max-pending-latency>@max.pending.latency@</max-pending-latency>
</automatic-scaling>
一种解决方案是根据env
将手动缩放交换为自动缩放,并使用脚本将其添加到./gradlew startServer
。
从配置的角度来看,如果不采用脚本路径
,是否存在这种方法答案 0 :(得分:0)
这不是最优雅的解决方案,但是每次我想在本地启动服务器时都不会更改.xml
文件。唯一的缺点就是它迫使我像这样编写我的xml:
<application>@sublink.project.id@</application><!-- unused for Cloud SDK based tooling -->
<service>sublink</service>
<runtime>java8</runtime>
<threadsafe>true</threadsafe>
<instance-class>@server.instance.class@</instance-class>
<!--<automatic-scaling>-->
<!--<min-idle-instances>@min.idle.instances@</min-idle-instances>-->
<!--<max-idle-instances>@max.idle.instances@</max-idle-instances>-->
<!--<min-pending-latency>@min.pending.latency@</min-pending-latency>-->
<!--<max-pending-latency>@max.pending.latency@</max-pending-latency>-->
<!--</automatic-scaling>-->
<manual-scaling>
<instances>@scaling.manual.instances@</instances>
</manual-scaling>
<env-variables>
<env-var name="SPRING_PROFILES_ACTIVE" value="@active.deploy.env@"/>
</env-variables>
然后在我的build.gradle
我这样做:
from('src/main/webapp/WEB-INF')
include '*.xml'
into("build/exploded/WEB-INF")
filter(ReplaceTokens, tokens: props)
if (deployEnv == "local") {
// Use a closure to remove lines
filter { String line ->
line.trim().startsWith('<instance-class>') ? null : line
}
filter { String line ->
line.trim().startsWith('<manual-scaling>') ? null : line
}
filter { String line ->
line.trim().startsWith('<instances>') ? null : line
}
filter { String line ->
line.trim().startsWith('</manual-scaling>') ? null : line
}
}