# ejb und lokaler client.



## d00d (12. Sep 2008)

hallo, mich würde folgendes interessieren:

auf einem application server liegt ein EJB in form einer ejb-jar datei. kann ich nun einen client schreiben, den ich lokal au fmeinem pc starten kann, der dann die "befehle" an den application server weiterleitet damit ich die ejb instanzen erstellen kann?


----------



## maki (12. Sep 2008)

Viel zu schwammig die Frage...


----------



## d00d (12. Sep 2008)

um mit dem ejb, das auf dem application server liegt zu kommunizieren benutzt man ja normalerweise ein servlet oder eine jsp wie ich das verstanden habe.

ich möchte mir nun lokal einen client schreiben, den ich auf meinem laptop z. B. benutzen kann und der beim starten irgendeine methode aufruft, die das BEAN bereit stellt (z. b. einfach nur eine normale konsolenausgabe oder die rückgabe der serversystemzeit).

ich kenn mich leider mit netzwerkprogrammierung nicht sonderlich gut aus deshalb ist es vielleicht etwas schwierig zu verstehen was ich möchte.


----------



## maki (12. Sep 2008)

Schwierig zu verstehen ist es weil du dich sehr ungenau ausdrückst 

Was für eine EJB?
2.1 oder3.0?
Session oder Entity oder MessageDriven?


----------



## d00d (12. Sep 2008)

achso, stateless session ejb 2.1


----------



## maki (12. Sep 2008)

Du erzeugst gar keine INstanzen von Session Beans, das macht alleine der EJB Container.

Das Netzwerk ist wegabstrahiert, damit hast du so gut wie nix zu tun und Netzwerkprogrammierung ist was anderes.

Du holst dir nur das Remote Interface.


----------



## d00d (12. Sep 2008)

ich muss ja aber erst eine verbindung von meinem laptop zum server aufbauen. darum gehts mir.


----------



## ARadauer (12. Sep 2008)

hab das vor kurzem probiert...


```
package first;

import javax.naming.*;

public class TestClient {

	public void runTest() throws Exception {
		InitialContext ctx = new InitialContext();
		TestBean bean = (TestBean) ctx.lookup("ejb/SimpleBeanJNDI");
		String result = bean.sayHello();
		System.out.println(result);
	}

	public static void main(String[] args) {
		try {
			TestClient cli = new TestClient();
			cli.runTest();

		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}
```
der server lief aber lokal, wie man nun jndi sagen kann, dass es auf einem anderen server nachschaun soll, weiß ich nicht, da müssen die ejb profis helfen. aber grundsätzlich geht es natürlich...

ich hab mich dann für rmi entschieden...


----------



## FArt (13. Sep 2008)

@ARadauer
Das ist EJB3, bei EJB2 bracht man noch das Home-Interface. Ausserdem hilft der Code nicht weiter, weil ohne bestimmte Systemproperties new InitialContext() lediglich eine Exception wirft.

Nichts desto trotz: was d00d hier wissen will, findet er über Google in tausenden Tutorials und Beispielen.


----------



## HoaX (13. Sep 2008)

```
Properties sysprop = System.getProperties();
sysprop.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
sysprop.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces");
sysprop.put("java.naming.provider.url", "jnp://derServer:1099");
```
(fast) so stehts in einer unserer anwendungen ... funktioniert. zeile 4 dürfte das ausschlaggebende sein


----------

