【问题标题】:Payara Server 5 is not starting by Console on macOS/WindowsPayara Server 5 未通过 macOS/Windows 上的控制台启动
【发布时间】:2020-09-01 17:11:15
【问题描述】:

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 是不成熟的产品。

但是,我该如何解决所有这些错误/错误?

编辑:

我在 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$1.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.

【问题讨论】:

  • 您好,start-domain 命令的技术文档解释说,任何选项都在命令之后,但在最后一个未命名选项(即域名)之前。你应该运行asadmin start-domain -v domain1。您也可以只运行asadmin start-domain -v,因为domain1 是默认域。
  • 您似乎遇到了 Mac OS 上的已知问题,Payara Server 的 Hazelcast 端口与 VNC(远程桌面)的端口冲突:stackoverflow.com/questions/58521647/…。这已在此处作为问题提出:github.com/payara/Payara/issues/4670。一个快速的解决方案是更改 NVC 端口或 Payara Server 的 Hazelcast 端口,请参阅我的答案。
  • 我建议在 github 上提出第二个问题 (BundleException):github.com/payara/Payara/issues。在 StackOverflow 上很难回答 2 个不同的问题,而且这是一个需要复制器的问题。它可能只发生在 Windows 上,也可能只发生在您环境中的某些配置下。
  • Payara 服务器社区版目前正在快速开发中,为 Jakarta EE 9 中即将发生的变化做准备,并重构一些代码以提高性能。这可能会导致一些问题。我建议在 github 上提出任何问题,如果适合您,请尝试使用 5.2020.3 等旧版本。
  • @OndroMih 是的,我从search.maven.org/artifact/fish.payara.distributions/payara 下载了以下版本:payara-5.194payara-5.201payara-5.2020.2payara-5-2020.3,它们可以工作

标签: windows macos startup payara


【解决方案1】:

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

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

有多种可能的解决方案:

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

【讨论】:

  • 我在 asadmin 控制台上尝试% sh payara5-2020-3/bin/asadmin 使用“exit”退出并使用“help”获得在线帮助。未获取远程命令 asadmin&gt; set-hazelcast-configuration --startport=5901 远程服务器不侦听 [localhost:4848] 上的请求。服务器起来了吗?没有这样的本地命令:set-hazelcast-configuration。无法访问服务器远程执行命令。验证服务器是否可用。命令 set-hazelcast-configuration 失败。 asadmin&gt;
  • set-hazelcast-configuration 是一个远程命令。这意味着它需要连接到正在运行的 Payara 服务器,然后该服务器执行命令。如果您无法成功运行 Payara Server,则无法在其上运行任何远程命令。一种解决方案是在启动 Payara Server 时在传递给 start-domain 命令的启动后脚本中运行该命令。或者在运行 Payara Server 之前直接编辑 domain.xml。
猜你喜欢
  • 2018-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-24
  • 1970-01-01
  • 1970-01-01
  • 2018-11-02
  • 1970-01-01
相关资源
最近更新 更多