我正在使用GlassFish Tools Bundle for Eclipse。應用程序客戶端EJB Eclipse Glassfish
我需要創建一個bean和一個測試它的客戶端。 bean(及其接口)如下。
package mykPK;
import java.math.BigDecimal;
import javax.ejb.*;
@Stateless
public class ConverterBean implements Converter {
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);
}
}
接口:
package mykPK;
import java.math.BigDecimal;
import javax.ejb.Remote;
@Remote
public interface Converter {
public BigDecimal dollarToYen(BigDecimal dollars);
public BigDecimal yenToEuro(BigDecimal yen);
}
我正確地創建他們在一個EJB項目並運行它們 「作爲服務器」。似乎都開始正確。
現在我想創建一個客戶端。 我試圖將客戶端放在同一個項目中,創建一個不同的項目(「應用程序客戶端項目」),甚至創建一個更通用的「E應用程序項目」和兩個子項目。結果是一樣的。現在
,客戶端代碼如下
import java.math.BigDecimal;
import javax.ejb.EJB;
import mykPK.Converter; /*of course to to that, i reference in the client project the
EJB project*/
public class ConverterClient {
@EJB private static Converter 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();
}
}
}
當我運行這個文件,我總是得到相同的:
Caught an unexpected exception!
java.lang.NullPointerException
at ConverterClient.doConversion(ConverterClient.java:17)
at ConverterClient.main(ConverterClient.java:12)
我想這是東陽我的客戶是不是在同一個bean的容器,它不是「部署」(我只是運行該文件)。但是,當我嘗試更一般的「企業應用程序項目」的結果是相同的)
那麼,在哪裏把客戶端,並給他的訪問(與@EJB
)的豆?
我不認爲它真的解釋瞭如何執行appclient ... – Thufir 2014-10-12 02:28:59