JBoss Wildfly 10:xnio在JBoss 7上调用EJB3.1时的ClassCastException
我试图通过JNDI从Wildfly 10远程调用JBoss 7上的EJB3.1应用程序。JBoss Wildfly 10:xnio在JBoss 7上调用EJB3.1时的ClassCastException
从一个独立的Java客户端执行的代码工作得很好,部署在Wildfly,我收到一个ClassCastException:
java.lang.ClassCastException: org.xnio.SingleOption cannot be cast to org.xnio.Option
下面是属性我使用:
remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=true
remote.connectionprovider.create.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false
remote.connections=default
remote.connection.default.host=some.server
remote.connection.default.port=4647
remote.connection.default.connect.options.org.xnio.Options.SSL_ENABLED=true
remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false
remote.clusters=ejbremote.cluster.ejb.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false
remote.cluster.ejb.connect.options.org.xnio.Options.SSL_ENABLED=true
remote.connection.default.username=user
remote.connection.default.password=password
org.jboss.ejb.client.scoped.context=true
java.naming.factory.url.pkgs=org.jboss.ejb.client.naming
项目有jboss-as-ejb-client-bom依赖项:
<dependency>
<groupId>org.jboss.as</groupId>
<artifactId>jboss-as-ejb-client-bom</artifactId>
<version>7.2.0.Final</version>
<type>pom</type>
</dependency>
Lookup looks s标准:
Context ctx = new InitialContext(properties);
Service service = (Service) ctx.lookup(Service.JNDI_PATH);
任何想法?
检查如何打包应用程序,我想你会在部署的归档中包含org.xnio库。 在这种情况下,它将由导致此错误的不同类加载器加载。
包含以下内容添加jboss的部署,structure.xml到你的战争的顶层:
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">
<deployment>
<dependencies>
<module name="org.jboss.xnio"></module>
</dependencies>
</deployment>
</jboss-deployment-structure>
感谢您的回复。 xnio依赖关系是jboss-as-ejb-client-bom的一部分。我检查了这些版本,并且野蝇使用了xnio的3.4.0.Final,ejb客户端bom在3.0.7.Final中使用它们。我现在尝试了以下几件事:1)像我建议的那样,将jboss-deployment-structure.xml添加到我的war文件的WEB-INF中。没有效果。阅读关于部署结构的一些内容,2)尝试将该模块作为排除模块添加到部署结构中(我猜野蛮人使用的是本地版本的xnio而不是打包的版本?),但是也没有工作。 – Kaessrin
3)我还做了什么:完全从依赖关系中排除xnio:进行服务调用时,获取经典的“No EJB Receiver available”错误消息。 4)排除了xnio,而是在相同版本中明确添加了wildfly使用:同样,ClassCastException。 – Kaessrin
我想你使用AS7。 在这种情况下,您必须将依赖项设置为“org.xno模块”。 请参见[AS7中的类加载](https://docs.jboss.org/author/display/AS71/Class+Loading+in+AS7) –
会发生什么,如果你完全删除了'的jboss-AS-EJB-客户bom'依赖? –
标准的“没有EJBReceiver可用的错误信息”:/ – Kaessrin
你在这里做的与文档描述的内容看起来不一样[从远程服务器实例的EJB调用](https://docs.jboss.org/author/display/WFLY10/EJB + invocations + from + a + remote + server + instance) –