Impossible d'instancier une classe: org.jnp.les interfaces.NamingContextFactory
Voici mon code:
SpeakerRemote.java
package test;
import javax.ejb.Remote;
@Remote
public interface SpeakerRemote {
String sayAPhrase( String phrase );
}
SpeakerBean.java
package test;
import javax.ejb.Stateless;
@Stateless
public class SpeakerBean implements SpeakerRemote {
@Override
public String sayAPhrase( String phrase ){
return "Speaker Service:\t" + phrase;
}
}
J'ai assemblé avec maven. Ici je vous montre en invoquant partie:
Invoker.java
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import java.util.Properties;
public class Invoker {
public static InitialContext getContext() throws NamingException {
final Properties properties = new Properties();
properties.put( Context.INITIAL_CONTEXT_FACTORY,
"org.jnp.interfaces.NamingContextFactory" );
properties.put( Context.PROVIDER_URL, "jnp://127.0.0.1:1099" );
return new InitialContext( properties );
}
}
Main.java
import test.SpeakerRemote;
import javax.naming.InitialContext;
import javax.naming.NamingException;
public class Main {
public static void main( String... args ) {
try {
InitialContext context = Invoker.getContext();
SpeakerRemote speaker = ( SpeakerRemote ) context.lookup( "SpeakerBean/remote" );
System.out.println( speaker.sayAPhrase( "Hello, World!" ) );
}
catch ( NamingException e ) {
e.printStackTrace();
}
}
}
Avoir commencé cette application, j'ai reçu cette exception:
"Impossible d'instancier une classe: org.jnp.les interfaces.NamingContextFactory [Root exception java.lang.ClassNotFoundException: org.jnp.les interfaces.NamingContextFactory]"
Merci de m'aider, car j'ai vraiment besoin de la comprendre!
P. S.-je utiliser jboss 7.1.1 Finale + EJB 3.1 + Maven 3.1.1 + Java 1.7 + Win7
- pas de. dites-moi comment je peux l'observer
- Je ne comprends pas de quoi vous parlez. J'ai Jboss sur ma machine. J'ai accès à n'importe quel répertoire. Dis-moi juste ce que je ferai)
- Le message d'exception est plutôt intéressant, je pense. "Racine exception java.lang.ClassNotFoundException: org.jnp.les interfaces.NamingContextFactory". Êtes-vous sûr que vous en avez le jar dans le classpath?
- D'abord trouver jar la classe vient de l', puis assurez-vous que lorsque vous exécutez l'application, le pot est dans le classpath. Aussi, tout le code que vous avez posté ne sont même pas pertinentes. Vous devez vérifier votre paramètre de chemin de classe.
- Permettez-moi de décrire ce que j'ai fait. J'ai mis SpeakerRemote.java et SpeakerBean.java dans le jar fichier à l'aide de maven montage et déployé sur Jboss. Puis j'ai fait du client-app (Main.java + Invoke.java) et ajouter le jar fichiers dans lib-dir.
- Salut. Set nom JNDI pour vous ejb.Distance de l'objet et de déployer les dernières pkg sur le serveur. puis recherche d'ejb objet distant à l'aide que le nom JNDI.
- Sukkoor, je suis vraiment débutant dans EJB. S'il vous plaît, dites-moi ho, je peux mettre le nom JNDI? Doit-je utiliser le "Nom" annotation à mon interface à distance?
Vous devez vous connecter pour publier un commentaire.
De lire cette documentation pour JBoss 7.1
Distance EJB invocations via JNDI - EJB client de l'API ou à distance de nommage de projet
Ajouter au classpath jboss-client.jar à partir de $JBOSS_HOME/bin/client
Invoker.java
Main.java
Autre approche: EJB invocations à partir d'un client distant en utilisant JNDI
Ajouter au classpath fichier jboss-ejb-client.propriétés
jboss-ejb-client
Invoker.java
Main.java
Essayer ce code