Avatar billede kube Nybegynder
07. december 2004 - 15:37 Der er 5 kommentarer og
1 løsning

jeg får exception ved forbindelse til ejb

Hej,
der opstår en exception, når jeg vil køre min klient, der skal benytte en EJB jeg har på en JBoss server.

Hvorfor kastes exception?


Min klasse:

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.rmi.PortableRemoteObject;


public class VekslerKlient
{

  public static void main(String[] args) {

      try
      {

        System.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
        System.setProperty("java.naming.factory.url.pkgs", "org.jnp.interfaces");
        System.setProperty("java.naming.provider.url", "localhost:1099");

        Context initial = new InitialContext();

        Object objref = initial.lookup("ejb/Veksler");

        VekslerHome home = (VekslerHome)PortableRemoteObject.narrow(objref, VekslerHome.class);

        Veksler veksler = home.create();

        double beloeb;

        beloeb = veksler.euroTilDollar(100);
        System.out.println("100 euro er "+beloeb+" dollar.");

        beloeb = veksler.dollarTilEuro(100);
        System.out.println("100 dollar er "+beloeb+" euro.");

        System.exit(0);

      }
      catch (Exception ex)
      {
        System.err.println("Caught an unexpected exception!");
        ex.printStackTrace();
      }
  }
}

FEJLBESKEDEN ER (udskrift af exception):

Caught an unexpected exception!
javax.naming.NoInitialContextException: Cannot instantiate class: org.jnp.interf
aces.NamingContextFactory [Root exception is java.lang.ClassNotFoundException: o
rg.jnp.interfaces.NamingContextFactory]
        at javax.naming.spi.NamingManager.getInitialContext(Unknown Source)
        at javax.naming.InitialContext.getDefaultInitCtx(Unknown Source)
        at javax.naming.InitialContext.init(Unknown Source)
        at javax.naming.InitialContext.<init>(Unknown Source)
        at VekslerKlient.main(Unknown Source)
Caused by: java.lang.ClassNotFoundException: org.jnp.interfaces.NamingContextFac
tory
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClassInternal(Unknown Source)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Unknown Source)
        at com.sun.naming.internal.VersionHelper12.loadClass(Unknown Source)
        ... 5 more
Avatar billede arne_v Ekspert
07. december 2004 - 15:42 #1
Du mangler jbossclient-all.jar i classpath for client programmet
Avatar billede kube Nybegynder
07. december 2004 - 15:51 #2
Hej,
jeg har sat en kopi af min ejb (veksler-ejb.jar) i classpath'en. Det burde vel være ok
Avatar billede arne_v Ekspert
07. december 2004 - 15:53 #3
nej

du skal have nogle klasser som ved hvordan man snakker med jboss

de er i den jar fil jeg snakker om
Avatar billede kube Nybegynder
07. december 2004 - 16:07 #4
Okay, det vil så sige at man kan altså ikke lave en klient uden at man ved hvilken server bønnen ligger på! Er det ikke lidt upraktisk?

Jeg kan forstå hvorfor EJB'en skal have nogle forskellige XML filer, så den kan køre på serveren, men det med klienten er for mig lidt syret!

Men tak for hjælpen -> svar
Avatar billede arne_v Ekspert
07. december 2004 - 16:11 #5
En fat client skal normalt have sat nogle server specifikke propertie sog
have nogen server specifikke jar filer i classpath, men:
1)  det kan gøres med konfiguration uden kode ændringer
2)  det er ret usædvaneligt med fat client - normalt er der en web app
    foran EJB's og så er problemet ikke (fordi web app'en også kører inde i
    JBoss og har alle de nødvendige properties og klasser)
Avatar billede arne_v Ekspert
07. december 2004 - 16:11 #6
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester