我有一个Ant build.xml,它使用一个用于部署前和部署后的参数来启动Payara Micro 5.183实例。要停止该实例,我必须终止其Java进程。我想调用它的关闭方法。
我正在使用Open JDK 11.0.1
这是相关的build.xml:
<target name="start payara micro">
<java classname="fish.payara.micro.PayaraMicro" classpathref="payara.classpath" dir="${payara.micro.home}" fork="true">
<arg line="--prebootcommandfile ${payara.micro.home}/conf/pre-boot.asadmin --postdeploycommandfile ${payara.micro.home}/conf/post-deploy.asadmin --deploy ${payara.micro.home}/activemq-rar --noCluster --domainConfig ${payara.micro.home}/conf/domain.xml"/>
<jvmarg line="--add-opens java.naming/javax.naming.spi=ALL-UNNAMED --add-opens java.base/jdk.internal.loader=ALL-UNNAMED --add-opens java.base/sun.net.www.protocol.jar=ALL-UNNAMED --add-opens java.base/java.net=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMED -Dcom.sun.xml.bind.v2.bytecode.ClassTailor.noOptimize --illegal-access=deny"/>
</java>
</target>
我试图通过一个具有main()方法的小型Java类来解决该问题:
public static void main( String[] args ) throws BootstrapException {
Console console = System.console();
if ( console == null ) {
System.err.println(
"Cannot obtain a console. No interactive environment. Aborting" );
System.exit( -1 );
}
// --- Start Payara with given parameters
PayaraMicro.main( args );
// --- Start Payara Micro How do I give params?
PayaraMicro instance = PayaraMicro.getInstance();
PayaraMicroRuntime runtime = instance.bootStrap();
String input = null;
while ( (input == null) || (input.equals( "x" ) == false) ) {
input = console.readLine( "Enter 'x' to exit" );
}
}
我用Java类名替换了构建脚本中的类名,并启动了Ant。但这已经是因为console为 null 。但是,即使我可以获得控制台,也没有找到将参数传递给Payara并获得实例的方法。我可以使用 main()来传递参数,也可以使用 bootstrap()来获取实例,但不能同时使用两者。有什么想法吗?