EJBCLIENT000025: Pas d'EJB récepteur disponibles pour la manutention?
Je suis en train d'essayer de se connecter à distance à un EJB sur mon local JBoss 7.2 à partir d'un fichier exécutable de l'application Java (local non pas sur JBoss).
Mais j'obtiens l'erreur suivante/Exception :
java.lang.IllegalStateException: EJBCLIENT000025: No EJB receiver available for handling [appName:xx-xx, moduleName:xx-xx-business-impl, distinctName:] combination for invocation context org.jboss.ejb.client.EJBClientInvocationContext@14bc02d
at org.jboss.ejb.client.EJBClientContext.requireEJBReceiver(EJBClientContext.java:693)
at org.jboss.ejb.client.ReceiverInterceptor.handleInvocation(ReceiverInterceptor.java:116)
at org.jboss.ejb.client.EJBClientInvocationContext.sendRequest(EJBClientInvocationContext.java:183)
at org.jboss.ejb.client.EJBInvocationHandler.doInvoke(EJBInvocationHandler.java:177)
at org.jboss.ejb.client.EJBInvocationHandler.doInvoke(EJBInvocationHandler.java:161)
at org.jboss.ejb.client.EJBInvocationHandler.invoke(EJBInvocationHandler.java:124)
at com.sun.proxy.$Proxy0.getX(Unknown Source)
at com...ris.client.PACSServiceTest.main(PACSServiceTest.java:71)
Le test à distance bean TestService
et sa mise en œuvre est à l'OREILLE.
Classes De Serveur:
@Remote
public interface TestService {
public int getX();
}
@Stateless
@Remote(TestService.class)
public class TestServiceBean implements TestService{
@Override
public int getX() {
//TODO Auto-generated method stub
return 1111;
}
}
Code Client:
final Hashtable jndiProperties = new Hashtable();
jndiProperties.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");
jndiProperties.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory");
jndiProperties.put(Context.PROVIDER_URL,"remote://localhost:4447");
String jndiName = "ejb:orbis-dicom/orbis-dicom-business-impl//TestServiceBean!"
+ TestService.class.getName();
logger.info(jndiName);
final Context context = new InitialContext(jndiProperties);
TestService service = (TestService) context.lookup(jndiName);
logger.info(service.getX());
jboss-ejb-client.propriétés:
remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=false
remote.connections=default
remote.connection.default.host=localhost
remote.connection.default.port =4447
remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false
remote.connection.default.username=xx
remote.connection.default.password=x
client dépendances:
+- org.jboss.spec.javax.transaction:jboss-transaction-api_1.1_spec:jar:1.
nal:runtime
+- org.jboss.spec.javax.ejb:jboss-ejb-api_3.1_spec:jar:1.0.2.Final:runtim
+- org.jboss:jboss-ejb-client:jar:1.0.16.Final:runtime
| +- org.jboss.marshalling:jboss-marshalling:jar:1.3.16.GA:runtime (vers
naged from 1.3.15.GA)
| \- org.jboss.logging:jboss-logging:jar:3.1.2.GA:runtime
+- org.jboss.xnio:xnio-api:jar:3.0.7.GA:runtime
+- org.jboss.xnio:xnio-nio:jar:3.0.7.GA:runtime
+- org.jboss.remoting3:jboss-remoting:jar:3.2.14.GA:runtime
+- org.jboss.sasl:jboss-sasl:jar:1.0.3.Final:runtime
+- org.jboss.marshalling:jboss-marshalling-river:jar:1.3.16.GA:runtime
+- org.jboss.as:jboss-as-naming:jar:7.2.0.Final:provided
| +- org.jboss:jboss-remote-naming:jar:1.0.5.Final:provided
| +- org.jboss.msc:jboss-msc:jar:1.0.4.GA:provided
| +- org.jboss.as:jboss-as-server:jar:7.2.0.Final:provided
| | +- org.jboss.as:jboss-as-controller:jar:7.2.0.Final:provided
| | | +- org.jboss.as:jboss-as-controller-client:jar:7.2.0.Final:provi
| | | \- org.jboss:staxmapper:jar:1.1.0.Final:provided
| | +- org.jboss.as:jboss-as-domain-http-interface:jar:7.2.0.Final:prov
| | | +- org.jboss.as:jboss-as-domain-management:jar:7.2.0.Final:provi
| | | | \- org.jboss:jboss-common-core:jar:2.2.17.GA:provided
| | | \- org.jboss.com.sun.httpserver:httpserver:jar:1.0.1.Final:provi
| | +- org.jboss.as:jboss-as-deployment-repository:jar:7.2.0.Final:prov
| | | \- org.jboss.as:jboss-as-protocol:jar:7.2.0.Final:provided
| | +- org.jboss.as:jboss-as-platform-mbean:jar:7.2.0.Final:provided
| | +- org.jboss.as:jboss-as-process-controller:jar:7.2.0.Final:provide
| | | \- system:jdk-tools:jar:jdk:system
| | +- org.jboss.as:jboss-as-remoting:jar:7.2.0.Final:provided
| | | \- org.jboss.as:jboss-as-network:jar:7.2.0.Final:provided
| | +- org.jboss.as:jboss-as-version:jar:7.2.0.Final:provided
| | +- org.jboss:jandex:jar:1.0.3.Final:provided
| | +- org.jboss:jboss-dmr:jar:1.1.6.Final:provided
| | +- org.jboss.invocation:jboss-invocation:jar:1.1.1.Final:provided
| | +- org.jboss.logmanager:jboss-logmanager:jar:1.4.0.Final:provided
| | +- org.jboss.logmanager:log4j-jboss-logmanager:jar:1.0.1.Final:prov
| | +- org.jboss.modules:jboss-modules:jar:1.2.0.CR1:provided
| | +- org.jboss.stdio:jboss-stdio:jar:1.0.1.GA:provided
| | +- org.jboss.threads:jboss-threads:jar:2.1.0.Final:provided
| | \- org.jboss:jboss-vfs:jar:3.1.0.Final:provided
| \- org.jboss.as:jboss-as-build-config:jar:7.2.0.Final:provided
\- log4j:log4j:jar:1.2.16:compile
Des idées? Merci à l'avance!
Double Possible de Aucun EJB récepteur disponibles pour la manutention
OriginalL'auteur yck | 2014-02-13
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin de garder le InitialContext référencé (il ne doit pas être nettoyée) aussi longtemps que vous le souhaitez accéder à des méthodes sur la "recherche de ed" à Distance EJB.
InitialContext
, mais finalement, cela a fonctionné pour moi. Merci!OriginalL'auteur Stefan Cordes
La même question a été mise sur écoute-moi pendant des jours. Je suis l'aide de Wildfly 9.0.2, mais l'essence devrait être le même. Définir la propriété
jboss.naming.client.ejb.context
à faux.JBoss offre deux moyens différents pour la recherche à distance, à distance "naming" et "ejb-client". Les deux sont expliquées mieux à https://docs.jboss.org/author/display/AS71/Remote+EJB+invocations+via+JNDI+-+EJB+client+API+or+remote-naming+project
Vous utilisez un pur "ejb-client" approche, dans laquelle le InitialContext que l'EJB proxy a été regardé partir n'est plus valide (c'est à dire, il a été fermé ou gc ed). C'est ce que le "non EJB récepteur" exception moyens. Lorsque la propriété
jboss.naming.client.ejb.context
est vrai, il indique que InitialContext doit être utilisé pour toutes les EJB appels. Garder une référence à la InitialContext comme mentionné précédemment n'est pas une bonne idée, cependant.La solution est de mettre
jboss.naming.client.ejb.context
à false, ce qui impose des EJB appels gérés par la distance "naming". Pour que cela fonctionne, vous avez besoin dejboss-ejb-client.properties
etjndi.properties
fichiers sur votre classpath (ou configurer par programmation). Ce dernier doit contenir les propriétés suivantes:Compte tenu de cette configuration, vous pouvez même appeler
InitialContext.close()
immédiatement après la recherche de la EJB proxy (dans le cas où vous ne pouvez pas attendre pour qu'il soit automatiquement gc ed).OriginalL'auteur pxcv7r
ajouter le paramètre ci-dessous dans votre code client:
jndiProperties.put("jboss.de nommage.client.ejb.contexte",true);
OriginalL'auteur Sam
J'ai connu le même problème.
Cette exception est générée, car une tentative pour ouvrir une connexion JNDI () après l'ouverture de tous les permis de connexions à partir d'un client vers le serveur d'application (JBoss).
L'erreur commune est que l'ouverture de la connexion n'est pas fermée dès que possible. Pire que cela, il n'est pas fermé à tous.
Pour résoudre le problème, il suffit d'ajouter cette instruction, après vous avez terminé avec votre EJB:
Reportez-vous à cette lien trop.
OriginalL'auteur Mohamed Ennahdi El Idrissi
Nous avons été confrontés à ce problème lors du passage de l'ejb de référence à partir d'une méthode à l'autre pour être utilisé dans la seconde.
Afin de mieux vous créer le contexte, obtenir de l'ejb, de l'utilisation et de fermer le contexte dans une méthode.
OriginalL'auteur Sergio Gabari
Si quelqu'un est intéressé, à mon avis, le message dit: je ne peux pas obtenir une connexion au serveur de haricot. Whyever! Il peut y avoir de nombreuses raisons (mauvais ejb recherche de syntaxe, wriong port, mal, peu importe).
Dans mon cas, c'était un "mauvais" de l'hôte, qui, à côté de toutes les autres définitions ont été définis dans le fichier de propriétés - unfortunetly avoir des espaces de fin.
Espère que cela peut aider les autres.
OriginalL'auteur Horst-Günther Barzik
Le même problème que j'ai rencontré.
Je peux voir que vous essayez d'exécuter un test de l'unité invoquer à distance EJB, est ce que le droit?
Veuillez assurez-vous d'ajouter votre jboss-ejb-client.fichier de propriétés dans le classpath.
Si vous créez jboss-ejb-client.fichier de propriétés, mais assurez-vous qu'il est inclus dans le classpath, il est nécessaire.
J'ai résolu ce problème de cette manière.
OriginalL'auteur Sam
contexte.close() ne permet pas de résoudre le problème pour moi.
J'ai initialisé un vide contexte de la jnki recherche dans le ci-dessous de manière pour beans de session.
private static String JNDINAME = "java:global/XXXEAR/XXXXejb/!.XXXHome";
la maison = (XXXHome) contexte.recherche(JNDINAME);
Pour les beans Entité...c'est complexe et implique plusieurs changements dans la configuration de JBoss.
Les beans entité 2.X ne sont pas pris en charge dans le léger configuration de JBoss as 7 et suivantes. Nous devons avoir recours à l'utilisation de la autonome-configuration complète ou autonome-plein-ha de configuration pour les beans entité déploiement dans AS7.
Démarrer le serveur à l'aide de l'application autonome full.xml et et vous verrez les beans entité étant lié à JNDI:
17:27:31,762 INFO [org.jboss.comme.ejb3.le déploiement.les processeurs.EjbJndiBindingsDeploymentUnitProcessor] (MSC thread de service 1-7) JNDI liaisons pour la session bean nommé XXXBean dans le déploiement de l'unité sous-déploiement "XXXEJB.jar" déploiement "XXXEAR.l'oreille" sont comme suit:
JNDI devrait être examiné par le java:global contraignant :
java:global/XXXEAR/XXXXEJB/!.
Il fonctionne bien..!!
OriginalL'auteur Anand Bansal