JMS客户端工具 - 有没有适用于Java 8的HermesJMS替代品?

11


有哪些 HermesJMS 的替代品可用?我需要针对 JBoss WildFly 8 进行测试,它使用 Java 8。HermesJms 似乎是为 Java 6 构建的,我找不到完全针对 Java 8 的版本。我尝试使用 这个配置选项 来设置 hermes.bat,但是我收到以下错误:

org.xml.sax.SAXNotRecognizedException: Feature 'http://javax.xml.XMLConstants/feature/secure-processing' is not recognized.

这似乎是由Xerces JAR版本引起的,但我担心在%HERMES_HOME%\lib\ext下的所有其他库是否都有类似的Java 8兼容性问题。最好的方法是使用一个Java 8兼容的HermesJMS构建,而不是逐个尝试修复JAR文件,但鉴于没有这样的分支,这似乎是不可能的。

谢谢,
Paddy

5个回答

20

为了使其在Java 8上正常工作,您需要添加以下参数:

-Dorg.xml.sax.parser=com.sun.org.apache.xerces.internal.parsers.SAXParser -Djavax.xml.parsers.DocumentBuilderFactory=com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl -Djavax.xml.parsers.SAXParserFactory=com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl

Windows
打开bin/hermes.bat,并在start "HermesJMS" "%JAVA_HOME%\bin\javaw"后面添加这些参数。

Linux / Mac
打开bin/hermes.sh,并在最后一行的"$JAVACMD"后面添加这些参数。


需要在哪一行上方添加...? - AMIT

14

这似乎与Java 7和8在XMLP中的区别有关。

为了使其起作用,我使用以下方法更新了Hermes lib文件夹:

从MVN repo下载JAR后,我将它们重新命名以匹配Hermes中的现有命名。

更改后,Hermes启动正常(在使用JMS时也正常工作),并且日志中没有错误。


7
你可以尝试使用JMSToolBox(在SourceForge上)

2
你问有什么替代方案。这里有一个。它的配置略微简单一些(但只是稍微简单一点),并且它的优点是实际上可以工作。 - staylorx

3

%HERMES_HOME%\ lib 目录中删除 xerces.jar xercesImpl.jar 。 删除这些解析器后,Hermes将默认使用JDK8中的SAX解析器,并且会更好地工作。

点击此处获取更多详细信息。


1

我通过将以下jar文件添加到lib目录中使其正常工作。 xercesImpl


这只包含比顶部答案https://dev59.com/H14b5IYBdhLWcg3wxURi#36565755更少的信息 - 它有什么不同? - luk2302
传递Java参数对我也没有用。因为JAR本身不在您的库中。所以只有当您拥有该JAR时,它才能引用该类。希望这很清楚。 - Yaswanth

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接