# Simples EJB-Beispiel für JBoss mit Eclipse



## The_S (2. Apr 2009)

Hi-Ho zusammen,

ich versuche gerade verzweifelt ein einfaches EJB-Projekt aufzusetzen und zu testen. Als Server verwende ich JBoss 5.0.1 GA (hab bis jetzt leider noch keine Erfahrung mit JBoss), zur Entwicklung Eclipse 3.4. Aber irgendwie will das nicht so ganz. Vorgehensweise:

1.) In Eclipse ein neues EJB-Projekt anlegen.

Project Name: SimpleEJBExample
Target Runtime: JBoss v5.0
EJB Module version: 3.0
Add project to an EAR: SimpleEJBExampleEAR
Keine Generierung von einem EJB-Client.
Deployment Descriptor generieren.

2.) SessionBean anlegen

SimpleEJBExample => Deployment Descriptor => Session Beans => new Session Bean
Package: test
Class name: SimpleEJB
State Type: Stateless
Remote und Local Business-Interface generieren
Bean name: SimpleEJB
Mapped name: _leer_
Transaction type: Container

3.) EAR auf den Server über Add and Remove Projects deployen

4.) Server starten (ohne Fehlermeldung)

5.) Client anlegen

Neues Java Projekt (SimpleEJBExampleClient)
JBoss Server Runtime in den Build-Path hinzufügen
Neue Klasse => test.SimpleEJBClient

[HIGHLIGHT="Java"]public class SimpleEJBClient {

	public static void main(String[] args) throws NamingException {

		Properties properties = new Properties();
		properties.put("java.naming.factory.initial","org.jnp.interfaces.NamingContextFactory");
		properties.put("java.naming.factory.url.pkgs","=org.jboss.namingrg.jnp.interfaces");
		properties.put("java.naming.provider.url","localhost:1099");
		Context context = new InitialContext(properties);
	}
}[/HIGHLIGHT]

Wenn ich diese Klasse jetzt ausführe, läuft noch alles wie geplant ohne Fehlermeldung. Füge ich jetzt aber am Ende noch ein

[HIGHLIGHT="Java"]context.lookup("SimpleEJB/remote");[/HIGHLIGHT]

ein, erhalte ich folgende Fehlermeldung:


```
Exception in thread "main" javax.naming.NameNotFoundException: SimpleEJB not bound
	at org.jnp.server.NamingServer.getBinding(NamingServer.java:771)
	at org.jnp.server.NamingServer.getBinding(NamingServer.java:779)
	at org.jnp.server.NamingServer.getObject(NamingServer.java:785)
	at org.jnp.server.NamingServer.lookup(NamingServer.java:396)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at sun.rmi.server.UnicastServerRef.dispatch(Unknown Source)
	at sun.rmi.transport.Transport$1.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at sun.rmi.transport.Transport.serviceCall(Unknown Source)
	at sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source)
	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(Unknown Source)
	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
	at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(Unknown Source)
	at sun.rmi.transport.StreamRemoteCall.executeCall(Unknown Source)
	at sun.rmi.server.UnicastRef.invoke(Unknown Source)
	at org.jnp.server.NamingServer_Stub.lookup(Unknown Source)
	at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:722)
	at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:682)
	at javax.naming.InitialContext.lookup(Unknown Source)
	at test.SimpleEJBClient.main(SimpleEJBClient.java:18)
```

Von euch arbeiten doch sicherlich viele täglich mit JBoss. Evtl. sieht ja einer meinen Fehler . Danke!


----------



## The_S (2. Apr 2009)

OK, der Name muss

"SimpleEJBExampleEAR/SimpleEJB/remote"

lauten. Trotzdem danke fürs lesen  .


----------



## JRookie (16. Apr 2009)

Viel weiss ich bei Gott nicht,
aber was sagt JBoss beim deployen? Ich schick dir mal, wie's bei mir aussieht:

11:42:35,656 INFO  [EjbDeployer] installing bean: ejb/HelloWorld.jar#HelloWorld,uid27633413
11:42:35,656 INFO  [EjbDeployer]   with dependencies:
11:42:35,656 INFO  [EjbDeployer]   and supplies:
11:42:35,656 INFO  [EjbDeployer]        jndi:ejb/HelloWorld
11:42:35,890 INFO  [EjbModule] Deploying HelloWorld
....
11:42:36,609 INFO  [ProxyFactory] Bound EJB Home 'HelloWorld' to jndi 'ejb/HelloWorld'

Da findet bei mir die Bindung der Anwendung durch jndi statt. Schau mal in dein JBoss log-out ob der jndi Dienst zur Verfügung steht ...
Viele Grüße und viel Geduld
JRookie


----------



## The_S (17. Apr 2009)

Wie du evtl. anhand meines letzten Beitrags gesehen hast, ist das Problem bereits lange gelöst. Trotzdem danke für deine Antwort.


----------

