macOS/Windows 上的控制台未启动 Payara Server 5

Payara Server 5 is not starting by Console on macOS/Windows

macOS 中,我试图将 Payara ServerNetbeans 12 一起使用,我得到:

Launching Payara Server on Felix platform
INFO: Create bundle provisioner class = class com.sun.enterprise.glassfish.bootstrap.osgi.BundleProvisioner.
Registered com.sun.enterprise.glassfish.bootstrap.osgi.EmbeddedOSGiGlassFishRuntime@462c1ddf in service registry.
#!## LogManagerService.postConstruct : rootFolder=/Users/joseluisbz/Documentos/Java/payara5-2020-4/glassfish
#!## LogManagerService.postConstruct : templateDir=/Users/joseluisbz/Documentos/Java/payara5-2020-4/glassfish/lib/templates
#!## LogManagerService.postConstruct : src=/Users/joseluisbz/Documentos/Java/payara5-2020-4/glassfish/lib/templates/logging.properties
#!## LogManagerService.postConstruct : dest=/Users/joseluisbz/Documentos/Java/payara5-2020-4/glassfish/domains/domain1/config/logging.properties
  Running Payara Version: Payara Server  5.2020.4 #badassfish (build 817)|#]
  Server log file is using Formatter class: com.sun.enterprise.server.logging.ODLLogFormatter|#]
  HV000001: Hibernate Validator 6.1.2.Final|#]
  [192.168.0.11]:4900 [development] [3.12.6] Connection[id=1, /192.168.0.11:49587->/192.168.0.11:5900, qualifier=null, endpoint=[192.168.0.11]:5900, alive=false, type=NONE] closed. Reason: Exception in Connection[id=1, /192.168.0.11:49587->/192.168.0.11:5900, qualifier=null, endpoint=[192.168.0.11]:5900, alive=true, type=NONE], thread=hz._hzInstance_1_development.IO.thread-in-0
java.lang.IllegalStateException: Unknown protocol: RFB
    at com.hazelcast.nio.tcp.UnifiedProtocolDecoder.onRead(UnifiedProtocolDecoder.java:107)
    at com.hazelcast.internal.networking.nio.NioInboundPipeline.process(NioInboundPipeline.java:135)
    at com.hazelcast.internal.networking.nio.NioThread.processSelectionKey(NioThread.java:369)
    at com.hazelcast.internal.networking.nio.NioThread.processSelectionKeys(NioThread.java:354)
    at com.hazelcast.internal.networking.nio.NioThread.selectLoop(NioThread.java:280)
    at com.hazelcast.internal.networking.nio.NioThread.run(NioThread.java:235)
|#]

然后通过控制台,这是我的位置(我将 payara5 目录重命名为 payara5-2020-4)。

% pwd
.../payara5-2020-4/glassfish/bin
%

为了解决第一个问题:

% ./asadmin set-hazelcast-configuration --enabled=false
Remote server does not listen for requests on [localhost:4848]. Is the server up?
No such local command: set-hazelcast-configuration.  Unable to access the server to execute the command remotely.  Verify the server is available.
Command set-hazelcast-configuration failed.
%

在我尝试起来之后...

% ./asadmin start-domain domain1
Waiting for domain1 to start ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
No response from the Domain Administration Server (domain1) after 600 seconds.
The command is either taking too long to complete or the server has failed.
Please see the server log files for command status.  
Please start with the --verbose option in order to see early messages.
Command start-domain failed.
%

然后,我试图详细说明选项(如推荐)...

% ./asadmin start-domain domain1  --verbose
Command start-domain only accepts one operand
...

% ./asadmin --verbose start-domain domain1
Invalid option: --verbose
...

% ./asadmin -v start-domain domain1       
Invalid option: -v
...

% ./asadmin start-domain domain1  -v       
Command start-domain only accepts one operand
...

常用消息

Usage: asadmin [asadmin-utility-options] start-domain
    [-v|--verbose[=<verbose(default:false)>]]
    [--upgrade[=<upgrade(default:false)>]]
    [-w|--watchdog[=<watchdog(default:false)>]]
    [-d|--debug[=<debug(default:false)>]]
    [-n|--dry-run[=<dry-run(default:false)>]]
    [--drop-interrupted-commands[=<drop-interrupted-commands(default:false)>]]
    [--prebootcommandfile <prebootcommandfile>]
    [--postbootcommandfile <postbootcommandfile>] [--domaindir <domaindir>]
    [-?|--help[=<help(default:false)>]] [domain_name]

遗憾的是,我坚信Payara是不成熟的产品。

但是,我该如何解决所有这些问题errors/mistakes?

编辑:

我在 Windows 10 PRO 上测试 Netbeans 12

Launching Payara Server on Felix platform
INFO: Create bundle provisioner class = class com.sun.enterprise.glassfish.bootstrap.osgi.BundleProvisioner.
Registered com.sun.enterprise.glassfish.bootstrap.osgi.EmbeddedOSGiGlassFishRuntime@586f5c68 in service registry.
Exception in thread "main" java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.sun.enterprise.glassfish.bootstrap.GlassFishMain.main(GlassFishMain.java:109)
    at com.sun.enterprise.glassfish.bootstrap.ASMain.main(ASMain.java:54)
Caused by: A MultiException has 2 exceptions.  They are:
1. com.sun.enterprise.module.ResolveError: Failed to start OSGiModuleImpl:: Bundle = [fish.payara.server.internal.batch.glassfish-batch-connector [102]], State = [NEW]
2. java.lang.IllegalStateException: Could not load descriptor SystemDescriptor(
    implementation=org.glassfish.batch.spi.impl.BatchRuntimeConfigurationInjector
    name=batch-runtime-configuration
    contracts={org.glassfish.batch.spi.impl.BatchRuntimeConfigurationInjector,org.jvnet.hk2.config.ConfigInjector}
    scope=javax.inject.Singleton
    qualifiers={org.jvnet.hk2.config.InjectionTarget}
    descriptorType=CLASS
    descriptorVisibility=NORMAL
    metadata=@table-suffix={optional,default\:,datatype\:java.lang.String,leaf},@data-source-lookup-name={optional,datatype\:java.lang.String,leaf},@table-prefix={optional,default\:,datatype\:java.lang.String,leaf},@schema-name={optional,default\:APP,datatype\:java.lang.String,leaf},@executor-service-lookup-name={optional,default\:concurrent/__defaultManagedExecutorService,datatype\:java.lang.String,leaf},target={org.glassfish.batch.spi.impl.BatchRuntimeConfiguration},Bundle-SymbolicName={fish.payara.server.internal.batch.glassfish-batch-connector},Bundle-Version={5.2020.4}
    rank=0
    loader=OsgiPopulatorPostProcessor.HK2Loader(OSGiModuleImpl:: Bundle = [fish.payara.server.internal.batch.glassfish-batch-connector [102]], State = [NEW],1228963996)
    proxiable=null
    proxyForSameScope=null
    analysisName=null
    id=170
    locatorId=0
    identityHashCode=373437697
    reified=false)
    at org.jvnet.hk2.internal.ServiceLocatorImpl.loadClass(ServiceLocatorImpl.java:2247)
    at org.jvnet.hk2.internal.ServiceLocatorImpl.reifyDescriptor(ServiceLocatorImpl.java:438)
    at org.jvnet.hk2.internal.ServiceLocatorImpl.reifyDescriptor(ServiceLocatorImpl.java:457)
    at org.jvnet.hk2.config.DomDocument$InjectionTargetFilter.matches(DomDocument.java:184)
    at org.jvnet.hk2.internal.ServiceLocatorImpl.getDescriptors(ServiceLocatorImpl.java:347)
    at org.jvnet.hk2.internal.ServiceLocatorImpl.getDescriptors(ServiceLocatorImpl.java:389)
    at org.jvnet.hk2.internal.ServiceLocatorImpl.getBestDescriptor(ServiceLocatorImpl.java:397)
    at org.jvnet.hk2.config.DomDocument.buildModel(DomDocument.java:135)
    at org.jvnet.hk2.config.ConfigModel.parseValue(ConfigModel.java:959)
    at org.jvnet.hk2.config.ConfigModel.<init>(ConfigModel.java:875)
    at org.jvnet.hk2.config.DomDocument.buildModel(DomDocument.java:114)
    at org.jvnet.hk2.config.DomDocument.getModelByElementName(DomDocument.java:162)
    at org.jvnet.hk2.config.ConfigParser.handleElement(ConfigParser.java:165)
    at org.jvnet.hk2.config.ConfigParser.parse(ConfigParser.java:101)
    at org.jvnet.hk2.config.ConfigParser.parse(ConfigParser.java:95)
    at org.glassfish.config.support.DomainXml.parseDomainXml(DomainXml.java:271)
    at org.glassfish.config.support.DomainXml.run(DomainXml.java:121)
    at org.jvnet.hk2.config.ConfigurationPopulator.populateConfig(ConfigurationPopulator.java:58)
    at org.glassfish.hk2.bootstrap.HK2Populator.populateConfig(HK2Populator.java:83)
    at com.sun.enterprise.module.common_impl.AbstractModulesRegistryImpl.populateConfig(AbstractModulesRegistryImpl.java:190)
    at com.sun.enterprise.module.bootstrap.Main.createServiceLocator(Main.java:249)
    at org.jvnet.hk2.osgiadapter.HK2Main.createServiceLocator(HK2Main.java:95)
    at com.sun.enterprise.glassfish.bootstrap.osgi.EmbeddedOSGiGlassFishRuntime.newGlassFish(EmbeddedOSGiGlassFishRuntime.java:95)
    at com.sun.enterprise.glassfish.bootstrap.GlassFishRuntimeDecorator.newGlassFish(GlassFishRuntimeDecorator.java:68)
    at com.sun.enterprise.glassfish.bootstrap.osgi.OSGiGlassFishRuntime.newGlassFish(OSGiGlassFishRuntime.java:91)
    at com.sun.enterprise.glassfish.bootstrap.GlassFishMain$Launcher.launch(GlassFishMain.java:125)
    ... 6 more
Caused by: com.sun.enterprise.module.ResolveError: Failed to start OSGiModuleImpl:: Bundle = [fish.payara.server.internal.batch.glassfish-batch-connector [102]], State = [NEW]
    at org.jvnet.hk2.osgiadapter.OSGiModuleImpl.start(OSGiModuleImpl.java:193)
    at org.jvnet.hk2.osgiadapter.OsgiPopulatorPostProcessor.loadClass(OsgiPopulatorPostProcessor.java:54)
    at org.jvnet.hk2.internal.ServiceLocatorImpl.loadClass(ServiceLocatorImpl.java:2239)
    ... 31 more
Caused by: org.osgi.framework.BundleException: Unable to resolve fish.payara.server.internal.batch.glassfish-batch-connector [102](R 102.0): missing requirement [fish.payara.server.internal.batch.glassfish-batch-connector [102](R 102.0)] osgi.wiring.package; (osgi.wiring.package=com.ibm.jbatch.spi) [caused by: Unable to resolve fish.payara.server.internal.batch.payara-jbatch [311](R 311.0): missing requirement [fish.payara.server.internal.batch.payara-jbatch [311](R 311.0)] osgi.wiring.package; (osgi.wiring.package=org.glassfish.weld) [caused by: Unable to resolve fish.payara.server.internal.web.weld-integration [372](R 372.0): missing requirement [fish.payara.server.internal.web.weld-integration [372](R 372.0)] osgi.wiring.package; (&(osgi.wiring.package=org.glassfish.web.deployment.descriptor)(version>=5.2020.0)(!(version>=6.0.0))) [caused by: Unable to resolve fish.payara.server.internal.web.glue [360](R 360.0): missing requirement [fish.payara.server.internal.web.glue [360](R 360.0)] osgi.wiring.package; (&(osgi.wiring.package=org.apache.catalina)(version>=5.2020.0)(!(version>=6.0.0))) [caused by: Unable to resolve fish.payara.server.internal.web.core [358](R 358.0): missing requirement [fish.payara.server.internal.web.core [358](R 358.0)] osgi.wiring.package; (&(osgi.wiring.package=org.glassfish.web.loader)(version>=5.2020.0)(!(version>=6.0.0)))]]]] Unresolved requirements: [[fish.payara.server.internal.batch.glassfish-batch-connector [102](R 102.0)] osgi.wiring.package; (osgi.wiring.package=com.ibm.jbatch.spi)]
    at org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:4368)
    at org.apache.felix.framework.Felix.startBundle(Felix.java:2281)
    at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:998)
    at org.jvnet.hk2.osgiadapter.OSGiModuleImpl.startBundle(OSGiModuleImpl.java:227)
    at org.jvnet.hk2.osgiadapter.OSGiModuleImpl.start(OSGiModuleImpl.java:185)
    ... 33 more
Completed shutdown of GlassFish runtime
We are in non-embedded mode, so fish.payara.server.internal.core.glassfish [113] has nothing to do.

错误“未知协议:RFB”来自 Hazelcast 组件,它试图发现可能 运行 正在端口 5900 上的其他集群实例。在某些操作系统中,通常在 Mac,此端口被VNC(远程桌面)占用,以非预期的方式响应Payara Server。

Payara 知识库中有适用于 Payara Enterprise 用户的解决方案。我可以访问它,并将在此处复制相关部分。

有多种可能的解决方案:

  • 停止占用5900端口的进程(如VNC,默认使用该端口)。或者,您可以更改其端口。然后 Payara Server 应该可以正常启动了。
  • 将 Payara 服务器配置为对 Hazelcast 使用不同的端口。如果你运行 Payara Server按照上面的解决方法,你可以再运行命令:asadmin set-hazelcast-configuration --startport=5901.
  • 直接编辑目录glassfish/domains/domain1/config中的domain.xml,将端口5900改成别的。然后 运行 Payara 服务器像往常一样。
  • 或者在启动时更改 Payara Server 的 Hazelcast 端口。首先,创建一个包含一行 set-hazelcast-configuration --startport=5901 的文本文件 config.txt。然后使用 asdamin start-domain --postbootcommandfile config.txt 启动 Payara Server。文档中有更多相关信息:https://docs.payara.fish/community/docs/5.2020.4/documentation/payara-micro/asadmin/pre-and-post-boot-scripts.html