JBoss NameNotFoundException: einloggen not bound

erazor2106

Bekanntes Mitglied
Hallo Leute,

ich bin neu in der JBoss Thematik und auch bei der Arbeit mit Eclipse. Ich habe angefangen mich mit dem Buch: Enterprise JavaBeans 3.0: Mit ... - Uwe Rozanski - Google Bücher zu beschäftigen und auf dem Beispiel aus Kapitel 4 aufbauend ein kleines Programm zum laufen zu bringen.

Hierzu folgende Struktur

einloggen.java
Java:
package eigene_klassen;

import javax.ejb.*;
import java.io.*;
import javax.swing.*;


@Stateless
public class einloggen implements einloggenRemote
 {
	 public Session session;
	
	 public String Einloggen(String server, String portString)
	  {
              ....
	  }
 }

einloggenRemote.java
Java:
package eigene_klassen;

import javax.ejb.*;
import java.io.*;
import javax.swing.*;


@Remote
public interface einloggenRemote 
 {
	public String Einloggen(String server, String portString);
 }

funktionen.jsp
Java:
<%@ page import="java.util.*" 
         import="eigene_klassen.*" 

         import="javax.ejb.*"
         import="java.io.*"
	     import="javax.swing.*"
         import="javax.naming.*" 
         import="javax.rmi.PortableRemoteObject" 
         import="java.io.IOException"
   
         import="com.sun.org.apache.xml.internal.serializer.OutputPropertiesFactory"    
         import="org.bouncycastle.*"
         import="java.security.Security" 
%>	

        try
	 {
	   Properties p = new Properties();
	   p.put(Context.INITIAL_CONTEXT_FACTORY,	"org.jnp.interfaces.NamingContextFactory");
	   p.put(Context.URL_PKG_PREFIXES,   	    "org.jboss.naming:org.jnp.interfaces");
	   p.put(Context.PROVIDER_URL, 			    "jnp://localhost:1099");
	   Context ctx = new InitialContext(p);
       Object ref = ctx.lookup("java:/einloggen/Remote");
	   einloggenRemote fgr = einloggenRemote) PortableRemoteObject.narrow(ref,einloggenRemote.class);
         }
	catch (Exception e) 
	 {
             System.out.println("Fehler aufgetreten:  " + e.getMessage());
         }

Dieses wird dann ohne Probleme deployed. Ich bekomme aber dann immer folgenden Fehler beim Aufrufen der methode:

Java:
18:25:48,765 ERROR [[jsp]] Servlet.service() for servlet jsp threw exception
javax.naming.NameNotFoundException: einloggen 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:267)
	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:392)
	at org.apache.jsp.web.kap04.funktionen_jsp._jspService(funktionen_jsp.java:92)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
	at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
	at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175)
	at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
	at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
	at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
	at java.lang.Thread.run(Thread.java:662)

Ich habe gestern eine ganze Weile hierzu gegoogelt aber keine Lösung gefunden welche mir weiterhilft.
Der fehler tritt bei Object ref = ctx.lookup("java:/einloggen/Remote"); auf

Im System verwende ich jdk1.6.0_25 und jboss-4.0.4.GA.
Ja ich weiß dass beides nicht up-to-date ist 😀
 
Schau mal in dein JBoss ServerLog wie der JNDI-Name für deine EJB wirklich lautet.

Edit: Und beim JBoss solltest du wirklich auf eine neuere wechseln, es gibt zwar das Sprichwort "Auf alten Rädern lernt man fahren" aber das gilt hier IMHO nicht.
 
Danke für die schnelle Antwort.

Wo soll dass da stehen bzw. nach welchem Eintrag soll ich da suchen?
In dem Log-File stehen doch nur die Sachen die ich auch in der Console gesehen habe, oder?
 
ich habe auch gerade in der jmx-console gesehen das meine Bean nicht bei den Namespaces aufgeführt ist. Wie kann ich sie denn dort hinzufügen?
 
Problem gelöst!

In einer der Klassen gab es einen Fehler welcher irgendwie nicht angezeigt wurde. Deshalb gab es keinen EIntrag im JNDIView und somit auch kein lookup möglich.
 

Zurück
Oben