# EJB Client: Probleme mit der Client.jar



## Romanticus (9. Okt 2007)

Hallo,

ich habe ein einfaches HelloWorld-EJB erstellt und erfolgreich deployed (JBoss 4.2.1). Den Client dazu habe ich auch erstellt und es funktioniert auch einwandfrei. Nur habe ich ein kleines Verständnis-Problem. Und zwar sieht der Code des Beispiel-Clients (aus "Enterprise JavaBeans 3 - Das EJB3-Praxisbuch für ein- und Umsteiger" von W. Eberling und J. Lessner) folgendermaßen aus:


```
import java.util.Properties;
import javax.naming.InitialContext;

public class Main {
	public static void main(String[] args) throws Exception {
		Properties props = new Properties();
		props.put("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
		props.put("java.naming.provider.url", "jnp://localhost:1099");
		InitialContext context = new InitialContext(props);
		HelloWorld hello = (HelloWorld)context.lookup("HelloWorldImpl/remote");
		System.out.println(hello.hello("World"));
	}
}
```

Nur, so funktioniert es bei mir nicht. Der Complier beschwert sich, dass er den Typ *HelloWorld* nicht kennt. Ich habe in Eclipse 3.3 ein EJB Projekt angelegt, mit EJB-, Client- und EAR-Teilprojekten. Im EJB-Projekt wird in der Library *EJB Libraries* ein Ordner *HelloWorldClient* angelegt, jedoch ohne Inhalt. Wenn ich die Option *Create EJB Client JAR* ausführe, bekomme ich die Meldung, dass die Client-JAR schon existiert, diese kann ich aber nirgends im Workspace finden. 
Die einzige Möglichkeit den Client zum Laufen zu bringen, die ich gefunden habe, ist das benötigte Remote-Interface (HelloWorld) im Client-Projekt zur Verfügung zu stellen (als selbstgebaute JAR oder als ein Class-File) und dieses Interface im Client importieren.
Was ich nicht verstehe - ist meine Konfiguration falsch, sodass das Client-Projekt die benötigte JAR nicht automatisch findet, oder ist der Beispiel-Code falsch und es funktioniert nicht ohne ein Import?

Gruß,
Romanticus


----------



## megachucky (10. Okt 2007)

> Die einzige Möglichkeit den Client zum Laufen zu bringen, die ich gefunden habe, ist das benötigte Remote-Interface (HelloWorld) im Client-Projekt zur Verfügung zu stellen (als selbstgebaute JAR oder als ein Class-File) und dieses Interface im Client importieren.


Also das RemoteIF muss der Client auf jeden Fall kennen und daher im Client JAR vorhanden sein.

Ich würde dir gerade zum lernen empfehlen, die EJBs etc einfach als JAVA Klassen in Eclipse selbst zu schreiben.
Diese JEE Erweitung in Eclipse bringt finde ich nichts außer Verwirrung und Unklarheiten.

Und dann einfach das Client File incl. dem RemoteIF als JAR exportieren.


----------



## Romanticus (10. Okt 2007)

Danke für die Antwort 

Es bestätigt sich nochmal - wer lesen kann ist klar im Vorteil  Ich hatte gestern von dem ganzen Suchen und Ausprobieren einfach nicht gemerkt, dass man die Sources der Beispiele im Internet runterladen kann, inclusive der dazugehörigen build-Files  Alle benötigten Dependencies werden im Ant gesetzt und das Interface liegt im selben Package, wie auch die Client-Klasse, kein Wunder, dass die kein Import gebraucht haben 
Gruß,
Romanticus


----------

