2010-12-06 163 views
1

我正在使用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)的豆?

回答

0

這個工作的一個很好的例子可以found here包裝你的客戶提供與GlassFish的應用程序客戶端容器使用(通過「appclient」命令)所示,如包裝它作爲一個獨立的Java應用程序。

+0

我不認爲它真的解釋瞭如何執行appclient ... – Thufir 2014-10-12 02:28:59

相關問題