Avatar billede margitbork Nybegynder
15. september 2006 - 11:50 Der er 12 kommentarer og
1 løsning

JNDI og J2SE, hvordan gør man det

Jeg vil gerne anvende JNDI i min J2SE applikation, men jeg kan ikke finde ud af hvad jeg gør galt. Er der et godt eksempel på hvilke .jar filer jeg skal have i min classpath, og hvordan koden ellers skal se ud ?
Avatar billede arne_v Ekspert
15. september 2006 - 13:25 #1
hvilken directory server ?
Avatar billede margitbork Nybegynder
15. september 2006 - 13:51 #2
? Jeg er helt novice på dette område så jeg ved ikke lige hvad du spørger om...
Avatar billede margitbork Nybegynder
15. september 2006 - 14:11 #3
Jeg har fået downloaded Jboss, og vil køre den som en standalone jnphost.
Jeg har disse properties
java.naming.provider.url=minIpadresse:1099
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.factory.url.pkgs=org.jboss.naming

Jeg starter min jnphost ved at kalde
org.jnp.server.Main.main(null);

Når jeg så forsøger at binde eller lave lookup får jeg en exception:
javax.naming.NameNotFoundException: MainApplication not bound
    at org.jnp.server.NamingServer.getBinding(NamingServer.java:529)
    at org.jnp.server.NamingServer.getBinding(NamingServer.java:537)
    at org.jnp.server.NamingServer.getObject(NamingServer.java:543)
    at org.jnp.server.NamingServer.lookup(NamingServer.java:296)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:294)
    at sun.rmi.transport.Transport$1.run(Transport.java:153)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.rmi.transport.Transport.serviceCall(Transport.java:149)
    at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:701)
    at java.lang.Thread.run(Thread.java:595)
    at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:247)
    at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:223)
    at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:126)
    at org.jnp.server.NamingServer_Stub.lookup(Unknown Source)
    at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:625)
    at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:587)
    at javax.naming.InitialContext.lookup(InitialContext.java:351)
    at com.ibm.dk.ecs.MainApplication.main(MainApplication.java:98)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:78)
Trying to bind mainapp to context
Problem with binding application
javax.naming.NameNotFoundException: MainApplication not bound
    at org.jnp.server.NamingServer.getBinding(NamingServer.java:529)
    at org.jnp.server.NamingServer.getBinding(NamingServer.java:537)
    at org.jnp.server.NamingServer.getObject(NamingServer.java:543)
    at org.jnp.server.NamingServer.lookup(NamingServer.java:296)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:294)
    at sun.rmi.transport.Transport$1.run(Transport.java:153)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.rmi.transport.Transport.serviceCall(Transport.java:149)
    at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:701)
    at java.lang.Thread.run(Thread.java:595)
    at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:247)
    at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:223)
    at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:126)
    at org.jnp.server.NamingServer_Stub.lookup(Unknown Source)
    at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:625)
    at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:587)
    at javax.naming.InitialContext.lookup(InitialContext.java:351)
    at com.ibm.dk.ecs.MainApplication.main(MainApplication.java:98)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:78)
Avatar billede margitbork Nybegynder
15. september 2006 - 14:12 #4
Jeg forsøger først et lookup, og når jeg der får en NameNotFoundException forsøger jeg med bind. men den giver samme exception...
Avatar billede arne_v Ekspert
15. september 2006 - 20:24 #5
JNDI er en specifikation ligesom JDBC

der ligger saa en implementation bag ved

du bruger saa JBoss som directory server
Avatar billede arne_v Ekspert
15. september 2006 - 20:29 #6
NameNotFoundException siger jo at navnet ikke er der

skulle det vaere det ?

du kan browse JNDI paa JBoss via http://xxxxx:8080/jmx-console/

muligvis ville det hjaelpe at se en kode snippet
Avatar billede margitbork Nybegynder
18. september 2006 - 08:57 #7
Jeg troede at navnte burde være der når jeg foretager en bind, skal det initieres på en eller anden måde først ?
Avatar billede margitbork Nybegynder
18. september 2006 - 08:58 #8
Jeg har ikke hele JBoss serveren kørende, men forsøger med den som en stand-alone JNP-server
Avatar billede margitbork Nybegynder
18. september 2006 - 10:47 #9
Jeg har nu fundet ud af at binde, og lookup og rebinde mit objekt. MEN det er jo ikke det samme objekt jeg får retur, det er blot et serialized kopi af objektet. ER det altid sådan. Jeg har brug for at få kontakt med en allerede kørende process, for at kunne kalde metoder i denne. Er det i virkeligheden en anden teknologi jeg har brug for?
Avatar billede arne_v Ekspert
19. september 2006 - 05:20 #10
RMI vil jeg tro
Avatar billede margitbork Nybegynder
19. september 2006 - 07:39 #11
Jeps, det er også det vi er kommet frem til her i huset...Og med din artikel havde jeg det kørende på 15 minutter :o).
Avatar billede margitbork Nybegynder
19. september 2006 - 07:40 #12
Arne, vil du have point så smid et svar.
Avatar billede arne_v Ekspert
19. september 2006 - 12:57 #13
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