当前位置: 首页 > 知识库问答 >
问题:

使用jboss客户端的最佳方式是什么。Wildfly 10应用程序中的jar?

燕博文
2023-03-14

我有一个Wildfly 10 ear应用程序(在服务器容器中运行),它需要能够发布到另一个Wildfly服务器上托管的远程队列。为此,我将这个jar从wildfly\bin\client文件夹复制到ear的lib文件夹中。效果很好。

但是现在,在正式打包之后,当我启动Wildfly和应用程序时,我收到一条错误消息。。。关于这个jar的清单文件。

设置应用程序以使各种类装入器都能找到这个jar的最佳方法是什么
jar似乎可以复制到ear\lib,但是需要对清单文件做些什么?什么
我假设另一个选项是在独立完整模式中指定某些内容。告诉wildfly类加载器在其类路径中包含wildfly/bin/client文件夹的xml。你怎么知道的?第三,我假设文件可以复制粘贴到一个已经在wildfly类路径中的文件夹中<第四种选择,我想是在我的耳朵上添加一些能产生pom的东西。将此jar添加到ear/lib的xml。。。。

最好的方法是什么?

我得到的错误是:

  14:54:45,578 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-2) MSC000001: Failed to start service jboss.deployment.unit."InSyncEar.ear".STRUCTURE: org.jboss.msc.service.StartException in service jboss.deployment.unit."InSyncEar.ear".STRUCTURE: WFLYSRV0153: Failed to process phase STRUCTURE of deployment "InSyncEar.ear"
    at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:154)
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1948)
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1881)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
 Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: WFLYSRV0161: Failed to get manifest for deployment "/C:/MyComp/Purch/deployments/InSyncEar.ear/lib/jboss-client.jar"
    at org.jboss.as.server.deployment.module.ManifestAttachmentProcessor.getManifest(ManifestAttachmentProcessor.java:78)
    at org.jboss.as.server.deployment.module.ManifestAttachmentProcessor.deploy(ManifestAttachmentProcessor.java:65)
    at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:147)
    ... 5 more
 Caused by: java.util.zip.ZipException: invalid literal/lengths set
    at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:164)
    at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:122)
    at org.jboss.vfs.util.PaddedManifestStream.read(PaddedManifestStream.java:39)
    at java.io.InputStream.read(InputStream.java:170)
    at java.util.jar.Manifest$FastInputStream.fill(Manifest.java:441)
    at java.util.jar.Manifest$FastInputStream.readLine(Manifest.java:375)
    at java.util.jar.Manifest$FastInputStream.readLine(Manifest.java:409)
    at java.util.jar.Attributes.read(Attributes.java:376)
    at java.util.jar.Manifest.read(Manifest.java:199)
    at java.util.jar.Manifest.<init>(Manifest.java:69)
    at org.jboss.vfs.VFSUtils.readManifest(VFSUtils.java:243)
    at org.jboss.vfs.VFSUtils.getManifest(VFSUtils.java:227)
    at org.jboss.as.server.deployment.module.ManifestAttachmentProcessor.getManifest(ManifestAttachmentProcessor.java

共有1个答案

松茂实
2023-03-14

一旦JMS客户机在WildFly应用程序中运行,就不需要jboss客户机了。jar-WildFly模块本身包含发布到另一个WildFly实例上的远程队列所需的所有依赖项

在我们的项目中,远程EJB和JMS连接的最佳方式是以下独立完整配置。xml:

<subsystem xmlns="urn:jboss:domain:ee:4.0">
            <global-modules>
                <module name="org.jboss.remote-naming"/>
            </global-modules>
...

这允许通过JMS/RemoteConnectionFactory在另一台服务器上查找远程JMS连接,例如,参见本例。

此外,您还需要ActiveMQ特定的依赖项(例如。ActiveMQJMSConnectionFactory)发布到远程队列。
我们通过在jboss-deployment-structure.xml中添加相应的模块作为依赖项来实现:

<dependencies>
      <module name="org.apache.activemq.artemis" export="true"/>
</dependencies>

有关更多详细信息,请参阅WildFly中的类加载。

就这样了。

 类似资料:
  • 问题内容: Java是我选择的编程语言之一。尽管将应用程序分发给最终用户,但我总是遇到问题。 为用户提供JAR并不总是像我想要的那样友好,并且使用Java WebStart要求我维护Web服务器。 分发Java应用程序的最佳方法是什么?如果Java应用程序需要在用户计算机上安装工件,该怎么办?有没有好的Java安装/打包系统? 问题答案: 有多种解决方案,取决于你的发行要求。 只是用一个jar。这

  • 这并不困难,但它让我质疑spring auth服务器是最好的选择,还是我应该使用Keycloak?

  • 问题内容: 我目前正在将代码从Jboss7迁移到Wildfly10。 服务器本身完全可以启动。当尝试将我们的客户端与正在运行的新wildfly10服务器进行ejb-remote调用连接时,它将无法正常工作。 我唯一要使用的是以下错误: org.jboss.ejb.client.remoting.ConfigBasedEJBClientContextSelector setupEJBReceiver

  • 我目前正在将我们的代码从Jboss7迁移到Wildfly10。 服务器本身启动完全正常。当尝试将我们的客户端与正在工作的新Wildfly10服务器连接以进行ejb远程调用时,它就是不起作用。 我唯一可以处理的是以下错误: 组织。jboss。ejb。客户远程处理。ConfigBasedEJBClientContextSelector setupEJBReceivers警告:无法注册EJB接收器以连接

  • 事实上中的变量比变量慢,这是众所周知的,并且已经在本网站的不同问题中讨论过了。然而,我仍然没有找到答案的一件事是,使用代码中不同函数内部使用的全局变量(如常量)的最佳和最快的方法是什么? 到目前为止,我能找到的最佳解决方案是定义一个函数,在这里我将全局变量分配给局部变量。 输出: 但这是一个丑陋的解决方案,而且比使用局部变量还要慢。在函数内部使用全局/常量变量等效的最著名的方法是什么,而不必将它们

  • 问题内容: 想象一下,你想使用Python开发非平凡的最终用户桌面(非Web)应用程序。构造项目文件夹层次结构的最佳方法是什么? 理想的功能是易于维护,IDE友好,适用于源代码控制分支/合并以及易于生成安装软件包。 尤其是: 你将源放在哪里? 你将应用程序启动脚本放在哪里? 你将IDE项目放在哪里? 你将单元/验收测试放在哪里? 你将非Python数据(例如配置文件)放在哪里? 你在哪里将非Pyt