Probleme bei EJB-Tutorial. Kann auf EJB nicht zugreifen

enrix

Mitglied
Hallo Leute,
ich bin gerade dabei mich in Java EE Application Server einzuarbeiten. Als Grundlage für eine erste Übung habe ich das Beispiel aus dem Sun-Tutorial gewählt. Dabei geht es um um EJB. Die Übung besteht darin, einen Converter zum Wechseln von dollar in Yen in Form einer EjB bereitzustellen. ( nachzulesen http://java.sun.com/javaee/5/docs/tutorial/doc/bnbnc.html)

Ich bin mir noch nicht sicher, ob ich das mit den EJB wirklich richtig verstanden habe darum würde ich gern meine einzelnen Schritte posten in der Hoffnung, dass ein Erfahrener Java EE -Entwickler ein Auge darauf wirft.

Ich arbeite mit NetBeans. Dort habe ich ein neues Projekt erstellt. Für das Project habe ich eine Enterprise Application ausgewählt und es den Namen Converter gegeben. Sofort erstellt Netbeans automatisch vier Module (Converter, Converter-app-client, Converter.ejb , Converter.war).

Als ersten schritt habe ich Converter.ejb ausgewählt und dort ein neues package im source-code-Bereich angelegt namens ejb.

In diesem Package habe ich dann ein Interface entworfen, welches wie folgt aussieht und den Namen ConverterInterface trägt,
Code:
package ejb;

import java.math.BigDecimal;
import javax.ejb.Remote;

/**
 *
 * @author 
 */
@Remote
public interface ConverterInterface {
    public BigDecimal dollarToYen(BigDecimal dollars);
    public BigDecimal yenToEuro(BigDecimal yen);
}
Ich habe das Interface mit @Remote vermerkt, damit entfernte clients darauf später Zugriff haben.
Des weiteren habe ich im gleichen Package eine Bean erstellt welche die abstrakten methoden des Interfaces implementiert. Die Bean trägt den Namen ConverterBean und ist mit @Stateless vermerkt
Code:
package ejb;

import java.math.BigDecimal;
import javax.ejb.Stateless;

/**
 *
 * @author 
 */
@Stateless
public class ConverterBean implements ConverterInterface {

    private BigDecimal yenRate = new BigDecimal("115.3100");
    private BigDecimal euroRate = new BigDecimal("0.0071");

    public BigDecimal dollarToYen(BigDecimal dollars) {
        BigDecimal result = dollars.multiply(yenRate);
        return result.setScale(2, BigDecimal.ROUND_UP);
    }

    public BigDecimal yenToEuro(BigDecimal yen) {
        BigDecimal result = yen.multiply(euroRate);
        return result.setScale(2, BigDecimal.ROUND_UP);
    }
    
    // Add business logic below. (Right-click in editor and choose
    // "Insert Code > Add Business Method" or "Web Service > Add Operation")
 
}
Ich bin der Anleitung weiter gefolgt und habe im Termnal den Pfad /User/Username/NetBeansProjects/Converter/Converter-ejb aufgesucht.
Dort habe ich den Befehl "ant" benutzt, um das package der EJB und den Submodulen bereitzustelen.

Als nächstes, habe ich im submodul Converter-app-client einen Client names ConverterClient erstellen wollen. dazu habe ich die Klasse im src package so erstellt , wie es in der sun-dokumentation angegebe war
Code:
package converter;

import ejb.*;
import java.math.BigDecimal;
import javax.ejb.EJB;


/**
 *
 * @author 
 */
public class ConverterClient {

@EJB
private static ConverterInterface converter;
public ConverterClient(String[] args) {
}
public static void main(String[] args) {
ConverterClient client = new ConverterClient(args);
client.doConversion();
}
public void doConversion() {
try {
BigDecimal param = new BigDecimal("100.00");
BigDecimal yenAmount = converter.dollarToYen(param);



System.out.println("$" + param + " is " + yenAmount
+ " Yen.");
BigDecimal euroAmount = converter.yenToEuro(yenAmount);
System.out.println(yenAmount + " Yen is " + euroAmount
+ " Euro.");
System.exit(0);
} catch (Exception ex) {
System.err.println("Caught an unexpected exception!");
ex.printStackTrace();
}
}
}

Nun sollte eigentlich alles funktionieren nur leider tut es das nicht. Wenn ich die main-methode im Converter-app-client starte, bekomme ich eine nullpointerexception genau dort wo die methode
Code:
BigDecimal yenAmount = converter.dollarToYen(param);
aufgerufen wird. Ich vermute, ich habe irgendwo einen fehler gemacht beim referenzieren. Der ConverterClient kann vermutlich nicht auf das business-Interface zugreifen. Kann mir vielleicht jemand Hilfe geben? Danke!
 
Zurück