2017-01-03 1 views
0

J'essaye d'appeler à distance une application EJB3.1 sur un JBoss 7 à partir d'un Wildfly 10 via JNDI.JBoss Wildfly 10: xnio ClassCastException lorsque j'appelle EJB3.1 sur JBoss 7

L'exécution du code d'un client Java autonome fonctionne parfaitement bien, déployé dans le wildfly, je reçois un ClassCastException:

java.lang.ClassCastException: org.xnio.SingleOption cannot be cast to org.xnio.Option 

Voici les propriétés que je utilise:

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 

Le projet a la dépendance 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> 

La recherche a l'air s tandard:

Context ctx = new InitialContext(properties); 
Service service = (Service) ctx.lookup(Service.JNDI_PATH); 

Des idées?

+0

Qu'advient-il si vous supprimez complètement la dépendance 'jboss-as-ejb-client-bom' ? –

+0

Standard "Aucun message d'erreur EJBReceiver disponible":/ – Kaessrin

+0

Ce que vous faites ici ne ressemble en rien à ce que décrit la documentation [Invocations EJB à partir d'une instance de serveur distant] (https://docs.jboss.org/author/display/WFLY10/EJB + invocations + de + a + distant + serveur + instance) –

Répondre

0

Vérifiez comment vous empaquetez l'application, je suppose que vous incluez les bibliothèques org.xnio dans les archives déployées. Dans ce cas, il sera chargé par différents chargeurs de classe qui provoquent cette erreur.

0

Ajouter un jboss-déploiement structure.xml avec le contenu suivant au niveau supérieur de votre WAR:

<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2"> 
    <deployment> 
    <dependencies> 
     <module name="org.jboss.xnio"></module> 
    </dependencies> 
    </deployment> 
</jboss-deployment-structure> 
+0

Merci pour la réponse. Les dépendances xnio font partie du jboss-as-ejb-client-bom. J'ai vérifié les versions, et le wildfly utilise le 3.4.0.Final de xnio, le client ejb bom les utilise dans 3.0.7.Final. J'ai maintenant essayé les choses suivantes: 1) ajouté le jboss-deployment-structure.xml comme vous l'avez suggéré au WEB-INF de mon fichier de guerre. Aucun effet. 2) a essayé d'ajouter le module en tant qu'exclusion dans la structure de déploiement (je suppose que wildfly utilise sa version locale de xnio au lieu de la version packagée?), N'a pas fonctionné non plus. – Kaessrin

+0

3) Ce que j'ai également fait: Xnio exclu entièrement de la dépendance: Obtenez le message d'erreur classique "No EJB Receiver disponible" lors de l'appel de service. 4) Xnio exclu, mais ajouté par la suite explicitement dans la même version Wildfly utilise: Encore une fois, ClassCastException. – Kaessrin

+0

Je suppose que vous utilisez AS7. Dans ce cas, vous devez définir une dépendance au "module org.xno". Voir [Chargement de classe dans AS7] (https://docs.jboss.org/author/display/AS71/Class+Loading+in+AS7) –