HTTPS API 在 Anypoint Studio 中运行正常,但在运行时独立引擎中运行不正常 - 地址已被使用
HTTPS API works ok in Anypoint Studio and not in Runtime standalone Engine - address already in use
我正在使用带有 3.8.3 运行时引擎的 Mulesoft API 管理器。
我们已经使用 HTTPS 和端口 3105 创建了一个 API 实现。在 Anytime Studio 中,API 运行正常,它与 api-domain-config 项目相关,创建它是为了在服务器中定义 api-网关域。当API在Anypoint studio中运行正常时,URL地址为https://localhost:3105/api/TestMessage,可以从任何浏览器成功启动并收到相应的响应。
独立运行时引擎是在同一台计算机上创建的,它在 Anypoint Studio 关闭时运行,反之亦然。这是因为我们希望这个 API 从外面的另一个 APIM 网关调用。
在 Anypoint Studio 运行 ok 之后,我们生成包含父项目(api-gateway)的 zip 文件并在 RT Manager 中部署。该应用程序显然部署正常,而且它显示“已启动”状态。但是,当您查看日志时,会发现启动 api-网关域时出错...java.net.BindException 地址已被使用。
域 + - - - - + 状态 + - -
默认已部署
api-网关失败
应用程序域状态
默认默认已部署
apitestmock 默认已部署
而之前在日志中发现的错误是:
org.mule.module.launcher.DeploymentStartException:尝试启动域 api-网关失败 org.mule.module.launcher.domain.DefaultMuleDomain.start(DefaultMuleDomain.java:279) ~[mule-module-launcher-3.8.3.jar:3.8.3] 在 org.mule.module.launcher.artifact.ArtifactWrapper$4.execute(ArtifactWrapper.java:105) ~[mule-module-launcher-3.8.3.jar:3.8.3] 在org.mule.module.launcher.artifact.ArtifactWrapper.executeWithinArtifactClassLoader(ArtifactWrapper.java:136) ~[mule-module-launcher-3.8.3.jar:3.8.3] 在 org.mule.module.launcher.artifact.ArtifactWrapper.start(ArtifactWrapper.java :100) ~[mule-module-launcher-3.8.3.jar:3.8.3] 在 org.mule.module.launcher.domain.DomainWrapper.start(DomainWrapper.java:66) ~[mule-module-launcher-3.8.3.jar:3.8.3] 在 org.mule.module.launcher.DefaultArtifactDeployer.deploy(DefaultArtifactDeployer.java:26) ~[mule-module-launcher-3.8.3.jar:3.8.3] 在 org.mule.module.launcher.DefaultArchiveDeployer.deployArtifact( DefaultArchiveDeployer.java:309) ~[mule-module-launcher-3.8.3.jar:3.8.3] 在 org.mule.module.launcher.DefaultArchiveDeployer.deployExplodedApp(DefaultArchiveDeployer.java:296) ~[mule-module-launcher -3.8.3.jar:3.8.3] 在 org.mule.module.launcher.DefaultArchiveDeployer.deployExplodedArtifact(DefaultArchiveDeployer.java:95) ~[mule-module-launcher-3.8.3.jar:3.8.3] 在 org.mule.module.launcher.DomainArchiveDeployer.deployExplodedArtifact(DomainArchiveDeployer.java:60) ~[mule-module-launcher-3.8.3.jar:3.8.3] 在 org.mule.module.launcher.DomainArchiveDeployer.deployExplodedArtifact(DomainArchiveDeployer.java:32) ~[ mule-module-launcher-3.8.3.jar:3.8.3] 在 org.mule.module.launcher.DeploymentDirectoryWatcher.deployExplodedDomains(DeploymentDirectoryWatcher.java:472) ~[mule-module-launcher-3.8.3.jar:3.8 .3] 在 org.mule.module.launcher.DeploymentDirectoryWatcher.start(DeploymentDirectoryWatcher.java:143) ~[mule-module-launcher-3.8.3.jar:3.8.3] 在 org.mule.module.launcher.MuleDeploymentService.start(MuleDeploymentService.java :134) ~[mule-module-launcher-3.8.3.jar:3.8.3] 在 org.mule.module.launcher.MuleContainer.start(MuleContainer.java :172) ~[mule-module-launcher-3.8.3.jar:3.8.3] 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_101] 在 sun.reflect.NativeMethodAccessorImpl.invoke(未知来源) ~[?:1.8.0_101] 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(未知来源) ~[?:1.8.0_101] 在 java.lang.reflect.Method.invoke(来源不明)~[?:1.8.0_101] 在 org.mule.module.reboot.MuleContainerWrapper.start(MuleContainerWrapper.java:52) ~[mule-module-boot-ee-3.8.3.jar:3.8。 3] 在 org.tanukisoftware.wrapper.WrapperManager$11.run(WrapperManager.java:4242) ~[wrapper-3.5.29.jar:3.5.29] 引起:org.mule.module.launcher.DeploymentStartException: BindException:地址已被使用:绑定在 org.mule.module.launcher.domain.DefaultMuleDomain.start(DefaultMuleDomain.java:259) ~[mule-module-launcher-3.8.3.jar:3.8.3]
如果你执行上面显示的URL,这是相同的,因为是同一台计算机,它只响应“端点没有侦听器:/api/TestMessage”。
请就如何解决此问题提出意见。任何帮助将不胜感激。
谢谢!
解决方案是在项目的 zip 文件中不包含域。并且必须先创建域 api-gateway,只需将域项目 zip 文件放入 RT 引擎域文件夹即可。完成后,该应用程序在安装后运行良好。
我正在使用带有 3.8.3 运行时引擎的 Mulesoft API 管理器。
我们已经使用 HTTPS 和端口 3105 创建了一个 API 实现。在 Anytime Studio 中,API 运行正常,它与 api-domain-config 项目相关,创建它是为了在服务器中定义 api-网关域。当API在Anypoint studio中运行正常时,URL地址为https://localhost:3105/api/TestMessage,可以从任何浏览器成功启动并收到相应的响应。
独立运行时引擎是在同一台计算机上创建的,它在 Anypoint Studio 关闭时运行,反之亦然。这是因为我们希望这个 API 从外面的另一个 APIM 网关调用。
在 Anypoint Studio 运行 ok 之后,我们生成包含父项目(api-gateway)的 zip 文件并在 RT Manager 中部署。该应用程序显然部署正常,而且它显示“已启动”状态。但是,当您查看日志时,会发现启动 api-网关域时出错...java.net.BindException 地址已被使用。
域 + - - - - + 状态 + - - 默认已部署 api-网关失败
应用程序域状态
默认默认已部署
apitestmock 默认已部署
而之前在日志中发现的错误是:
org.mule.module.launcher.DeploymentStartException:尝试启动域 api-网关失败 org.mule.module.launcher.domain.DefaultMuleDomain.start(DefaultMuleDomain.java:279) ~[mule-module-launcher-3.8.3.jar:3.8.3] 在 org.mule.module.launcher.artifact.ArtifactWrapper$4.execute(ArtifactWrapper.java:105) ~[mule-module-launcher-3.8.3.jar:3.8.3] 在org.mule.module.launcher.artifact.ArtifactWrapper.executeWithinArtifactClassLoader(ArtifactWrapper.java:136) ~[mule-module-launcher-3.8.3.jar:3.8.3] 在 org.mule.module.launcher.artifact.ArtifactWrapper.start(ArtifactWrapper.java :100) ~[mule-module-launcher-3.8.3.jar:3.8.3] 在 org.mule.module.launcher.domain.DomainWrapper.start(DomainWrapper.java:66) ~[mule-module-launcher-3.8.3.jar:3.8.3] 在 org.mule.module.launcher.DefaultArtifactDeployer.deploy(DefaultArtifactDeployer.java:26) ~[mule-module-launcher-3.8.3.jar:3.8.3] 在 org.mule.module.launcher.DefaultArchiveDeployer.deployArtifact( DefaultArchiveDeployer.java:309) ~[mule-module-launcher-3.8.3.jar:3.8.3] 在 org.mule.module.launcher.DefaultArchiveDeployer.deployExplodedApp(DefaultArchiveDeployer.java:296) ~[mule-module-launcher -3.8.3.jar:3.8.3] 在 org.mule.module.launcher.DefaultArchiveDeployer.deployExplodedArtifact(DefaultArchiveDeployer.java:95) ~[mule-module-launcher-3.8.3.jar:3.8.3] 在 org.mule.module.launcher.DomainArchiveDeployer.deployExplodedArtifact(DomainArchiveDeployer.java:60) ~[mule-module-launcher-3.8.3.jar:3.8.3] 在 org.mule.module.launcher.DomainArchiveDeployer.deployExplodedArtifact(DomainArchiveDeployer.java:32) ~[ mule-module-launcher-3.8.3.jar:3.8.3] 在 org.mule.module.launcher.DeploymentDirectoryWatcher.deployExplodedDomains(DeploymentDirectoryWatcher.java:472) ~[mule-module-launcher-3.8.3.jar:3.8 .3] 在 org.mule.module.launcher.DeploymentDirectoryWatcher.start(DeploymentDirectoryWatcher.java:143) ~[mule-module-launcher-3.8.3.jar:3.8.3] 在 org.mule.module.launcher.MuleDeploymentService.start(MuleDeploymentService.java :134) ~[mule-module-launcher-3.8.3.jar:3.8.3] 在 org.mule.module.launcher.MuleContainer.start(MuleContainer.java :172) ~[mule-module-launcher-3.8.3.jar:3.8.3] 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_101] 在 sun.reflect.NativeMethodAccessorImpl.invoke(未知来源) ~[?:1.8.0_101] 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(未知来源) ~[?:1.8.0_101] 在 java.lang.reflect.Method.invoke(来源不明)~[?:1.8.0_101] 在 org.mule.module.reboot.MuleContainerWrapper.start(MuleContainerWrapper.java:52) ~[mule-module-boot-ee-3.8.3.jar:3.8。 3] 在 org.tanukisoftware.wrapper.WrapperManager$11.run(WrapperManager.java:4242) ~[wrapper-3.5.29.jar:3.5.29] 引起:org.mule.module.launcher.DeploymentStartException: BindException:地址已被使用:绑定在 org.mule.module.launcher.domain.DefaultMuleDomain.start(DefaultMuleDomain.java:259) ~[mule-module-launcher-3.8.3.jar:3.8.3]
如果你执行上面显示的URL,这是相同的,因为是同一台计算机,它只响应“端点没有侦听器:/api/TestMessage”。
请就如何解决此问题提出意见。任何帮助将不胜感激。
谢谢!
解决方案是在项目的 zip 文件中不包含域。并且必须先创建域 api-gateway,只需将域项目 zip 文件放入 RT 引擎域文件夹即可。完成后,该应用程序在安装后运行良好。